ANOVAS PRACTICA

#Introducimos nuestros datos
dieta1<-c(198,211,240,189,178)
dieta2<-c(214,200,259,194,188)
dieta3<-c(174,176,213,201,158)
#Agrupamos las dietas a un solo vector
dietas<- c(dieta1,dieta2,dieta3)
dietas
##  [1] 198 211 240 189 178 214 200 259 194 188 174 176 213 201 158
#Distribuimos los valores, segun los tratamientos
trats <- gl(3,5,label=c("dieta1","dieta2","dieta3")) #3 tratamientos, 5 valores que corresponden a la variabnle del "peso" de la dieta.
length(trats)==length(dietas) #verificamos que tanto los facores como variables dependientes sean del mismo tama??o.
## [1] TRUE
is.factor(trats) #Confirmamos si tratamientos es un factor
## [1] TRUE
#Deben ser evaluados a traves de los residuos
reg<-lm(dietas~trats) #permite obtener el modelo de regresión lineal
residuos<-residuals(reg) #Estima los residuos

#Normalidad
shapiro.test(residuos) 
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos
## W = 0.90598, p-value = 0.1175
## Bartlett Test de Homogeneidad de Varianzas
bartlett.test(dietas~trats)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  dietas by trats
## Bartlett's K-squared = 0.24597, df = 2, p-value = 0.8843
# Figner-Killeen Test of Homogeneity of Variances, para datos no paramétricos
fligner.test(dietas~trats)
## 
##  Fligner-Killeen test of homogeneity of variances
## 
## data:  dietas by trats
## Fligner-Killeen:med chi-squared = 0.0027684, df = 2, p-value = 0.9986
## Levene Test de Homogeneidad de Varianzas
library(car)
## Loading required package: carData
leveneTest(dietas~trats)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  2  0.0128 0.9873
##       12
#cochran.test
library (outliers)
cochran.test(dietas~trats)
## 
##  Cochran test for outlying variance
## 
## data:  dietas ~ trats
## C = 0.4336, df = 5, k = 3, p-value = 0.8443
## alternative hypothesis: Group dieta2 has outlying variance
## sample estimates:
## dieta1 dieta2 dieta3 
##  569.7  813.0  492.3

Anova no parametrico

kruskal.test(dietas~trats)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  dietas by trats
## Kruskal-Wallis chi-squared = 2.34, df = 2, p-value = 0.3104
data(InsectSprays)
attach(InsectSprays)
str(InsectSprays) #Permite ver las características de las variables
## 'data.frame':    72 obs. of  2 variables:
##  $ count: num  10 7 20 14 14 12 10 23 17 20 ...
##  $ spray: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 1 1 1 1 1 ...
tapply(count, spray, mean) #Permite ver la media de los factores (Tratamientos)
##         A         B         C         D         E         F 
## 14.500000 15.333333  2.083333  4.916667  3.500000 16.666667
tapply(count, spray, sd) #Permite ver la desviación estándar de los factores.
##        A        B        C        D        E        F 
## 4.719399 4.271115 1.975225 2.503028 1.732051 6.213378
tapply(count, spray, length) #Permite ver la cantidad de datos.
##  A  B  C  D  E  F 
## 12 12 12 12 12 12
andeva2<-aov(count~spray, data=InsectSprays)
summary(andeva2)#no normales 
##             Df Sum Sq Mean Sq F value Pr(>F)    
## spray        5   2669   533.8    34.7 <2e-16 ***
## Residuals   66   1015    15.4                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
shapiro.test(residuals(andeva2))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(andeva2)
## W = 0.96006, p-value = 0.02226
#Homogeneidad de varianzas
library(car)
leveneTest(andeva2)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value   Pr(>F)   
## group  5  3.8214 0.004223 **
##       66                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
kruskal.test(count~spray, data=InsectSprays)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  count by spray
## Kruskal-Wallis chi-squared = 54.691, df = 5, p-value = 1.511e-10
#Post-hoc (No paramétricas)

#LSD test (Least Significant Difference) (Comparación Planeada)
pairwise.wilcox.test(count,spray, p.adj = "none", exact=F)
## 
##  Pairwise comparisons using Wilcoxon rank sum test with continuity correction 
## 
## data:  count and spray 
## 
##   A       B       C       D       E      
## B 0.5812  -       -       -       -      
## C 3.8e-05 3.8e-05 -       -       -      
## D 7.8e-05 6.9e-05 0.0027  -       -      
## E 3.4e-05 3.4e-05 0.0526  0.1744  -      
## F 0.4342  0.9078  3.4e-05 7.0e-05 3.4e-05
## 
## P value adjustment method: none
#Bonferroni (recomendado para tamaño de muestras iguales, medias entre trat. diferentes)
pairwise.wilcox.test(count,spray, p.adj = "bonf",exact=F)
## 
##  Pairwise comparisons using Wilcoxon rank sum test with continuity correction 
## 
## data:  count and spray 
## 
##   A       B       C       D       E      
## B 1.00000 -       -       -       -      
## C 0.00058 0.00058 -       -       -      
## D 0.00117 0.00104 0.03977 -       -      
## E 0.00051 0.00051 0.78860 1.00000 -      
## F 1.00000 1.00000 0.00052 0.00105 0.00052
## 
## P value adjustment method: bonferroni
ta <- c(40, 48, 54, 42, 55, 38, 42, 49, 41, 50)
tb <- c(22, 24, 23, 29, 29, 27, 27, 29, 33, 30)
tc <- c(24, 23, 24, 36, 27, 22, 31, 33, 34, 29)
tctl <- c(39, 34, 39, 40, 38, 36, 36, 40, 39, 37)
crecimiento <- c(ta,tb,tc,tctl) #permite agrupar el crecimiento en un solo vector
crecimiento
##  [1] 40 48 54 42 55 38 42 49 41 50 22 24 23 29 29 27 27 29 33 30 24 23 24 36 27
## [26] 22 31 33 34 29 39 34 39 40 38 36 36 40 39 37
trats <- gl(4,10,label=c("ta","tb","tc", "tctl")) #asocia los valores de crecimiento al los tratamientos
length(trats)==length(crecimiento) #confirmamos que tanto las variables independientes como los factores tengan la misma longitud, en caso no de tener la misma longitud, tendremos que utilizar NA, para el valor faltante.
## [1] TRUE
is.factor(trats) #Confirmamos que el vector es factor
## [1] TRUE
#Ejecutamos el ANOVA
anova3 <- aov(crecimiento~trats)
#Resumen
summary(anova3)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## trats        3 2307.1   769.0   39.51 1.76e-11 ***
## Residuals   36  700.7    19.5                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Pueba Post Hoc test
TukeyHSD(anova3)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = crecimiento ~ trats)
## 
## $trats
##          diff       lwr       upr     p adj
## tb-ta   -18.6 -23.91377 -13.28623 0.0000000
## tc-ta   -17.6 -22.91377 -12.28623 0.0000000
## tctl-ta  -8.1 -13.41377  -2.78623 0.0012165
## tc-tb     1.0  -4.31377   6.31377 0.9569349
## tctl-tb  10.5   5.18623  15.81377 0.0000322
## tctl-tc   9.5   4.18623  14.81377 0.0001498

ANOVA FACTORIAL

