`# 1.-INTRODUCCIÓN
El funcionamiento básico de un ANOVA consiste en calcular la media de cada uno de los grupos para a continuación comparar la varianza de estas medias (varianza explicada por la variable grupo, intervarianza) frente a la varianza promedio dentro de los grupos (la no explicada por la variable grupo, intravarianza).
Bajo la hipótesis nula de que las observaciones de los distintos grupos proceden todas la misma población (tienen la misma media y varianza), la varianza ponderada entre grupos será la misma que la varianza promedio dentro de los grupos.
Conforme las medias de los grupos estén más alejadas las unas de las otras, la varianza entre medias se incrementará y dejará de ser igual a la varianza promedio dentro de los grupos. Mas varianza mas diferente la muestra.
Ya que los procedimientos ANOVA de dos muestras permiten comparar las medias de dos poblaciones o las respuestas medias a dos tratamientos de un experimento. Sin embargo, en ocasiones necesitamos comparar más de 2 grupos. El modelo del Análisis de la Varianza (ANOVA), nos permitirá abordar este tipo de situaciones. Lo vemos con un ejemplo:
Estamos interesados en conocer si hay colores más atractivos para los insectos. Para ello se diseñaron trampas con los siguientes colores: amarillo, azul, blanco y verde. Se cuantificó el número de insectos que quedaban atrapados:
insectos <- c(16, 11, 20, 21, 14, 7, 37, 32, 15, 25, 39, 41, 21, 12, 14, 17, 13, 17, 45, 59, 48, 46, 38, 47)
colores <- as.factor(c(rep(c("azul", "verde", "blanco", "amarillo"), each = 6)))
insectos
## [1] 16 11 20 21 14 7 37 32 15 25 39 41 21 12 14 17 13 17 45 59 48 46 38 47
colores
## [1] azul azul azul azul azul azul verde verde
## [9] verde verde verde verde blanco blanco blanco blanco
## [17] blanco blanco amarillo amarillo amarillo amarillo amarillo amarillo
## Levels: amarillo azul blanco verde
summary(insectos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.00 14.75 21.00 27.29 39.50 59.00
summary (colores)
## amarillo azul blanco verde
## 6 6 6 6
boxplot(insectos ~ colores, col= c("yellow", "blue", "white", "green", ylab="Núm de insectos atrapados"))
A simple vista, se observa que el color amarillo captura un en promedio un mayor número de insectos, seguido del color verde. Por otro lado, el azul y el blanco son los que menos insectos capturan, entre estos dos colores no hay diferencias significativas.
La dispersión es diferente para cada uno de los insectos atrapados por color, prueba de ello es que el amarillo y el blanco presentan una dispersión sumamente inferior a la presentada por el azul y el verde. Se debería verificar varianzas heterogéneas (heterocedasticidad).
Medias
tapply(insectos, colores, mean)
## amarillo azul blanco verde
## 47.16667 14.83333 15.66667 31.50000
El mayor promedio es para amarillos (47,16 casos), seguido del verde (31,50 casos), en tercer lugar por blanco (15,66 casos), y en último lugar por el azul (14,83 casos).
A priori, se indicaría que existen diferencias en laas medias de amarillo y verde respecto al resto, pero que azul y blanco muestran medias próximas entre sí.
Varianzas
tapply(insectos, colores, var)
## amarillo azul blanco verde
## 46.16667 28.56667 11.06667 98.30000
Las varianzas son muy dispares; prueba de ello es que la mayor varianza es para verde con 98,30, seguida de amarillo con 46,16, en tercer lugar por azul con 28,56 y en último lugar la varianza más reducida es para blanco con 11,06.
Se aprecia heterogeneidad de varianzas entre las clases para la variable “insectos atrapados”.
Desviaciones típicas
tapply(insectos, colores, sd)
## amarillo azul blanco verde
## 6.794606 5.344779 3.326660 9.914636
Las desviaciones típicas son muy dispares; prueba de ello es que la mayor desviación típica es para verde con 9,91, seguida de amarillo con 6,79, en tercer lugar por azul con 5,34 y en último lugar la desviación típica más reducida es para blanco con 3,32.
Se aprecia heterogeneidad de varianzas entre las clases para la variable “insectos atrapados”.
anova1 = aov(insectos~colores)
summary(anova1)
## Df Sum Sq Mean Sq F value Pr(>F)
## colores 3 4218 1406 30.55 1.15e-07 ***
## Residuals 20 921 46
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El estadístico F asciende a 30,55 con un p-valor de 0,000 < 0,05. Tenemos evidencia empírica suficiente para rechazar la hipótesis de igualdad de medias al nivel de significación del 5%.
plot(anova1)
Se acepta la hipótesis de normalidad, ya que la mayoría de los puntos se sitúan cerca de los cuantiles de la normal. Por otro lado, se aprecia heterocedasticidad para los colores (verde es más disperson que el resto).
intervalos1<-TukeyHSD(anova1)
intervalos1
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = insectos ~ colores)
##
## $colores
## diff lwr upr p adj
## azul-amarillo -32.3333333 -43.296330 -21.37034 0.0000004
## blanco-amarillo -31.5000000 -42.462996 -20.53700 0.0000006
## verde-amarillo -15.6666667 -26.629663 -4.70367 0.0036170
## blanco-azul 0.8333333 -10.129663 11.79633 0.9964823
## verde-azul 16.6666667 5.703670 27.62966 0.0020222
## verde-blanco 15.8333333 4.870337 26.79633 0.0032835
*Azul vs Amarillo [-43,29; -21,37], se estima que el número de insectos atrapados por el color azul es entre 43 y 21 inferior al obtenido por el amarillo con una confianza del 95%. Los dos extremos son negativos, indicando que la media de azul es significativamente diferente e inferior a la media de amarillo. El p-valor es 0.000 < 0.05. Rechaza H0, las medias no son iguales.
*Blanco vs Amarillo [-42,46; -20,53], se estima que el número de insectos atrapados por el color azul es entre 42 y 20 inferior al obtenido por el amarillo con una confianza del 95%. Los dos extremos son negativos, indicando que la media de blanco es significativamente diferente e inferior a la media de amarillo. El p-valor es 0.000 < 0.05. Rechaza H0, las medias no son iguales.
*Verde vs Amarillo [-26,62; -4,70], se estima que el número de insectos atrapados por el color azul es entre 26 y 4 inferior al obtenido por el amarillo con una confianza del 95%. Los dos extremos son negativos, indicando que la media de verde es significativamente diferente e inferior a la media de amarillo. El p-valor es 0.003 < 0.05. Rechaza H0, las medias no son iguales.
*Blanco vs Azul [-10,12; 11,79], se estima que el número de insectos atrapados sea similar con ambos colores, pues tenemos en el intervalo tanto valores positivos como valores negativos. El p-valor es 0,99 > 0,05. Aceptamos H0, las medias son iguales; es decir, el color blanco y el azul atrapan, en promedio, un número similar de insectos.
*Verde y Azul [5,70; 27,62], se estima que el número de insectos atrapados por el color verde es entre 5 y 27 superior al obtenido por el verde con una confianza del 95%. Los dos extremos son positivos, indicando que la media de verde es significativamente diferente y superior a la media de azul. El p valor es 0,002 < 0,05. Rechaza H0, las medias no son iguales.
*Verde y Blanco [4,87; 26,79], se estima que el número de insectos atrapados por el color verde es entre 4 y 26 superior al obtenido por el verde con una confianza del 95%. Los dos extremos son positivos, indicando que la media de verde es significativamente diferente y superior a la media de azul. El p valor es 0,003 < 0,05. Rechaza H0, las medias no son iguales.
plot(intervalos1)
plot(anova1$residuals)
Se puede observar la ausencia de patrones en los residuos; por lo tanto,
los datos son independientes (obviamente al proceder de una muestra
aleatoria simple, MÁS).
summary(anova1$residuals)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -16.5000 -2.9167 0.1667 0.0000 5.2083 11.8333
La media de los residuales debe ser cero.
hist(anova1$residuals)
# Histograma de los residuos
hist(anova1$residuals, probability = TRUE, main = "Histograma de Residuos con Curva Normal", xlab = "Residuos", ylab = "Densidad")
# Añadir curva normal
curve(dnorm(x, mean=mean(anova1$residuals), sd=sd(anova1$residuals)), col="red", lwd=2, add=TRUE)
El histograma de los residuales muestra una distribución ajustada
adecuadamente a la normal.
shapiro.test(anova1$residuals)
##
## Shapiro-Wilk normality test
##
## data: anova1$residuals
## W = 0.97337, p-value = 0.75
El p valor es 0,75 > 0,05. Tenemos evidencia empírica suficiente para aceptar la hipótesis de normalidad de los residuos.
qqnorm(anova1$residuals)
qqline(anova1$residuals)
#### Homocedasticidad
boxplot(anova1$residuals~colores, col=c("yellow", "blue", "white","green"))
Tenemos boxplot con una mayor dispersión de residuos como son el de verde y azul respecto a los otros colores.
desviaciones <- tapply(anova1$residuals, colores, var)
desviaciones
## amarillo azul blanco verde
## 46.16667 28.56667 11.06667 98.30000
ratio <- max(desviaciones)/min(desviaciones)
ratio
## [1] 8.88253
La varianza máxima es 8,88 veces superior a la varianza mínima (al ser mayor a tres es debido a la heterocedasticidad).
bartlett.test(anova1$residuals~colores)
##
## Bartlett test of homogeneity of variances
##
## data: anova1$residuals by colores
## Bartlett's K-squared = 5.2628, df = 3, p-value = 0.1535
El test de Bartlett obtiene un p-valor de 0,15 > 0,05. Tenemos evidencia empírica suficiente para aceptar la igualdad de las varianzas.
library(HH)
## Warning: package 'HH' was built under R version 4.2.3
## Loading required package: lattice
## Loading required package: grid
## Loading required package: latticeExtra
## Warning: package 'latticeExtra' was built under R version 4.2.3
## Loading required package: multcomp
## Warning: package 'multcomp' was built under R version 4.2.3
## Loading required package: mvtnorm
## Warning: package 'mvtnorm' was built under R version 4.2.3
## Loading required package: survival
## Loading required package: TH.data
## Warning: package 'TH.data' was built under R version 4.2.3
## Loading required package: MASS
##
## Attaching package: 'TH.data'
## The following object is masked from 'package:MASS':
##
## geyser
## Loading required package: gridExtra
## Warning: package 'gridExtra' was built under R version 4.2.3
hov(anova1$residuals~colores)
##
## hov: Brown-Forsyth
##
## data: anova1$residuals
## F = 1.2875, df:colores = 3, df:Residuals = 20, p-value = 0.3059
## alternative hypothesis: variances are not identical
El test de Brown-Forsyth obitene un p-valor de 0,30 > 0,05. Tenemos evidencia empírica suficiente para aceptar la igualdad de las varianzas.
fligner.test(anova1$residuals~colores)
##
## Fligner-Killeen test of homogeneity of variances
##
## data: anova1$residuals by colores
## Fligner-Killeen:med chi-squared = 3.4682, df = 3, p-value = 0.3249
El test de Fligner-Killeen obitene un p-valor de 0.31 > 0.05. Tenemos evidencia empírica suficiente para aceptar la igualdad de las varianzas.
Los contrastes de homogeneidad de varianzas hayh que tener cuidado cuando tenemos pocos datos, ya que si los datos no son > 100, son poco potentes (alta probabiliad de cometer un error de tipo II, aceptar homocedasticidad cuando tenemos realmente heterocedasticidad)
library("PMCMRplus")
## Warning: package 'PMCMRplus' was built under R version 4.2.3
robusto<-gamesHowellTest(insectos~colores)
robusto
##
## Pairwise comparisons using Games-Howell test
## data: insectos by colores
## amarillo azul blanco
## azul 2.5e-05 - -
## blanco 6.5e-05 0.987 -
## verde 0.046 0.029 0.037
##
## P value adjustment method: none
## alternative hypothesis: two.sided
plot(robusto)
## Anova No Paramétrico o Prueba de Kruskall-Wallis
kruskal.test(insectos, colores, data=datos)
##
## Kruskal-Wallis rank sum test
##
## data: insectos and colores
## Kruskal-Wallis chi-squared = 16.975, df = 3, p-value = 0.000715
El p-valor asciende a 0,0007 < 0,05. Tenemos evidencia empírica para rechazar la hipótesis de igualdad de medias. (Anova robusto)