setwd("G:/Mi unidad/Agrosavia/SOCODEVI/Informe final")
sensorial <- read.table("senso.csv", header=T, sep=";")
sensorial$Vereda<-as.factor(sensorial$Vereda)
attach(sensorial)
# Packages
library(vegan)
## Warning: package 'vegan' was built under R version 4.4.3
## Cargando paquete requerido: permute
## Warning: package 'permute' was built under R version 4.4.3
## Cargando paquete requerido: lattice
library(ggplot2)
library(concaveman)
## Warning: package 'concaveman' was built under R version 4.4.3
library(ggforce)
## Warning: package 'ggforce' was built under R version 4.4.3
# Generando la matriz general de perfil sensorial - extrayendo columnas con la información de sabor
sens = sensorial[,4:ncol(sensorial)]
# Convirtiendo las columnas extraidas en una matriz
m_sens=as.matrix(sens)
# Obteniendo las distancias Bray-Curtis de la matriz
set.seed(123)
nmds = metaMDS(m_sens, distance = "bray")
## Run 0 stress 0.04670144 
## Run 1 stress 0.06446481 
## Run 2 stress 0.06446472 
## Run 3 stress 0.04670143 
## ... New best solution
## ... Procrustes: rmse 8.259902e-05  max resid 0.000233247 
## ... Similar to previous best
## Run 4 stress 0.04670149 
## ... Procrustes: rmse 6.741703e-05  max resid 0.0001896569 
## ... Similar to previous best
## Run 5 stress 0.04389918 
## ... New best solution
## ... Procrustes: rmse 0.05534243  max resid 0.1312288 
## Run 6 stress 0.04389919 
## ... Procrustes: rmse 4.054449e-05  max resid 6.058739e-05 
## ... Similar to previous best
## Run 7 stress 0.04670143 
## Run 8 stress 0.04389909 
## ... New best solution
## ... Procrustes: rmse 0.0002490384  max resid 0.000451389 
## ... Similar to previous best
## Run 9 stress 0.06446471 
## Run 10 stress 0.0644647 
## Run 11 stress 0.04670145 
## Run 12 stress 0.04670143 
## Run 13 stress 0.06446477 
## Run 14 stress 0.3071451 
## Run 15 stress 0.2937874 
## Run 16 stress 0.06446472 
## Run 17 stress 0.04389921 
## ... Procrustes: rmse 0.0002275235  max resid 0.0004090331 
## ... Similar to previous best
## Run 18 stress 0.04670147 
## Run 19 stress 0.04670145 
## Run 20 stress 0.04389919 
## ... Procrustes: rmse 0.0002429038  max resid 0.0004401424 
## ... Similar to previous best
## *** Best solution repeated 3 times
nmds
## 
## Call:
## metaMDS(comm = m_sens, distance = "bray") 
## 
## global Multidimensional Scaling using monoMDS
## 
## Data:     m_sens 
## Distance: bray 
## 
## Dimensions: 2 
## Stress:     0.04389909 
## Stress type 1, weak ties
## Best solution was repeated 3 times in 20 tries
## The best solution was from try 8 (random start)
## Scaling: centring, PC rotation, halfchange scaling 
## Species: expanded scores based on 'm_sens'
# Generando el gráfico Non-Metric multidimensional scaling
plot(nmds)

# extrayendo los puntajes NMDS (coordenadas x and y)
data.scores = as.data.frame(scores(nmds))
# adicionando columnas al data frame 
data.scores$Vereda = sensorial$Vereda
head(data.scores)
##   sites.NMDS1 sites.NMDS2 species.NMDS1 species.NMDS2      Vereda
## 1 -0.07274958 -0.03993710    0.11549862   0.009949239   Caño Baul
## 2 -0.10384857 -0.08367856    0.14308485   0.014095816   Caño Baul
## 3 -0.15249141 -0.11021291    0.07435605  -0.008475395   Caño Baul
## 4  0.02373042 -0.03095687   -0.07442190   0.030805700   Caño Baul
## 5 -0.02466335  0.10800730   -0.16444339  -0.025591914 Mataredonda
## 6 -0.18570148  0.01671731   -0.04304244  -0.045680196 Mataredonda
# Creando escala de color para graficar
cbp1 <- c("#999999", "#E69F00", "#56B4E9", "#009E73","#F0E442", "#0072B2", "#D55E00", "#CC79A7")
# Gráfica del análisis
xx = ggplot(data.scores, aes(x = sites.NMDS1, y = sites.NMDS2)) + 
  geom_point(size = 4, aes(shape = Vereda)) + 
  geom_mark_hull(concavity = 5,expand=0,radius=0,aes(fill=Vereda))+
  theme(axis.text.y = element_text(colour = "black", size = 12, face = "bold"), 
        axis.text.x = element_text(colour = "black", face = "bold", size = 12), 
        legend.text = element_text(size = 12, face ="bold", colour ="black"), 
        legend.position = "right", axis.title.y = element_text(face = "bold", size = 14), 
        axis.title.x = element_text(face = "bold", size = 14, colour = "black"), 
        legend.title = element_text(size = 14, colour = "black", face = "bold"), 
        panel.background = element_blank(), panel.border = element_rect(colour = "black", fill = NA, size = 1.2),
        legend.key=element_blank()) + 
  labs(x = "NMDS1", y = "NMDS2", shape ="Vereda", fill="Vereda")  + 
  scale_colour_manual(values = cbp1)
## Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
xx + scale_fill_discrete(name ="Vereda") + scale_shape_discrete(name="Vereda")+
  geom_text(x=0.275, y=-0.07, label="Stress = 0.04") + xlim(-0.3, 0.4) 

## Probando si el perfil del sabor es estadísticamente distinto basado en los niveles de Vereda
# Análisis de similaridad identificando las diferencias en el perfil de sabor para Vereda
anoVereda <- anosim(m_sens, Vereda, distance = "bray", permutations = 9999)
anoVereda
## 
## Call:
## anosim(x = m_sens, grouping = Vereda, permutations = 9999, distance = "bray") 
## Dissimilarity: bray 
## 
## ANOSIM statistic R: 0.3056 
##       Significance: 0.0363 
## 
## Permutation: free
## Number of permutations: 9999
# PostHoc análisis de las diferencias cuantitativas del perfil de sabor entre los niveles de Vereda
library(pairwiseAdonis)
## Cargando paquete requerido: cluster
pairwise.adonis2(m_sens ~ Vereda, data = sensorial)
## $parent_call
## [1] "m_sens ~ Vereda , strata = Null , permutations 999"
## 
## $`Caño Baul_vs_Mataredonda`
##          Df SumOfSqs      R2      F Pr(>F)
## Model     1 0.015581 0.20601 1.5568  0.249
## Residual  6 0.060051 0.79399              
## Total     7 0.075632 1.00000              
## 
## $`Caño Baul_vs_Mira Valle`
##          Df SumOfSqs      R2      F Pr(>F)  
## Model     1 0.036926 0.48305 5.6065  0.056 .
## Residual  6 0.039517 0.51695                
## Total     7 0.076443 1.00000                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## $`Mataredonda_vs_Mira Valle`
##          Df SumOfSqs      R2      F Pr(>F)
## Model     1 0.030657 0.29605 2.5233  0.157
## Residual  6 0.072898 0.70395              
## Total     7 0.103556 1.00000              
## 
## attr(,"class")
## [1] "pwadstrata" "list"
## Análisis de sabor indicador: este análisis permite identificar el sabor que es encontrado más a menudo 
## Se comparan los niveles de Vereda
library(indicspecies)
## Warning: package 'indicspecies' was built under R version 4.4.3
## Análisis de sabor indicador
invgen <- multipatt(m_sens, Vereda, func = "r.g", control = how(nperm=9999), duleg = T)
summary(invgen, alpha = 1)
## 
##  Multilevel pattern analysis
##  ---------------------------
## 
##  Association function: r.g
##  Significance level (alpha): 1
## 
##  Total number of species: 12
##  Selected number of species: 12 
##  Number of species associated to 1 group: 12 
##  Number of species associated to 2 groups: 0 
## 
##  List of species associated to each combination: 
## 
##  Group Caño Baul  #sps.  6 
##          stat p.value  
## Madera  0.760  0.0257 *
## Frutal  0.625  0.0893 .
## Floral  0.568  0.1576  
## Vegetal 0.490  0.3343  
## Dulce   0.369  0.5944  
## Ácido   0.263  0.8549  
## 
##  Group Mataredonda  #sps.  4 
##               stat p.value  
## Lácteo       0.700   0.066 .
## Especiado    0.632   0.264  
## Frutos.secos 0.378   0.652  
## Cacao        0.300   0.627  
## 
##  Group Mira Valle  #sps.  2 
##              stat p.value
## Astringente 0.547   0.206
## Amargo      0.309   0.698
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1