data(ToothGrowth)
str(ToothGrowth) #Tenemos dos variables numericas y un factor
## 'data.frame':    60 obs. of  3 variables:
##  $ len : num  4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
##  $ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
##  $ dose: num  0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...
head(ToothGrowth)
##    len supp dose
## 1  4.2   VC  0.5
## 2 11.5   VC  0.5
## 3  7.3   VC  0.5
## 4  5.8   VC  0.5
## 5  6.4   VC  0.5
## 6 10.0   VC  0.5
andeva3<-aov(len ~ supp + dose, data=ToothGrowth)
summary(andeva3)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## supp         1  205.4   205.4   11.45   0.0013 ** 
## dose         1 2224.3  2224.3  123.99 6.31e-16 ***
## Residuals   57 1022.6    17.9                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
andeva4<-aov(len ~ supp * dose, data=ToothGrowth) #Observar que se utiliza el "*", para encontrar la interaccion entre "supp"" y "dose".
summary(andeva4)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## supp         1  205.4   205.4  12.317 0.000894 ***
## dose         1 2224.3  2224.3 133.415  < 2e-16 ***
## supp:dose    1   88.9    88.9   5.333 0.024631 *  
## Residuals   56  933.6    16.7                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
etchrate <- read.table("https://raw.githubusercontent.com/osoramirez/bases_datos/master/etchrate.csv", sep="", header=TRUE)
etchrate
##     RF run rate
## 1  160   1  575
## 2  160   2  542
## 3  160   3  530
## 4  160   4  539
## 5  160   5  570
## 6  180   1  565
## 7  180   2  593
## 8  180   3  590
## 9  180   4  579
## 10 180   5  610
## 11 200   1  600
## 12 200   2  651
## 13 200   3  610
## 14 200   4  637
## 15 200   5  629
## 16 220   1  725
## 17 220   2  700
## 18 220   3  715
## 19 220   4  685
## 20 220   5  710
head(etchrate)#muestra el encabezado
##    RF run rate
## 1 160   1  575
## 2 160   2  542
## 3 160   3  530
## 4 160   4  539
## 5 160   5  570
## 6 180   1  565
str(etchrate) #observamos la caracteristica de cada variable. Note que no hay variables categóricas o factores
## 'data.frame':    20 obs. of  3 variables:
##  $ RF  : int  160 160 160 160 160 180 180 180 180 180 ...
##  $ run : int  1 2 3 4 5 1 2 3 4 5 ...
##  $ rate: int  575 542 530 539 570 565 593 590 579 610 ...
attach(etchrate)
grp.means<-tapply(rate,RF,mean)
grp.means
##   160   180   200   220 
## 551.2 587.4 625.4 707.0
grp.sd<-tapply(rate,RF,sd)
grp.sd
##      160      180      200      220 
## 20.01749 16.74216 20.52559 15.24795
grp.var<-tapply(rate,RF,var)
grp.var
##   160   180   200   220 
## 400.7 280.3 421.3 232.5
# Convertimos cada variable a factor
etchrate$RF <- as.factor(etchrate$RF)
etchrate$run <- as.factor(etchrate$run)
str(etchrate) #Note que ahora nuestras variables de "RF" y "run" son factores
## 'data.frame':    20 obs. of  3 variables:
##  $ RF  : Factor w/ 4 levels "160","180","200",..: 1 1 1 1 1 2 2 2 2 2 ...
##  $ run : Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 1 2 3 4 5 ...
##  $ rate: int  575 542 530 539 570 565 593 590 579 610 ...
#  Corremos modelo del anova
etch.rate.aov <- aov(rate~RF,data=etchrate)
summary(etch.rate.aov)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## RF           3  66871   22290    66.8 2.88e-09 ***
## Residuals   16   5339     334                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Exploramos visualmente
boxplot(rate~RF, col=456,xlab="RF Power (W)", ylab=expression(paste("Observed Etch Rate (",ring(A),"/min)")))

# Media global
(erate.mean <- mean(etchrate$rate))
## [1] 617.75
# desviación estándar global
(erate.sd <- sd(etchrate$rate))
## [1] 61.6483
#Diseño unifactorial de multiples niveles

bacterias<-read.table("https://wpd.ugr.es/~bioestad/wp-content/uploads/supuesto2.txt", header = TRUE)
bacterias
##    Calidad Fabricante
## 1      120          1
## 2      240          2
## 3      240          3
## 4      300          4
## 5      300          5
## 6      240          1
## 7      360          2
## 8      270          3
## 9      240          4
## 10     360          5
## 11     300          1
## 12     180          2
## 13     300          3
## 14     300          4
## 15     240          5
## 16     360          1
## 17     180          2
## 18     360          3
## 19     360          4
## 20     360          5
## 21     240          1
## 22     300          2
## 23     360          3
## 24     360          4
## 25     360          5
## 26     180          1
## 27     240          2
## 28     300          3
## 29     360          4
## 30     360          5
## 31     144          1
## 32     360          2
## 33     360          3
## 34     360          4
## 35     360          5
## 36     300          1
## 37     360          2
## 38     360          3
## 39     360          4
## 40     300          5
## 41     240          1
## 42     360          2
## 43     300          3
## 44     300          4
## 45     360          5
#Debemos transformar la variable referente a los niveles del factor fijo como factor para poder hacer los cálculos de forma adecuada

bacterias$Fabricante<- factor(bacterias$Fabricante)
bacterias$Fabricante
##  [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3
## [39] 4 5 1 2 3 4 5
## Levels: 1 2 3 4 5
#Para calcular la tabla ANOVA primero hacemos uso de la función “aov” de la siguiente forma:

mod <- aov(Calidad ~ Fabricante, data = bacterias)

summary(mod)   # TABLA ANOVA
##             Df Sum Sq Mean Sq F value  Pr(>F)   
## Fabricante   4  57363   14341   3.976 0.00827 **
## Residuals   40 144272    3607                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Varianza dentro de los factores (Varianza residual) #3607
#Varianza entre los factores # = 1192.667
#Varianza Total= 3607+1192.667=4799.667


## Diseño en Bloques Completos Aleatorizados
abetos <- read.table("https://wpd.ugr.es/~bioestad/wp-content/uploads/supuesto3.txt", header=TRUE)
abetos
##     y Tratamiento Abeto
## 1   7           1     1
## 2   9           2     1
## 3  10           3     1
## 4   8           1     2
## 5   9           2     2
## 6  10           3     2
## 7   9           1     3
## 8   9           2     3
## 9  12           3     3
## 10 10           1     4
## 11  9           2     4
## 12 12           3     4
## 13 11           1     5
## 14 12           2     5
## 15 14           3     5
## 16  8           1     6
## 17 10           2     6
## 18  9           3     6
## 19  7           1     7
## 20  8           2     7
## 21  7           3     7
## 22  8           1     8
## 23  8           2     8
## 24  7           3     8
## 25  7           1     9
## 26  9           2     9
## 27 10           3     9
## 28  8           1    10
## 29  9           2    10
## 30 10           3    10
#al no ser directamente motivo de estudio, los abetos es un factor secundario que recibe el nombre de bloque.
#Variable respuesta: Número de semillas
#Factor: Tratamiento que tiene tres niveles. Es un factor de efectos fijos ya que viene decidido qué niveles concretos se van a utilizar.
#Bloque: Abeto que tiene diez niveles. Es un factor de efectos fijos ya que viene decidido qué niveles concretos se van a utilizar.
#Modelo completo: Los tres tratamientos se prueban en cada bloque exactamente una vez.
#Tamaño del experimento: Número total de observaciones (30).
# las observaciones en una sola columna y a continuación especificado su tratamiento y su bloque correspondiente.

