Idea intuitiva del ANOVA

La técnica de análisis de varianza (ANOVA) también conocida como análisis factorial y desarrollada por Fisher en 1930, constituye la herramienta básica para el estudio del efecto de uno o más factores (cada uno con dos o más niveles) sobre la media de una variable continua, dispersion de los datos, cuan agrupados se encuentran, siempre y cuando los datos sean continuos.

Es por lo tanto el test estad�stico a emplear cuando se desea comparar las medias de dos o más grupos. Esta técnica puede generalizarse también para estudiar los posibles efectos de los factores sobre la varianza de una variable.

La hipótesis nula de la que parten los diferentes tipos de ANOVA es que la media de la variable estudiada es la misma en los diferentes grupos, en contraposición a la hipótesis alternativa de que al menos dos medias difieren de forma significativa.

ANOVA permite comparar múltiples medias, pero lo hace mediante el estudio de las varianzas. En todo el esquema de las cosas, somos realmente tan diferentes?

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.

Análisis de la Varianza (ANOVA)

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:

Organización de los datos

Generamos dos variables: insectos es la variable respuesta y colores es la variable factor (establece los grupos de interés):

#Variable continua son los insectos
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)
#el poner en forma ordenada le asocia el nombre de la siguiente forma cada 6 datos, con la funcion rep
colores <- as.factor(c(rep(c("azul", "verde", "blanco", "amarillo"), each =6)))

Exploramos los datos de la muestra:

#graficos de cajas
#~le permite crear el numero de diagrama de cajas necesaria para caada grupo
boxplot(insectos ~ colores, col = c("yellow", "blue", "white","green"), ylab = "Número de insectos atrapados")

La media de cada caja se encuentra distancia por lo que son muestras estadisticamente diferentes. La anchura de la caja significa la varianza del grupo de datos a los que corresponde.

#tapply es, aplique la formula a la siguiente matriz de datos.
tapply(insectos, colores, mean)
## amarillo     azul   blanco    verde 
## 47.16667 14.83333 15.66667 31.50000

ANOVA y pruebas post-hoc

Esta es la forma de pedir un ANOVA en R:

#se lo guarda en un objeto y se aplica el modelo lineal, en variables de tipo continua y la siguiente de tipo factor o categorica.
#para la funcion anova aplicamos el uso de aov
fm = aov( lm(insectos ~ colores) )

Pedimos un resumen de la tabla del ANOVA

#le pedimos un resumen con la funcion summary
summary(fm)
##             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

Si fueran iguales el Pr tiende a 1 Como la variable sie s significativa, quiere decir que si depende del color el llamado de insectos

Elementos generados en el ANOVA:

names(fm)
##  [1] "coefficients"  "residuals"     "effects"       "rank"         
##  [5] "fitted.values" "assign"        "qr"            "df.residual"  
##  [9] "contrasts"     "xlevels"       "call"          "terms"        
## [13] "model"

Identifica en la tabla ANOVA los grados de libertad del factor, los grados de libertad residuales, la suma de cuadrados de los grupos, la suma de cuadrados del error, las medias correspondientes de las sumas de cuadrados de los grupos y del error, el valor del estad�stico F. Describe cómo obtenemos cada uno de ellos.

¿Cual es el valor critico de F bajo la hipotesis nula con un nivel de significacion alfa = 0.05? (Este valor nos delimitara la region de aceptacion y rechazo)

La hipotesis nula es que no hay diferencia entre los grupos

Bajo la Ho el estadistico de contraste F se distribuye como una F de grados de libertad (I-1), (n-I) donde I es el número de grupos que disponemos y n el tamaño total de la muestral. Así obtenemos el cuantil buscado:

Obtiene el valor teorico y lo compara con el de la muestra

qf se utiliza para ver si las medias son iguales , con el numero de grupos y datos La distribucion que sigue es un chi^2

qf(0.05, 3-1, 18-3, lower.tail = F)
## [1] 3.68232

Valores del estadístico > 3.68232 estaran incluidos en la region de rechazo. En nuestro caso 30.55 es mucho mayor que el valor critico obtenido.

¿Que valor de la tabla ANOVA nos proporciona la varianza muestral comun (pooled variance en ingles)? ¿Para que es útil?

