ANOVA de dos vías en R
¿Qué es el test ANOVA de dos vías?
La prueba de ANOVA de dos vías se utiliza para evaluar simultáneamente el efecto de dos variables (A y B) de agrupamiento sobre una variable de respuesta.
Las variables de agrupamiento también se conocen como factores. Las diferentes categorías (grupos) de un factor se denominan niveles. El número de niveles puede variar entre factores. Las combinaciones de niveles de factores se llaman celdas.
Supongamos que tenemos un experimento con dos factores: Tipo de Suplemento (con niveles “OJ” para jugo de naranja y “VC” para vitamina C) y Dosis (con niveles 0.5, 1 y 2). La variable de respuesta es la Longitud del Diente. Aquí está cómo se vería una tabla que muestra las celdas formadas por las combinaciones de niveles de estos factores:
Tipo de Suplemento | Dosis | Longitud del Diente (ejemplo) |
---|---|---|
OJ | 0.5 | 13.2 |
OJ | 1.0 | 22.7 |
OJ | 2.0 | 26.4 |
VC | 0.5 | 8.2 |
VC | 1.0 | 15.5 |
VC | 2.0 | 23.3 |
- Factores: En este ejemplo, tenemos dos factores: “Tipo de Suplemento” y “Dosis”.
- Niveles: Cada factor tiene varios niveles. “Tipo de Suplemento” tiene dos niveles (“OJ” y “VC”), mientras que “Dosis” tiene tres niveles (0.5, 1 y 2).
- Celdas: Cada combinación de niveles de los factores forma una celda. Por ejemplo, “OJ con dosis 0.5” es una celda.
Hipótesis del test ANOVA de dos vías
- No hay diferencia en las medias del factor A.
- No hay diferencia en las medias del factor B.
- No hay interacción entre los factores A y B.
La hipótesis alternativa para los casos 1 y 2 es: las medias no son iguales.
La hipótesis alternativa para el caso 3 es: hay una interacción entre A y B.
Supuestos del test ANOVA de dos vías
El ANOVA de dos vías, como todos los tests ANOVA, asume que las observaciones dentro de cada celda están distribuidas normalmente y tienen varianzas iguales.
Calcular el test ANOVA de dos vías en R: diseños equilibrados
Los diseños equilibrados corresponden a la situación donde tenemos tamaños de muestra iguales dentro de los niveles de nuestras variables de agrupamiento independientes.
Datos
Usaremos el conjunto de datos incorporado en R llamado ToothGrowth
. Contiene datos de un estudio que evalúa el efecto de la vitamina C en el crecimiento dental en cobayas. El experimento se ha realizado en 60 cobayas, donde cada animal recibió uno de tres niveles de dosis de vitamina C (0.5, 1 y 2 mg/día) mediante uno de dos métodos de administración (jugo de naranja o ácido ascórbico, y codificado como VC). Se midió la longitud del diente y se muestra una muestra de los datos a continuación.
Verifica tus datos
Para tener una idea de cómo se ven los datos, mostramos una muestra aleatoria de los datos usando la función sample_n()
[en el paquete dplyr]. Primero, instala dplyr
si no lo tienes:
Del resultado anterior, R considera “dose” como una variable numérica. La convertiremos en una variable de factor (es decir, variable de agrupamiento) de la siguiente manera.
Pregunta: Queremos saber si la longitud del diente depende de supp
y dose
.
Genera tablas de frecuencia:
Tenemos celdas de diseño 2X3 con los factores siendo supp
y dose
y 10 sujetos en cada celda. Aquí, tenemos un diseño equilibrado. En las siguientes secciones describiré cómo analizar datos de diseños equilibrados, ya que este es el caso más simple.
Visualiza tus datos
Los diagramas de caja y los diagramas de línea se pueden usar para visualizar las diferencias de grupo:
- Diagrama de caja para graficar los datos agrupados por las combinaciones de los niveles de los dos factores.
- Diagrama de interacción de dos vías, que grafica la media (u otro resumen) de la respuesta para combinaciones de factores de dos vías, ilustrando así posibles interacciones.
Para usar gráficos base de R lee esto: R base graphs. Aquí, usaremos el paquete R ggpubr
para una fácil visualización de datos basada en ggplot2
.
Calcular el test ANOVA de dos vías
Queremos saber si la longitud del diente depende de supp
y dose
.
La función R aov()
se puede usar para responder esta pregunta. La función summary.aov()
se utiliza para resumir el modelo de análisis de varianza.
El resultado incluye las columnas F value y Pr(>F) correspondientes al valor p del test.
De la tabla ANOVA podemos concluir que tanto supp
como dose
son estadísticamente significativos. dose
es la variable de factor más significativa. Estos resultados nos llevarían a creer que cambiar los métodos de administración (supp
) o la dosis de vitamina C, impactará significativamente la longitud media del diente.
El modelo ajustado anterior se llama modelo aditivo. Hace una suposición de que las dos variables de factor son independientes. Si crees que estas dos variables podrían interactuar para crear un efecto sinérgico, reemplaza el símbolo de más (+) por un asterisco (*), de la siguiente manera.
Se puede ver que los dos efectos principales (supp
y dose
) son estadísticamente significativos, así como su interacción (marcada como supp:dose
).
Nota que, en la situación donde la interacción no es significativa deberías usar el modelo aditivo.
Interpretar los resultados
De los resultados del ANOVA, puedes concluir lo siguiente, basado en los valores p y un nivel de significancia de 0.05:
- El valor p de
supp
es 0.000429 (significativo), lo que indica que los niveles desupp
están asociados con una longitud del diente significativamente diferente. - El valor p de
dose
es < 2e-16 (significativo), lo que indica que los niveles dedose
están asociados con una longitud del diente significativamente diferente. - El valor p para la interacción entre
supp*dose
es 0.02 (significativo), lo que indica que las relaciones entredose
y la longitud del diente dependen del métodosupp
.
Calcular algunas estadísticas resumidas
Calcula la media y la desviación estándar por grupos usando el paquete R dplyr
:
También es posible usar la función model.tables()
de la siguiente manera:
Comparaciones múltiples por pares entre las medias de grupos
En el test ANOVA, un valor p significativo indica que algunas de las medias de grupo son diferentes, pero no sabemos qué pares de grupos son diferentes.
Es posible realizar comparaciones múltiples por pares, para determinar si la diferencia de medias entre pares específicos de grupos es estadísticamente significativa.
Comparaciones múltiples de Tukey
Dado que el test ANOVA es significativo, podemos calcular Tukey HSD (Diferencias Significativas Honestamente de Tukey, función R: TukeyHSD()
) para realizar comparaciones múltiples por pares entre las medias de grupos. La función TukeyHSD()
toma el ANOVA ajustado como argumento.
No necesitamos realizar el test para la variable “supp” porque solo tiene dos niveles, los cuales ya se ha demostrado que son significativamente diferentes mediante el test ANOVA. Por lo tanto, el test Tukey HSD se realizará solo para la variable de factor “dose”.
Se puede ver del resultado, que todas las comparaciones por pares son significativas con un valor p ajustado < 0.05.
Comparaciones múltiples usando el paquete multcomp
Es posible usar la función glht()
[en el paquete multcomp] para realizar procedimientos de comparación múltiple para un ANOVA. glht
significa pruebas de hipótesis lineales generales. El formato simplificado es el siguiente:
glht(model, lincft)
model
: un modelo ajustado, por ejemplo, un objeto devuelto poraov()
.lincft()
: una especificación de las hipótesis lineales a ser probadas. Las comparaciones múltiples en modelos ANOVA se especifican por objetos devueltos de la funciónmcp()
.
Usa glht()
para realizar comparaciones múltiples por pares:
Test t por pares
La función pairwise.t.test()
también se puede usar para calcular comparaciones por pares entre niveles de grupo con correcciones para pruebas múltiples.
Puedes ver los métodos de ajuste disponibles en la documentación de R ?p.adjust.methods
, los cuales incluyen: c("holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none")
Visualizar los resultados y agregar p-valores a los gráficos
- Por último, podemos visualizar los resultados del ANOVA en un gráfico de caja y añadir los valores p calculados de las comparaciones múltiples por pares.
Gráfico de interacción
- Podemos usar la librería
effects
para visualizar la interacción entre los factores. El grafico de interacción muestra cómo los efectos de un factor varían en función de los niveles de otro factor. - Para esto, le pasamos el modelo ANOVA con interacción (
res.aov3
) a la funciónallEffects()
y luego lo graficamos conplot()
.