abetos$Tratamiento = factor(abetos$Tratamiento)
abetos$Tratamiento
##  [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
## Levels: 1 2 3
abetos$Abeto = factor(abetos$Abeto)
abetos$Abeto
##  [1] 1  1  1  2  2  2  3  3  3  4  4  4  5  5  5  6  6  6  7  7  7  8  8  8  9 
## [26] 9  9  10 10 10
## Levels: 1 2 3 4 5 6 7 8 9 10
mod = aov(y ~ Tratamiento + Abeto, data = abetos)
summary(mod) # TABLA ANOVA
##             Df Sum Sq Mean Sq F value  Pr(>F)    
## Tratamiento  2   16.2   8.100   9.228 0.00174 ** 
## Abeto        9   54.8   6.089   6.937 0.00026 ***
## Residuals   18   15.8   0.878                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# La eficacia de este diseño depende de los efectos de los bloques, Un valor grande de F de los bloques (6.937) implica que el factor bloque tiene un efecto grande
#¿Cómo saber cuándo se puede prescindir de los bloques?
#La respuesta la tenemos en el valor de la F experimental de los bloques, 
#se ha comprobado que si dicho valor es mayor que 3, no conviene prescindir de los bloques para efectuar los contrastes.
#La interacción entre el factor bloque y los tratamientos vamos a estudiarla analíticamente mediante el Test de Interacción de un grado de Tukey


#Aditividad entre los bloques y tratamientos
library(daewr)
## Registered S3 method overwritten by 'DoE.base':
##   method           from       
##   factorize.factor conf.design

Tukey1df(abetos)
## Source           df     SS        MS        F     Pr>F 
## A                 2   16.2    8.1 
## B                 9   54.8    6.0889 
## Error            18   15.8    71.1 
## NonAdditivity     1   3.5573    3.5573    4.94    0.0401 
## Residual         17   12.2427    0.7202
#Puesto que el p-valor (Pr > F) es 1 no rechazamos la hipótesis nula de no interacción, 
#es decir, no hay interacción entre los tratamientos aplicados y los abetos


#Normalidad

shapiro.test(mod$residuals) #0.3935 normales
## 
##  Shapiro-Wilk normality test
## 
## data:  mod$residuals
## W = 0.96415, p-value = 0.3935
qqnorm(mod$residuals)

#Homogeneidad de Varianzas
bartlett.test(abetos$y, abetos$Tratamiento)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  abetos$y and abetos$Tratamiento
## Bartlett's K-squared = 4.1729, df = 2, p-value = 0.1241
bartlett.test(abetos$y, abetos$Abeto)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  abetos$y and abetos$Abeto
## Bartlett's K-squared = 4.0723, df = 9, p-value = 0.9066
#Independencia

layout(matrix(c(1,2,3,4),2,2))
plot(mod)

#Post hoc 
library(agricolae)
duncan=duncan.test(mod, "Tratamiento", group = T)
duncan
## $statistics
##     MSerror Df Mean       CV
##   0.8777778 18  9.2 10.18367
## 
## $parameters
##     test      name.t ntr alpha
##   Duncan Tratamiento   3  0.05
## 
## $duncan
##      Table CriticalRange
## 2 2.971152     0.8802727
## 3 3.117384     0.9235973
## 
## $means
##      y      std  r Min Max  Q25 Q50   Q75
## 1  8.3 1.337494 10   7  11 7.25   8  8.75
## 2  9.2 1.135292 10   8  12 9.00   9  9.00
## 3 10.1 2.183270 10   7  14 9.25  10 11.50
## 
## $comparison
## NULL
## 
## $groups
##      y groups
## 3 10.1      a
## 2  9.2      b
## 1  8.3      c
## 
## attr(,"class")
## [1] "group"
#En el apartado “$groups” concluimos que los tres tratamientos difieren significativamente entre sí.

#Se observa que la concentración media del número de semillas es mayor con el Tratamiento3 (10.1) y menor con el Tratamiento1 (8.3).

duncan=duncan.test(mod, "Abeto", group = T)
duncan
## $statistics
##     MSerror Df Mean       CV
##   0.8777778 18  9.2 10.18367
## 
## $parameters
##     test name.t ntr alpha
##   Duncan  Abeto  10  0.05
## 
## $duncan
##       Table CriticalRange
## 2  2.971152      1.607151
## 3  3.117384      1.686250
## 4  3.209655      1.736161
## 5  3.273593      1.770746
## 6  3.320327      1.796026
## 7  3.355651      1.815133
## 8  3.382941      1.829895
## 9  3.404326      1.841462
## 10 3.421226      1.850604
## 
## $means
##            y       std r Min Max  Q25 Q50  Q75
## 1   8.666667 1.5275252 3   7  10  8.0   9  9.5
## 10  9.000000 1.0000000 3   8  10  8.5   9  9.5
## 2   9.000000 1.0000000 3   8  10  8.5   9  9.5
## 3  10.000000 1.7320508 3   9  12  9.0   9 10.5
## 4  10.333333 1.5275252 3   9  12  9.5  10 11.0
## 5  12.333333 1.5275252 3  11  14 11.5  12 13.0
## 6   9.000000 1.0000000 3   8  10  8.5   9  9.5
## 7   7.333333 0.5773503 3   7   8  7.0   7  7.5
## 8   7.666667 0.5773503 3   7   8  7.5   8  8.0
## 9   8.666667 1.5275252 3   7  10  8.0   9  9.5
## 
## $comparison
## NULL
## 
## $groups
##            y groups
## 5  12.333333      a
## 4  10.333333      b
## 3  10.000000      b
## 10  9.000000     bc
## 2   9.000000     bc
## 6   9.000000     bc
## 1   8.666667     bc
## 9   8.666667     bc
## 8   7.666667      c
## 7   7.333333      c
## 
## attr(,"class")
## [1] "group"
## Diseño en Cuadrados Latinos

#Hemos estudiado en el apartado anterior que los diseños en bloques completos aleatorizados 
#utilizan un factor de control o variable de bloque con objeto de eliminar su influencia en 
#la variable respuesta y así reducir el error experimental. Los diseños en cuadrados latinos
#utilizan dos variables de bloque para reducir el error experimental.

#Características:

#Se controlan tres fuentes de variabilidad, un factor principal y dos factores de bloque.
#Cada uno de los factores tiene el mismo número de niveles, K .
#Cada nivel del factor principal aparece una vez en cada fila y una vez en cada columna.
#No hay interacción entre los factores.

#Variable respuesta: Rendimiento
#Factor: Tiempo de reposo que tiene seis niveles. Es un factor de efectos fijos ya que viene decidido que niveles concretos se van a utilizar.
#Bloques: Lotes y Concentraciones, ambos con seis niveles y ambos son factores de efectos fijos.
#Tamaño del experimento: Número total de observaciones (36).

latino <- read.table("https://wpd.ugr.es/~bioestad/wp-content/uploads/supuesto5.txt", header = TRUE)
latino
##    Observaciones  Lote Concentraciones Tiempo_de_reposo
## 1             12 Lote1               1                A
## 2             24 Lote1               2                B
## 3             10 Lote1               3                C
## 4             18 Lote1               4                D
## 5             21 Lote1               5                E
## 6             18 Lote1               6                F
## 7             21 Lote2               1                B
## 8             26 Lote2               2                C
## 9             24 Lote2               3                D
## 10            16 Lote2               4                E
## 11            20 Lote2               5                F
## 12            21 Lote2               6                A
## 13            20 Lote3               1                C
## 14            16 Lote3               2                D
## 15            19 Lote3               3                E
## 16            18 Lote3               4                F
## 17            16 Lote3               5                A
## 18            19 Lote3               6                B
## 19            22 Lote4               1                D
## 20            15 Lote4               2                E
## 21            14 Lote4               3                F
## 22            19 Lote4               4                A
## 23            27 Lote4               5                B
## 24            17 Lote4               6                C
## 25            15 Lote5               1                E
## 26            13 Lote5               2                F
## 27            17 Lote5               3                A
## 28            25 Lote5               4                B
## 29            21 Lote5               5                C
## 30            22 Lote5               6                D
## 31            17 Lote6               1                F
## 32            11 Lote6               2                A
## 33            12 Lote6               3                B
## 34            22 Lote6               4                C
## 35            14 Lote6               5                D
## 36            20 Lote6               6                E
latino$Lote <- factor(latino$Lote)
latino$Concentraciones <- factor(latino$Concentraciones)
latino$Tiempo_de_reposo <- factor(latino$Tiempo_de_reposo)