La raíz cuadrada de la media de los cuadrados del error, ademas de proporcionarnos una estimación de la varianza muestral de todos los datos, se utiliza en la obtención de los intervalos de confianza de las medias en cada uno de los grupos de interés.

Por ejemplo, este será el intervalo de confianza de la media de los insectos capturados para las trampas amarillas, con un nivel de confianza del 95%:

El intervalo de confianza sirve para a ser predicciones de los datos

#el intervalo se construye con la media, la varianza y el p-valor alfa=0.05/2, que depende del nivel de confianza
media <- mean(insectos[colores =="amarillo"]) 
valor_t <- pt(0.05/2, 18 - 3) 
#el 46 es dado ya en pasos de arriba
sp <- sqrt(46)  
#desviación t�pica de la varianza muestral común
#el sqrt es el n de cada grupo
ee  <- valor_t * (sp/ sqrt(6))  #error de estimación 
media
## [1] 47.16667

limite superior del intervalo de confianza de la media de insectos capturados para las trampas amarillas

media + ee 
## [1] 48.57826

lÃ?mite inferior del intervalo de confianza de la media de insectos capturados para las trampas amarillas

media - ee 
## [1] 45.75507

Cuando ponemos media +- ee es el intervalo maximo y minimo en el que puede estar la media

Si hemos detectado diferencias significativas entre las medias de las poblaciones. ¿Ser�a posible saber cuáles son los grupos que generan estas diferencias?