mod1<-aov(formula = Observaciones ~ Lote + Concentraciones + Tiempo_de_reposo,
    data = latino)
summary(mod1)
##                  Df Sum Sq Mean Sq F value Pr(>F)
## Lote              5   99.6   19.91   1.149  0.368
## Concentraciones   5   70.6   14.11   0.814  0.553
## Tiempo_de_reposo  5  117.9   23.58   1.361  0.281
## Residuals        20  346.6   17.33
#Observando los valores de los p-valores, 0.281, 0.368 y 0.553; mayores respectivamente que el nivel de significación del 5%, deducimos que ningún efecto es significativo.

## Diseños Factoriales

#considerar dos o más factores y estudiar el efecto conjunto
#que dichos factores producen sobre la variable respuesta.

#Variable respuesta: Tiempo de supervivencia
#Factor: Tipo de veneno que tiene tres niveles. Es un factor de efectos fijos ya que viene decidido qué niveles concretos se van a utilizar.
#Factor: Tipo de antídoto que tiene cuatro niveles. Es un factor de efectos fijos ya que viene decidido qué niveles concretos se van a utilizar.
#Tamaño del experimento: Número total de observaciones (12).

factorial <- read.table("https://wpd.ugr.es/~bioestad/wp-content/uploads/supuesto8.txt", header=TRUE)
factorial
##    Tiempo Veneno Antídoto
## 1     4.5      1        1
## 2     2.9      2        1
## 3     2.1      3        1
## 4    11.0      1        2
## 5     6.1      2        2
## 6     3.7      3        2
## 7     4.5      1        3
## 8     3.5      2        3
## 9     2.5      3        3
## 10    7.1      1        4
## 11   10.2      2        4
## 12    3.6      3        4
factorial$Antídoto<-factor(factorial$Antídoto)
factorial$Veneno<-factor(factorial$Veneno)

mod <- aov(Tiempo~ Veneno + Antídoto , data = factorial )
mod
## Call:
##    aov(formula = Tiempo ~ Veneno + Antídoto, data = factorial)
## 
## Terms:
##                   Veneno Antídoto Residuals
## Sum of Squares  30.58667 39.40917  23.89333
## Deg. of Freedom        2        3         6
## 
## Residual standard error: 1.995551
## Estimated effects may be unbalanced
summary(mod)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## Veneno       2  30.59  15.293   3.840 0.0844 .
## Antídoto     3  39.41  13.136   3.299 0.0995 .
## Residuals    6  23.89   3.982                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#El modelo con replicación

factorial <- read.table("https://wpd.ugr.es/~bioestad/wp-content/uploads/supuesto9.txt", header=TRUE)
factorial
##    Tiempo Veneno Antidoto
## 1     4.5      1        1
## 2     4.3      1        1
## 3     2.9      2        1
## 4     2.3      2        1
## 5     2.1      3        1
## 6     2.3      3        1
## 7    11.0      1        2
## 8     7.2      1        2
## 9     6.1      2        2
## 10   12.4      2        2
## 11    3.7      3        2
## 12    2.9      3        2
## 13    4.5      1        3
## 14    7.6      1        3
## 15    3.5      2        3
## 16    4.0      2        3
## 17    2.5      3        3
## 18    2.2      3        3
## 19    7.1      1        4
## 20    6.2      1        4
## 21   10.2      2        4
## 22    3.8      2        4
## 23    3.6      3        4
## 24    3.3      3        4
factorial$Veneno <- factor(factorial$Veneno)
factorial$Antidoto<-factor(factorial$Antidoto)

mod <- aov(Tiempo~ Veneno * Antidoto , data = factorial )
mod
## Call:
##    aov(formula = Tiempo ~ Veneno * Antidoto, data = factorial)
## 
## Terms:
##                   Veneno Antidoto Veneno:Antidoto Residuals
## Sum of Squares  60.44333 60.26167        20.36333  53.51000
## Deg. of Freedom        2        3               6        12
## 
## Residual standard error: 2.111674
## Estimated effects may be unbalanced
summary(mod)
##                 Df Sum Sq Mean Sq F value Pr(>F)  
## Veneno           2  60.44  30.222   6.777 0.0107 *
## Antidoto         3  60.26  20.087   4.505 0.0245 *
## Veneno:Antidoto  6  20.36   3.394   0.761 0.6138  
## Residuals       12  53.51   4.459                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Por lo tanto la interacción entre ambos factores no es significativa y debemos eliminarla del modelo. 
#Construimos de nuevo la Tabla ANOVA en la que sólo figurarán los efectos principales

mod <- aov(Tiempo~ Veneno + Antidoto , data = factorial )
mod
## Call:
##    aov(formula = Tiempo ~ Veneno + Antidoto, data = factorial)
## 
## Terms:
##                   Veneno Antidoto Residuals
## Sum of Squares  60.44333 60.26167  73.87333
## Deg. of Freedom        2        3        18
## 
## Residual standard error: 2.025851
## Estimated effects may be unbalanced
summary(mod)
##             Df Sum Sq Mean Sq F value Pr(>F)   
## Veneno       2  60.44  30.222   7.364 0.0046 **
## Antidoto     3  60.26  20.087   4.894 0.0117 * 
## Residuals   18  73.87   4.104                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
factorial <- read.table("https://wpd.ugr.es/~bioestad/wp-content/uploads/supuesto10.txt", header = TRUE)
factorial
##    Altura Carbono Presion Velocidad
## 1      10      10      25       200
## 2      11      12      25       200
## 3       2      14      25       200
## 4       3      10      25       250
## 5       2      12      25       250
## 6       4      14      25       250
## 7       5      10      30       200
## 8       5      12      30       200
## 9      -3      14      30       200
## 10     -1      10      30       250
## 11     -3      12      30       250
## 12      1      14      30       250
factorial$Carbono <- factor(factorial$Carbono)
factorial$Velocidad <- factor(factorial$Velocidad)
factorial$Presion <- factor(factorial$Presion)
mod <- aov(Altura~ Carbono + Presion + Velocidad + Carbono*Presion + Carbono*Velocidad + Presion*Velocidad , data = factorial )

#Altura: Nombre de la columna de las observaciones
#Carbono: Nombre de la columna en la que está representado el primer factor
#Presion: Nombre de la columna en la que está representado el segundo factor
#Velocidad: Nombre de la columna en la que está representado el tercer factor
#Carbono*Presion, Carbono*Velocidad y Presion*Velocidad hace referencia a las distintas interacciones.
#data= data.frame en el que están guardados los datos

summary(mod)
##                   Df Sum Sq Mean Sq F value  Pr(>F)   
## Carbono            2  24.50   12.25     147 0.00676 **
## Presion            1  65.33   65.33     784 0.00127 **
## Velocidad          1  48.00   48.00     576 0.00173 **
## Carbono:Presion    2   1.17    0.58       7 0.12500   
## Carbono:Velocidad  2  75.50   37.75     453 0.00220 **
## Presion:Velocidad  1   1.33    1.33      16 0.05719 . 
## Residuals          2   0.17    0.08                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod <- aov(Altura~ Carbono + Presion + Velocidad + Carbono*Velocidad, data = factorial )
summary(mod)
##                   Df Sum Sq Mean Sq F value   Pr(>F)    
## Carbono            2  24.50   12.25   22.97 0.003019 ** 
## Presion            1  65.33   65.33  122.50 0.000105 ***
## Velocidad          1  48.00   48.00   90.00 0.000220 ***
## Carbono:Velocidad  2  75.50   37.75   70.78 0.000215 ***
## Residuals          5   2.67    0.53                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Diseño factorial de tres factores con replicación

factorial <- read.table("https://wpd.ugr.es/~bioestad/wp-content/uploads/supuesto11.txt", header = TRUE)
factorial
##    Altura Carbono Presion Velocidad
## 1      10      10      25       200
## 2      20      10      25       200
## 3      11      12      25       200
## 4       9      12      25       200
## 5       2      14      25       200
## 6      -1      14      25       200
## 7       3      10      25       250
## 8       5      10      25       250
## 9       2      12      25       250
## 10      5      12      25       250
## 11      4      14      25       250
## 12      7      14      25       250
## 13      5      10      30       200
## 14      9      10      30       200
## 15      5      12      30       200
## 16      4      12      30       200
## 17     -3      14      30       200
## 18     -2      14      30       200
## 19     -1      10      30       250
## 20     -3      10      30       250
## 21     -3      12      30       250
## 22      2      12      30       250
## 23      1      14      30       250
## 24      3      14      30       250
factorial$Carbono <- factor(factorial$Carbono)
factorial$Velocidad <- factor(factorial$Velocidad)
factorial$Presion <- factor(factorial$Presion)

mod <- aov(Altura~ Carbono + Presion + Velocidad + Carbono*Presion + Carbono*Velocidad + Presion*Velocidad + Carbono*Velocidad*Presion, data = factorial )


#Altura: Nombre de la columna de las observaciones
#Carbono: Nombre de la columna en la que está representado el primer factor
#Presion: Nombre de la columna en la que está representado el segundo factor
#Velocidad: Nombre de la columna en la que está representado el tercer factor
#Carbono*Presion, Carbono*Velocidad, Presion*Velocidad y Carbono*Velocidad*Presion hace referencia a las distintas interacciones.

summary(mod)
##                           Df Sum Sq Mean Sq F value   Pr(>F)    
## Carbono                    2  88.08   44.04   5.683 0.018350 *  
## Presion                    1 150.00  150.00  19.355 0.000866 ***
## Velocidad                  1  80.67   80.67  10.409 0.007270 ** 
## Carbono:Presion            2  14.25    7.12   0.919 0.425122    
## Carbono:Velocidad          2 230.58  115.29  14.876 0.000564 ***
## Presion:Velocidad          1   1.50    1.50   0.194 0.667799    
## Carbono:Presion:Velocidad  2   1.75    0.88   0.113 0.894175    
## Residuals                 12  93.00    7.75                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod <- aov(Altura~ Carbono + Presion + Velocidad + Carbono*Presion + Carbono*Velocidad + Presion*Velocidad, data = factorial )
summary(mod)
##                   Df Sum Sq Mean Sq F value   Pr(>F)    
## Carbono            2  88.08   44.04   6.507 0.010038 *  
## Presion            1 150.00  150.00  22.164 0.000336 ***
## Velocidad          1  80.67   80.67  11.919 0.003886 ** 
## Carbono:Presion    2  14.25    7.12   1.053 0.375033    
## Carbono:Velocidad  2 230.58  115.29  17.035 0.000178 ***
## Presion:Velocidad  1   1.50    1.50   0.222 0.645047    
## Residuals         14  94.75    6.77                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod <- aov(Altura~ Carbono + Presion + Velocidad +  Carbono*Velocidad, data = factorial )
summary(mod)
##                   Df Sum Sq Mean Sq F value   Pr(>F)    
## Carbono            2  88.08   44.04   6.776 0.006856 ** 
## Presion            1 150.00  150.00  23.077 0.000166 ***
## Velocidad          1  80.67   80.67  12.410 0.002612 ** 
## Carbono:Velocidad  2 230.58  115.29  17.737 6.91e-05 ***
## Residuals         17 110.50    6.50                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Ejercicios

#Se realiza un estudio del contenido de azufre en cinco yacimientos de carbón. 
#Se toman muestras aleatoriamente de cada uno de los yacimientos y se analizan. 
#Los datos del porcentaje de azufre por muestra se indican en la tabla adjunta.

#diseño unifactorial totalmente aleatorizado de efectos fijos no-equilibrado.

porcentaje <- read.table("https://wpd.ugr.es/~bioestad/wp-content/uploads/guiado1-1.txt", header = TRUE)
porcentaje
##    Azufre Yacimiento
## 1     151          1
## 2     192          1
## 3     108          1
## 4     204          1
## 5     214          1
## 6     176          1
## 7     117          1
## 8     169          2
## 9      64          2
## 10     90          2
## 11    141          2
## 12    101          2
## 13    128          2
## 14    159          2
## 15    156          2
## 16    122          3
## 17    132          3
## 18    139          3
## 19    133          3
## 20    154          3
## 21    104          3
## 22    225          3
## 23    149          3
## 24    130          3
## 25     75          4
## 26    126          4
## 27     69          4
## 28     62          4
## 29     90          4
## 30    120          4
## 31     32          4
## 32     73          4
## 33     80          5
## 34     90          5
## 35    124          5
## 36     82          5
## 37     72          5
## 38     57          5
## 39    118          5
## 40     54          5
## 41    130          5
#Variable respuesta: Contenido de Azufre
#Factor: Tipo de yacimiento con cinco niveles. Es un factor de Efectos fijos ya que viene decidido qué niveles concretos se van a utilizar 

porcentaje$Yacimiento<-factor(porcentaje$Yacimiento)
porcentaje$Yacimiento
##  [1] 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5
## [39] 5 5 5
## Levels: 1 2 3 4 5
mod <- aov(Azufre ~ Yacimiento, data = porcentaje)
summary(mod)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## Yacimiento   4  40433   10108   8.534 5.97e-05 ***
## Residuals   36  42640    1184                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#2. Si se rechaza la hipótesis nula que las medias de porcentaje de azufre en los cinco yacimientos es la misma, determinar que medias difieren entre sí utilizando el método de comparaciones múltiples de Tukey.

mod.tukey <- TukeyHSD(mod, ordered = TRUE)
mod.tukey
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
##     factor levels have been ordered
## 
## Fit: aov(formula = Azufre ~ Yacimiento, data = porcentaje)
## 
## $Yacimiento
##          diff        lwr       upr     p adj
## 5-4  8.791667 -39.217257  56.80059 0.9841364
## 2-4 45.125000  -4.275775  94.52577 0.0873389
## 3-4 62.236111  14.227188 110.24503 0.0057086
## 1-4 85.125000  33.990340 136.25966 0.0002709
## 2-5 36.333333 -11.675590  84.34226 0.2131394
## 3-5 53.444444   6.868947 100.01994 0.0177365
## 1-5 76.333333  26.542032 126.12463 0.0008288
## 3-2 17.111111 -30.897812  65.12003 0.8429902
## 1-2 40.000000 -11.134660  91.13466 0.1865081
## 1-3 22.888889 -26.902412  72.68019 0.6809794
#3. Estudiar las hipótesis de modelo: Homocedasticidad (Homogeneidad de las varianzas por grupo), Independencia y Normalidad.