#Tukey nos permite ver entre grupos cuales tiene diferencia, si es cercano a 0 son diferentes y si es cercano a 1 son iguales
intervals = TukeyHSD(fm)
intervals
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = lm(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
#haciendo el grafico cuando el intervalo cae en 0 son iguales.
plot(intervals)

Explica las diferencias existentes por parejas de trampas según el color. ¿Algunas de estas diferencias son significativas? Si el objetivo es atrapar un mayor número de insectos, ¿con qué tipo de trampas te quedar�as?

Validacion del modelo ANOVA

Si los residuos son buenos, los resultados son buenos.

A partir de los residuos del modelo comprobaremos si el modelo ANOVA es adecuado. Los supuestos que se deben cumplir son tres: independencia, homocedasticidad y normalidad.

Independencia

plot(fm$residuals)

La grafica mientras mas dispersas menos correlacionados esta, mientra mas unidos mas correlacionados, y el anova no aporta informacion creible.

Normalidad

Los gráficos y descriptivos nos informan si se verifica la igualdad de varianzas en los grupos descritos: Homoseasticidad, es el nombre tecnico.

summary(fm$residuals)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -16.5000  -2.9167   0.1667   0.0000   5.2083  11.8333
boxplot(fm$residuals)

hist(fm$residuals)

#No hay datos atipicos, casi se encuentran sobre la linea normal, se ajustan a una distribucion normal
qqnorm(fm$residuals) 
qqline(fm$residuals)

El test de Shapiro-Wilk indica que no tenemos evidencia suficiente para rechazar la hipotesis nula (normalidad de los residuos)

#aplica a los residuos y nos da un p-valor>=0,05 los valores son normales, caso contrario no son normales
shapiro.test(fm$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  fm$residuals
## W = 0.97337, p-value = 0.75

Homocedasticidad

Los gráficos y descriptivos nos informan si se verifica la igualdad de varianzas en los grupos descritos: LOS residuales nos dan la diferencia entre los datos reales y los ajustados. La varianza la obtenemos a partir de los residuos.

boxplot(fm$residuals~colores, col = c("yellow", "blue", "white","green"))  

Aqui nos fijamos en el ancho de las cajas, entre mas ancho mas varianza y se la obtiene de los residuos. ##DESVIACIONES Desviacion estandar.

desviaciones <- tapply(fm$residuals, colores, sd)

Comparando la desviacion maxima con la minima obtenemos una orientacion sobre la falta de homocedasticidad (>2 aproximadamente), se afirma que no son iguales o que la varianza es diferente. Pero se puede usar test

max(desviaciones) / min(desviaciones)    
## [1] 2.980357

El test de Bartlett indica que no tenemos evidencia suficiente para rechazar la hipótesis nula (las varianzas son iguales)

#No hay evidencia suficiente para rechazar hipotesis nula, que decia que los grupos son iguales.
bartlett.test(fm$residuals ~ colores)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  fm$residuals by colores
## Bartlett's K-squared = 5.2628, df = 3, p-value = 0.1535

El valor aqui es mayor a 0,05 y podemos recahazar la hipotesis nula es decir son diferentes.

Kruskal-Wallis y pruebas post-hoc

¿Qué hipótesis contrasta el test ANOVA?

Ho: las medias son iguales en todas las poblaciones

Ha: hay alguna media distinta

¿Qué hipótesis contrasta la prueba de Kruskal-Wallis?

Ho: la variable respuesta es la misma en todas las poblaciones valoradas

Ha: la variable respuesta es mayor en alguna de las poblaciones

Cuando no se cumplen las hipótesis exigidas por el modelo ANOVA, es posible utilizar la prueba no paramétrica Kruskal-Wallis: ¿hay diferencias significativas entre las poblaciones?

kruskal.test(insectos, colores)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  insectos and colores
## Kruskal-Wallis chi-squared = 16.975, df = 3, p-value = 0.000715

Valor de la muestra debe ser contrastada con el teorico.

Indica cuál es el estad�stico de contraste, los grados de libertad, el p-valor correspondiente y cuál ser�a el valor cr�tico que definir�a las regiones de aceptación y rechazo con un nivel de significación alfa = 0.05.

Bajo la Ho el estad�stico de contraste H del test de Kruskal-Wallis se distribuye como una Chi-cuadrado de grados de libertad (I-1) (donde I es el número de grupos que disponemos). As� obtenemos el cuantil buscado:

qchisq(0.05, 3-1, lower.tail = F)
## [1] 5.991465

Valores del estad�stico > 5.991465 estarán incluidos en la región de rechazo. En nuetro caso 16.9755 es mucho mayor que el valor cr�tico obtenido. Se rechaza la hipotesis nula, se calcula con el valor teorico. Se rechaza la nula y se acepta la alternativa porque el 16,97 es mayor que el 5.99

Si transformáramos los datos de la variable respuesta, utilizando logaritmos y después aplicáramos el test de KrusKal-Wallis al logaritmo del número de insectos atrapados, ¿variar�an los resultados del test estad�stico?

kruskal.test(log(insectos), colores) 
## 
##  Kruskal-Wallis rank sum test
## 
## data:  log(insectos) and colores
## Kruskal-Wallis chi-squared = 16.975, df = 3, p-value = 0.000715

Los resultados son exactamente los mismos. No se producen variaciones porque el test de Kruskal-Wallis trabaja sobre rangos, es decir, sobre ordenaciones de los valores de la variable en cada uno de los grupos. Aunque realicemos una transformación logar�tmica, el orden entre los valores de la variable se mantiene y por lo tanto la transformación no afecta a los resultados del test.

Si hemos detectado diferencias significativas en la variable respuesta para las distintas poblaciones. ¿Ser�a posible saber cuáles son los grupos que generan estas diferencias?

library(PMCMR)
## PMCMR is superseded by PMCMRplus and will be no longer maintained. You may wish to install PMCMRplus instead.
posthoc.kruskal.nemenyi.test(insectos, colores, method = "Chisq")
## Warning in posthoc.kruskal.nemenyi.test.default(insectos, colores, method =
## "Chisq"): Ties are present, p-values are not corrected.
## 
##  Pairwise comparisons using Tukey and Kramer (Nemenyi) test  
##                    with Tukey-Dist approximation for independent samples 
## 
## data:  insectos and colores 
## 
##        amarillo azul   blanco
## azul   0.0022   -      -     
## blanco 0.0039   0.9985 -     
## verde  0.4068   0.1878 0.2559
## 
## P value adjustment method: none

Muestras independientes, cuales se pueden considerar como uno solo, el menos(-) sale en donde se puede considerar que son iguales, donde la media y la varianza es analizada. Esta libreria permite saber los resultados sin realizar los calculos anteriores, para dar una respuesta tentativa.

Ejercicios

Relaciones sexuales entre universitarios

El departamento de Psicolog�a de una Universidad de Castilla-La Mancha ha realizado un estudio sobre hábitos, preferencias y satisfacción sexual en estudiantes universitarios. Hemos utilizado los datos que recogieron en sus encuestas y queremos conocer si existen diferencias entre la frecuencia mensual de relaciones sexuales de estudiantes universitarios pertenecientes a tres titulaciones universitarias diferentes:

T1: 11 14 7 15 11 13 11 16 10 15 18 12 9 9 10 10 15 10 14 10 10 12 14 12 15 7 13 6 10 15 20 10 13 10 6 14 8 10 8 11

T2: 13 10 12 7 5 10 10 16 9 7 7 2 6 9 9 8 8 10 3 6 5 2 9 3 4 5 10 8 5 9 10 8 13 10 0 2 1 1 0 4

T3: 6 7 3 5 9 6 1 6 0 2 5 6 11 6 7 0 5 7 5 4 7 4 2 8 9 6 1 4 7 7 8 9 7 5 1 6 9 4 7 6

Contesta las siguientes preguntas:

¿Hay diferencias de salario en función del lugar de trabajo?

Nos gustar�a saber si el salario var�a en alguna de las 3 provincias del Ecuador. Para ello, se realizó un estudio con 50 personas por provincia a las que se preguntó su salario en euros por semana.

Quito: 299 313 300 321 308 312 300 310 281 308 309 300 303 303 311 308 291 298 276 290 310 308 295 310 286 295 289 293 291 297 297 287 297 302 298 301 313 290 306 313 294 308 295 303 316 299 313 296 290 299

Cuenca: 252 248 232 229 256 233 240 237 248 232 230 246 236 250 238 243 245 241 235 249 238 231 230 239 261 243 242 245 249 258 245 236 244 242 229 246 244 244 255 247 236 252 237 259 248 237 236 252 236 239

Guayaquil: 272 268 285 274 278 287 297 275 269 281 270 284 282 281 280 286 265 283 281 272 269 286 268 288 284 282 304 280 283 281 281 286 287 288 278 272 268 287 269 272 270 271 291 265 280 280 275 294 269 277 Contesta las siguientes preguntas:

salarios <- c(299,313,300,321,308,312,300,310,281,308,309,300,303,303,311,308,291,298,276,290,310,308,295,310,286,295,289,293,291,297,297,287,297,302,298,301,313,290,306,313,294, 308,295,303,316,299,313,296,290,299,252,248,232,229,256,233,240,237,248,232,230,246,236,250,238,243,245,241,235,249,238,231,230,239,261,243,242,245,249,258,245,236,244,242,229,246,244,244,255,247,236,252,237,259,248,237,236,252,236,239,272,268,285,274,278,287,297,275,269,281,270,284,282,281,280,286,265,283,281,272,269,286,268,288,284,282,304,280,283,281,281,286,287,288,278,272,268,287,269,272,270,271,291,265,280,280,275,294,269,277)
provincia<- as.factor(c(rep(c("Quito", "Cuenca", "Guayaquil"), each =50)))
boxplot(salarios ~ provincia, col = c("green", "red", "white","black"), ylab = "Número de salarios")

tapply(salarios, provincia, mean)
##    Cuenca Guayaquil     Quito 
##    242.40    279.10    300.64

Ho: las medias son iguales en todas las poblaciones

Ha: hay alguna media distinta

f1 = aov( lm(salarios ~ provincia) )
summary(f1)
##              Df Sum Sq Mean Sq F value Pr(>F)    
## provincia     2  86713   43356     558 <2e-16 ***
## Residuals   147  11422      78                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

El Pr es menor a 0 por lo que significativa la variable provincia, indica que los salarios si depende de la provincia.

names(f1)
##  [1] "coefficients"  "residuals"     "effects"       "rank"         
##  [5] "fitted.values" "assign"        "qr"            "df.residual"  
##  [9] "contrasts"     "xlevels"       "call"          "terms"        
## [13] "model"
qf(0.05, 2-1, 150-3, lower.tail = F)
## [1] 3.905498

Valores del estadístico > 3.9054 estaran incluidos en la region de rechazo. En nuestro caso 558 es mucho mayor que el valor critico obtenido.

La raíz cuadrada de la media de los cuadrados del error, ademas de proporcionarnos una estimación de la varianza muestral de todos los datos, se utiliza en la obtención de los intervalos de confianza de las medias en cada uno de los grupos de interés.

media1 <- mean(salarios[provincia =="Quito"]) 
valor_t <- pt(0.05/2, 150 - 2) 
#el 46 es dado ya en pasos de arriba
sp1 <- sqrt(78)  
#desviación t�pica de la varianza muestral común
#el sqrt es el n de cada grupo
ee1  <- valor_t * (sp1/ sqrt(50))  #error de estimación 
media1 
## [1] 300.64
media1+ee
## [1] 302.0516
media1-ee
## [1] 299.2284
media2 <- mean(salarios[provincia =="Guayaquil"]) 
valor_t <- pt(0.05/2, 150 - 2) 
#el 46 es dado ya en pasos de arriba
sp <- sqrt(78)  
#desviación t�pica de la varianza muestral común
#el sqrt es el n de cada grupo
ee  <- valor_t * (sp/ sqrt(50))  #error de estimación 
media2 
## [1] 279.1
media2-ee
## [1] 278.4631
media2+ee
## [1] 279.7369
media3 <- mean(salarios[provincia =="Cuenca"]) 
valor_t <- pt(0.05/2, 150 - 2) 
#el 46 es dado ya en pasos de arriba
sp <- sqrt(78)  
#desviación típica de la varianza muestral común
#el sqrt es el n de cada grupo
ee  <- valor_t * (sp/ sqrt(50))  #error de estimación 
media3 
## [1] 242.4
media3+ee
## [1] 243.0369
media3-ee
## [1] 241.7631
interval = TukeyHSD(f1)
interval
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = lm(salarios ~ provincia))
## 
## $provincia
##                   diff      lwr      upr p adj
## Guayaquil-Cuenca 36.70 32.52585 40.87415     0
## Quito-Cuenca     58.24 54.06585 62.41415     0
## Quito-Guayaquil  21.54 17.36585 25.71415     0
#haciendo el grafico cuando el intervalo cae en 0 son iguales.
plot(interval)

Independencia

plot(f1$residual)

Entre mas separados se encuentren los datos se ve que no existe correlacion entre los dato obtenidos, por el contrario nos proporciona veracidad sobre la calidad de los datos es decir el valor de los salarios obtenidos. #Normalidad

summary(f1$residual)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -24.640  -6.400   0.480   0.000   6.825  24.900
boxplot(f1$residual)

hist(f1$residual)

Nos ayuda a verificar la similitud a la campana de Gauss sin embargo se evidencia que existe una sutil similitud.

#No hay datos atipicos, casi se encuentran sobre la linea normal, se ajustan a una distribucion normal
qqnorm(f1$residual) 
qqline(f1$residual)

A pesar que existen datos atipicos que podrian generar un error en los datos obtenidos, se evidencia que se ajusta a un modelo lineal de distribución que proporciona veracidad de los datos.

El test de Shapiro-Wilk indica que no tenemos evidencia suficiente para rechazar la hipotesis nula (normalidad de los residuos)

#aplica a los residuos y nos da un p-valor>=0,05 los valores son normales, caso contrario no son normales
shapiro.test(f1$residual)
## 
##  Shapiro-Wilk normality test
## 
## data:  f1$residual
## W = 0.99194, p-value = 0.5574

Homocedasticidad

Los gráficos y descriptivos nos informan si se verifica la igualdad de varianzas en los grupos descritos: LOS residuales nos dan la diferencia entre los datos reales y los ajustados. La varianza la obtenemos a partir de los residuos.

boxplot(f1$residual~provincia, col = c("yellow", "blue", "white"))

Aqui nos fijamos en el ancho de las cajas, entre mas ancho mas varianza y se la obtiene de los residuos.

kruskal.test(salarios, provincia)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  salarios and provincia
## Kruskal-Wallis chi-squared = 126.23, df = 2, p-value < 2.2e-16
qchisq(0.05, 2-1, lower.tail = F)
## [1] 3.841459

Valores del estadístico > 3.841459 estarán incluidos en la región de rechazo. En nuetro caso 126.23 es mucho mayor que el valor crítico obtenido. Se rechaza la hipotesis nula, se calcula con el valor teorico. Se rechaza la nula y se acepta la alternativa porque el 126.23 es mayor que el 3.841459