bartlett.test(porcentaje$Azufre, porcentaje$Yacimiento)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  porcentaje$Azufre and porcentaje$Yacimiento
## Bartlett's K-squared = 1.2655, df = 4, p-value = 0.8672
#independencia 

layout(matrix(c(1,2,3,4),2,2))
plot(mod)

shapiro.test(mod$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod$residuals
## W = 0.97902, p-value = 0.6384
# Ejercicio 2 

#Se realiza un estudio sobre el efecto del fotoperiodo y del genotipo en el periodo latente de infección del moho de cebada aislado AB3.
#Se obtienen cincuenta hojas de cuatro genotipos distintos. 
#Cada grupo es infectado y posteriormente expuesto a diferente fotoperiodo. 
#Los distintos fotoperiodos se trataron como bloques y se obtuvieron los siguientes datos de los totales para los bloques y tratamientos. La respuesta anotada es el número de días hasta la aparición de síntomas visibles.

#diseño en bloques completos aleatorizados.

#Factor: Genotipo que tiene cuatro niveles. Es un factor de efectos fijos ya que viene decidido qué niveles concretos se van a utilizar.
#Bloque: Fotoperiodo que tiene cinco niveles. Es un factor de efectos fijos ya que viene decidido qué niveles concretos se van a utilizar.

dias <- read.table("https://wpd.ugr.es/~bioestad/wp-content/uploads/guiado2txt.txt", header = TRUE)
dias
##    Días Fotoperiodo Genotipo
## 1   630           1        1
## 2   640           1        2
## 3   640           1        3
## 4   660           1        4
## 5   610           2        1
## 6   630           2        2
## 7   630           2        3
## 8   660           2        4
## 9   560           3        1
## 10  600           3        2
## 11  650           3        3
## 12  620           3        4
## 13  570           4        1
## 14  620           4        2
## 15  620           4        3
## 16  610           4        4
## 17  590           5        1
## 18  620           5        2
## 19  580           5        3
## 20  630           5        4
dias$Fotoperiodo = factor(dias$Fotoperiodo)
dias$Fotoperiodo
##  [1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5
## Levels: 1 2 3 4 5
dias$Genotipo = factor(dias$Genotipo)
dias$Genotipo
##  [1] 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
## Levels: 1 2 3 4
mod = aov(Días ~  Genotipo + Fotoperiodo, data = dias)
summary(mod)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## Genotipo     3   5255  1751.7   5.041 0.0173 *
## Fotoperiodo  4   5030  1257.5   3.619 0.0371 *
## Residuals   12   4170   347.5                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#2. En caso de que influyan significativamente alguno de los dos factores, extraer conclusiones utilizando el método de Duncan.

library(agricolae)
duncan <-duncan.test(mod, "Genotipo" )
duncan
## $statistics
##   MSerror Df  Mean       CV
##     347.5 12 618.5 3.013962
## 
## $parameters
##     test   name.t ntr alpha
##   Duncan Genotipo   4  0.05
## 
## $duncan
##      Table CriticalRange
## 2 3.081307      25.68782
## 3 3.225244      26.88778
## 4 3.312453      27.61481
## 
## $means
##   Días      std r Min Max Q25 Q50 Q75
## 1  592 28.63564 5 560 630 570 590 610
## 2  622 14.83240 5 600 640 620 620 630
## 3  624 27.01851 5 580 650 620 630 640
## 4  636 23.02173 5 610 660 620 630 660
## 
## $comparison
## NULL
## 
## $groups
##   Días groups
## 4  636      a
## 3  624      a
## 2  622      a
## 1  592      b
## 
## attr(,"class")
## [1] "group"
duncan <-duncan.test(mod, "Fotoperiodo" )
duncan
## $statistics
##   MSerror Df  Mean       CV
##     347.5 12 618.5 3.013962
## 
## $parameters
##     test      name.t ntr alpha
##   Duncan Fotoperiodo   5  0.05
## 
## $duncan
##      Table CriticalRange
## 2 3.081307      28.71986
## 3 3.225244      30.06145
## 4 3.312453      30.87430
## 5 3.370172      31.41228
## 
## $means
##    Días      std r Min Max   Q25 Q50   Q75
## 1 642.5 12.58306 4 630 660 637.5 640 645.0
## 2 632.5 20.61553 4 610 660 625.0 630 637.5
## 3 607.5 37.74917 4 560 650 590.0 610 627.5
## 4 605.0 23.80476 4 570 620 600.0 615 620.0
## 5 605.0 23.80476 4 580 630 587.5 605 622.5
## 
## $comparison
## NULL
## 
## $groups
##    Días groups
## 1 642.5      a
## 2 632.5     ab
## 3 607.5      b
## 4 605.0      b
## 5 605.0      b
## 
## attr(,"class")
## [1] "group"
bartlett.test(dias$Días,  dias$Fotoperiodo)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  dias$Días and dias$Fotoperiodo
## Bartlett's K-squared = 3.0629, df = 4, p-value = 0.5474
bartlett.test(dias$Días,  dias$Genotipo)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  dias$Días and dias$Genotipo
## Bartlett's K-squared = 1.6252, df = 3, p-value = 0.6537
plot(mod)

shapiro.test(mod$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  mod$residuals
## W = 0.95316, p-value = 0.4176
#Ejercicio 3

library(readxl)
plantasejemplo3<-read_excel("Data/plantasejemplo3.xlsx")

#¿Se puede afirmar que los distintos niveles de agua influyen en la longitud del tallo de los guisantes? ¿Y el tipo de planta?


#Variable respuesta: Longitud del tallo
#Factor A: Nivel del agua con tres niveles. Es un factor de Efectos fijos.
#Factor B: Tipo de planta con dos niveles. Es un factor de Efectos fijos.

attach(plantasejemplo3)

mod<-aov(long_tallo ~ nivel_agua*Tipo_de_planta)
summary(mod) #da igual si cambio las variables categoricas por letras o numeros, tampoco importa el orden en el que coloque las columnas
##                           Df Sum Sq Mean Sq F value   Pr(>F)    
## nivel_agua                 2  10774    5387  572.56  < 2e-16 ***
## Tipo_de_planta             1   1246    1246  132.44 1.58e-12 ***
## nivel_agua:Tipo_de_planta  2    514     257   27.32 1.75e-07 ***
## Residuals                 30    282       9                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# PCA

#Construccion 
library(vegan)
## Loading required package: permute
## Loading required package: lattice
## Registered S3 methods overwritten by 'vegan':
##   method      from
##   plot.rda    klaR
##   predict.rda klaR
##   print.rda   klaR
## This is vegan 2.5-7
## 
## Attaching package: 'vegan'
## The following object is masked from 'package:outliers':
## 
##     scores
library(ade4)#Algunas opciones requieren este paquete!
library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'PerformanceAnalytics'
## The following objects are masked from 'package:agricolae':
## 
##     kurtosis, skewness
## The following object is masked from 'package:graphics':
## 
##     legend
#Para el ejemplo vamos a utilizar el dataset “doubs”, disponible en Vegan:
  
data("doubs")

#Dado que solo vamos a trabajar con los datos ambientales, debemos seleccionar el elemento “env”, en el cual están los datos ambientales:
    
env<-doubs$env
head(env)
##   dfs alt   slo flo pH har pho nit amm oxy bdo
## 1   3 934 6.176  84 79  45   1  20   0 122  27
## 2  22 932 3.434 100 80  40   2  20  10 103  19
## 3 102 914 3.638 180 83  52   5  22   5 105  35
## 4 185 854 3.497 253 80  72  10  21   0 110  13
## 5 215 849 3.178 264 81  84  38  52  20  80  62
## 6 324 846 3.497 286 79  60  20  15   0 102  53
#En ocasiones podemos necesitar eliminar elementos desde R, sin afectar el archivo de origen del cual cargamos nuestros datos. En este caso vamos a eliminar la fila #8 de nuestro set de datos:

env<-env[-8, ] #elimina fila (fila, columna)
#Note que R sobreescribe sobre el mismo vector!!

chart.Correlation(env)

cor(env)
##             dfs         alt        slo         flo          pH         har
## dfs  1.00000000 -0.93893906 -0.7555877  0.94734109  0.01522514  0.73030747
## alt -0.93893906  1.00000000  0.7658280 -0.86280579 -0.05027785 -0.78549505
## slo -0.75558775  0.76582805  1.0000000 -0.71656547 -0.27713925 -0.66664648
## flo  0.94734109 -0.86280579 -0.7165655  1.00000000  0.03312637  0.73662526
## pH   0.01522514 -0.05027785 -0.2771392  0.03312637  1.00000000  0.08451511
## har  0.73030747 -0.78549505 -0.6666465  0.73662526  0.08451511  1.00000000
## pho  0.47322419 -0.43698762 -0.3997436  0.37868776 -0.07940250  0.37318607
## nit  0.73874252 -0.75263077 -0.6070823  0.59315083 -0.04046292  0.53495392
## amm  0.40795909 -0.38107709 -0.3492304  0.29252515 -0.12200180  0.29613600
## oxy -0.57051149  0.42467525  0.4937437 -0.42109447  0.19239804 -0.37363740
## bdo  0.43542349 -0.38238374 -0.3346889  0.29518914 -0.16170564  0.33697473
##            pho         nit        amm        oxy        bdo
## dfs  0.4732242  0.73874252  0.4079591 -0.5705115  0.4354235
## alt -0.4369876 -0.75263077 -0.3810771  0.4246753 -0.3823837
## slo -0.3997436 -0.60708231 -0.3492304  0.4937437 -0.3346889
## flo  0.3786878  0.59315083  0.2925252 -0.4210945  0.2951891
## pH  -0.0794025 -0.04046292 -0.1220018  0.1923980 -0.1617056
## har  0.3731861  0.53495392  0.2961360 -0.3736374  0.3369747
## pho  1.0000000  0.80093149  0.9699345 -0.7575015  0.9091698
## nit  0.8009315  1.00000000  0.8022323 -0.6867146  0.6832300
## amm  0.9699345  0.80223230  1.0000000 -0.7462700  0.9028247
## oxy -0.7575015 -0.68671462 -0.7462700  1.0000000 -0.8398165
## bdo  0.9091698  0.68322998  0.9028247 -0.8398165  1.0000000
#A continuación podemos elaborar el PCA a partir del dataset:
  
  acp<-rda(env,scale=T) #Scale realiza estandarización variables; utiliza la matriz de correlaciones.
  
  #La opción summary despliega la información obtenida en el PCA:
    
    summary(acp)
## 
## Call:
## rda(X = env, scale = T) 
## 
## Partitioning of correlations:
##               Inertia Proportion
## Total              11          1
## Unconstrained      11          1
## 
## Eigenvalues, and their contribution to the correlations 
## 
## Importance of components:
##                         PC1    PC2     PC3     PC4     PC5     PC6     PC7
## Eigenvalue            6.446 2.2252 0.99825 0.39831 0.36224 0.25361 0.16106
## Proportion Explained  0.586 0.2023 0.09075 0.03621 0.03293 0.02306 0.01464
## Cumulative Proportion 0.586 0.7883 0.87903 0.91524 0.94817 0.97123 0.98587
##                           PC8      PC9     PC10     PC11
## Eigenvalue            0.11062 0.022949 0.017476 0.004378
## Proportion Explained  0.01006 0.002086 0.001589 0.000398
## Cumulative Proportion 0.99593 0.998013 0.999602 1.000000
## 
## Scaling 2 for species and site scores
## * Species are scaled proportional to eigenvalues
## * Sites are unscaled: weighted dispersion equal on all dimensions
## * General scaling constant of scores:  4.189264 
## 
## 
## Species scores
## 
##          PC1     PC2      PC3       PC4       PC5      PC6
## dfs  1.10786  0.4901 -0.20230  0.045871 -0.187500 -0.20053
## alt -1.06604 -0.5607  0.15135  0.193929  0.096582 -0.05541
## slo -0.95746 -0.5295 -0.25933 -0.352365  0.066943 -0.39476
## flo  0.98732  0.6262 -0.23731  0.009137 -0.105599 -0.31209
## pH  -0.02679  0.4991  1.14319 -0.014864 -0.005398 -0.17594
## har  0.91493  0.5514 -0.09538 -0.128923  0.639664  0.07145
## pho  1.02238 -0.6481  0.20016 -0.178923  0.040772 -0.04615
## nit  1.14057 -0.1628  0.05081 -0.283125 -0.272940  0.20434
## amm  0.96776 -0.7382  0.18740 -0.198493 -0.021140  0.04733
## oxy -0.99282  0.4993  0.04744 -0.543295 -0.012373  0.06953
## bdo  0.96051 -0.7274  0.09630  0.089149  0.178489 -0.14521
## 
## 
## Site scores (weighted sums of species scores)
## 
##         PC1     PC2       PC3      PC4     PC5        PC6
## 1  -1.35309 -1.0614 -0.626184 -1.14841 -1.0494 -1.821e+00
## 2  -1.05499 -0.7841  0.195705  0.90757 -1.7294  2.655e-01
## 3  -0.97457 -0.4890  1.340010  0.61152 -0.8592 -7.288e-01
## 4  -0.90281 -0.3118  0.000372  0.17712  0.2052  5.288e-01
## 5  -0.45666 -0.6973  0.550276  1.16964  1.2500  1.273e-01
## 6  -0.81070 -0.7590 -0.318284  0.77249 -0.2537  1.263e-01
## 7  -0.85277 -0.1858  0.231151 -0.37159  1.3564 -3.616e-01
## 9  -0.27926 -0.4610  0.061754  1.60909  1.2127  8.870e-01
## 10 -0.59145 -0.5554 -1.595293 -0.35281  0.6397 -2.559e-01
## 11 -0.34078  0.3167  0.005014 -1.23777  0.7883 -2.345e-01
## 12 -0.44165  0.3209 -0.697214 -0.46903  0.3928  5.963e-01
## 13 -0.39855  0.6314  0.003511 -0.90415  1.0778  5.002e-05
## 14 -0.22649  0.7350  0.946755 -0.87823  0.8730  3.814e-02
## 15 -0.21927  1.0432  2.269502 -0.19576 -0.1024 -2.360e-01
## 16 -0.16778  0.2507 -0.340084 -0.54136 -0.1054  6.195e-01
## 17  0.14914  0.3628 -0.171537 -0.14337 -0.1372  1.435e+00
## 18  0.08633  0.3674 -0.238531 -0.44014 -0.2901  1.015e+00
## 19  0.10967  0.4821  0.232435 -0.28363 -0.7316  9.414e-01
## 20  0.18575  0.3732 -0.268777 -0.69333 -0.9729  1.131e+00
## 21  0.16766  0.3112 -0.834583  0.21603 -0.7147  5.100e-01
## 22  0.13041  0.4842 -0.108135  0.18812 -0.2895 -5.716e-01
## 23  1.28519 -1.3164  0.715652 -0.57204  0.6499 -1.021e+00
## 24  1.01542 -0.4735  0.019519  1.43289  0.5981  1.440e-01
## 25  2.10059 -2.1406  0.361157 -1.21146 -0.1786  4.424e-01
## 26  0.89379 -0.1213 -0.671652  0.86581 -0.3046 -8.871e-02
## 27  0.61092  0.3178 -0.139402  0.31511 -0.8178 -9.684e-01
## 28  0.82353  0.8569  0.802337 -0.04239 -0.8747  5.103e-02
## 29  0.67793  1.0652 -1.729365  0.28387  0.2944 -1.028e+00
## 30  0.83450  1.4380  0.003890  0.93621  0.0730 -1.543e+00
  summary(acp,scaling=1)
## 
## Call:
## rda(X = env, scale = T) 
## 
## Partitioning of correlations:
##               Inertia Proportion
## Total              11          1
## Unconstrained      11          1
## 
## Eigenvalues, and their contribution to the correlations 
## 
## Importance of components:
##                         PC1    PC2     PC3     PC4     PC5     PC6     PC7
## Eigenvalue            6.446 2.2252 0.99825 0.39831 0.36224 0.25361 0.16106
## Proportion Explained  0.586 0.2023 0.09075 0.03621 0.03293 0.02306 0.01464
## Cumulative Proportion 0.586 0.7883 0.87903 0.91524 0.94817 0.97123 0.98587
##                           PC8      PC9     PC10     PC11
## Eigenvalue            0.11062 0.022949 0.017476 0.004378
## Proportion Explained  0.01006 0.002086 0.001589 0.000398
## Cumulative Proportion 0.99593 0.998013 0.999602 1.000000
## 
## Scaling 1 for species and site scores
## * Sites are scaled proportional to eigenvalues
## * Species are unscaled: weighted dispersion equal on all dimensions
## * General scaling constant of scores:  4.189264 
## 
## 
## Species scores
## 
##        PC1     PC2     PC3      PC4      PC5     PC6
## dfs  1.447  1.0896 -0.6715  0.24106 -1.03324 -1.3207
## alt -1.393 -1.2467  0.5024  1.01912  0.53222 -0.3649
## slo -1.251 -1.1772 -0.8608 -1.85173  0.36890 -2.5998
## flo  1.290  1.3924 -0.7878  0.04801 -0.58192 -2.0554
## pH  -0.035  1.1098  3.7948 -0.07811 -0.02975 -1.1587
## har  1.195  1.2260 -0.3166 -0.67751  3.52493  0.4706
## pho  1.336 -1.4410  0.6644 -0.94026  0.22468 -0.3040
## nit  1.490 -0.3619  0.1687 -1.48786 -1.50406  1.3457
## amm  1.264 -1.6413  0.6221 -1.04311 -0.11649  0.3117
## oxy -1.297  1.1100  0.1575 -2.85509 -0.06818  0.4579
## bdo  1.255 -1.6174  0.3197  0.46849  0.98358 -0.9563
## 
## 
## Site scores (weighted sums of species scores)
## 
##         PC1      PC2        PC3       PC4      PC5        PC6
## 1  -1.03580 -0.47737 -0.1886364 -0.218531 -0.19043 -2.765e-01
## 2  -0.80759 -0.35267  0.0589557  0.172702 -0.31383  4.031e-02
## 3  -0.74604 -0.21992  0.4036746  0.116366 -0.15591 -1.107e-01
## 4  -0.69110 -0.14022  0.0001121  0.033704  0.03725  8.029e-02
## 5  -0.34957 -0.31363  0.1657693  0.222572  0.22683  1.933e-02
## 6  -0.62059 -0.34137 -0.0958822  0.146997 -0.04605  1.918e-02
## 7  -0.65279 -0.08358  0.0696338 -0.070711  0.24615 -5.490e-02
## 9  -0.21377 -0.20732  0.0186032  0.306194  0.22006  1.347e-01
## 10 -0.45276 -0.24979 -0.4805779 -0.067136  0.11609 -3.886e-02
## 11 -0.26087  0.14244  0.0015104 -0.235536  0.14305 -3.560e-02
## 12 -0.33808  0.14434 -0.2100341 -0.089252  0.07127  9.055e-02
## 13 -0.30509  0.28397  0.0010576 -0.172050  0.19558  7.596e-06
## 14 -0.17338  0.33057  0.2852075 -0.167119  0.15842  5.792e-03
## 15 -0.16785  0.46919  0.6836817 -0.037251 -0.01858 -3.583e-02
## 16 -0.12843  0.11274 -0.1024494 -0.103016 -0.01913  9.406e-02
## 17  0.11417  0.16318 -0.0516750 -0.027282 -0.02491  2.178e-01
## 18  0.06609  0.16523 -0.0718567 -0.083754 -0.05265  1.542e-01
## 19  0.08395  0.21681  0.0700204 -0.053972 -0.13277  1.429e-01
## 20  0.14219  0.16784 -0.0809685 -0.131933 -0.17656  1.717e-01
## 21  0.12834  0.13995 -0.2514160  0.041108 -0.12969  7.744e-02
## 22  0.09983  0.21776 -0.0325754  0.035797 -0.05254 -8.679e-02
## 23  0.98382 -0.59208  0.2155883 -0.108853  0.11794 -1.550e-01
## 24  0.77731 -0.21296  0.0058801  0.272664  0.10854  2.186e-02
## 25  1.60801 -0.96276  0.1087977 -0.230529 -0.03241  6.717e-02
## 26  0.68419 -0.05457 -0.2023335  0.164755 -0.05528 -1.347e-02
## 27  0.46766  0.14295 -0.0419945  0.059962 -0.14840 -1.470e-01
## 28  0.63041  0.38542  0.2417020 -0.008066 -0.15873  7.749e-03
## 29  0.51895  0.47910 -0.5209667  0.054018  0.05342 -1.561e-01
## 30  0.63881  0.64676  0.0011718  0.178152  0.01325 -2.343e-01
  #Scaling 1: Gráfico biplot de distancias. “Las distancias entre los objetos 
  #en el gráfico biplot son las aproximaciones de las distancias Euclideanas
  #in un espacio multidimensional”, 
  #es decir, los ángulos entre los vectores NO reflejan sus correlaciones.
  
  #Scaling 2: Gráfico de correlaciones. 
  #“Las distancias entre los objetos en el gráfico biplot NO son las aproximaciones de las 
  #distancias Euclideanas in un espacio multidimensional”, es decir, los ángulos entre los descriptores reflejan las correlaciones.

# Graficas
  
  par(mfrow = c(1, 2)) #divide la pantalla para obtener los dos gráficos
  biplot(acp, scaling = 1, main = "PCA - scaling: 1")
  biplot(acp, main = "PCA - scaling: 2")

  prin_comp <- prcomp(env, scale. = T)
  summary(prin_comp)
## Importance of components:
##                          PC1    PC2     PC3     PC4     PC5     PC6     PC7
## Standard deviation     2.539 1.4917 0.99912 0.63112 0.60186 0.50360 0.40132
## Proportion of Variance 0.586 0.2023 0.09075 0.03621 0.03293 0.02306 0.01464
## Cumulative Proportion  0.586 0.7883 0.87903 0.91524 0.94817 0.97123 0.98587
##                            PC8     PC9    PC10    PC11
## Standard deviation     0.33260 0.15149 0.13220 0.06617
## Proportion of Variance 0.01006 0.00209 0.00159 0.00040
## Cumulative Proportion  0.99593 0.99801 0.99960 1.00000