Tutorial de ANOVA R: unidireccional y bidireccional (con ejemplos)
ยฟQuรฉ es ANOVA?
Anรกlisis de variaciรณn (ANOVA) es una tรฉcnica estadรญstica que se utiliza habitualmente para estudiar las diferencias entre las medias de dos o mรกs grupos. La prueba ANOVA se centra en las diferentes fuentes de variaciรณn de una variable tรญpica. La ANOVA en R proporciona principalmente evidencia de la existencia de la igualdad de medias entre los grupos. Este mรฉtodo estadรญstico es una extensiรณn de la prueba t. Se utiliza en una situaciรณn en la que la variable factorial tiene mรกs de un grupo.
ANOVA unidireccional
Hay muchas situaciones en las que es necesario comparar la media entre varios grupos. Por ejemplo, el departamento de marketing quiere saber si tres equipos tienen el mismo rendimiento de ventas.
- Equipo: factor de 3 niveles: A, B y C
- Venta: una medida de desempeรฑo
La prueba ANOVA puede determinar si los tres grupos tienen rendimientos similares.
Para aclarar si los datos provienen de la misma poblaciรณn, se puede realizar una Anรกlisis de varianza de una sola vรญa (ANOVA unidireccional en adelante). Esta prueba, como cualquier otra prueba estadรญstica, proporciona evidencia de si la hipรณtesis H0 puede aceptarse o rechazarse.
Hipรณtesis en la prueba ANOVA de una vรญa
- H0: Las medias entre grupos son idรฉnticas
- H3: Al menos, la media de un grupo es diferente
En otras palabras, la hipรณtesis H0 implica que no hay evidencia suficiente para demostrar que la media de un grupo (factor) es diferente de otro.
Esta prueba es similar a la prueba t, aunque se recomienda la prueba ANOVA en situaciones con mรกs de dos grupos. Excepto que la prueba t y la ANOVA brindan resultados similares.
Supuestos
Suponemos que cada factor se muestra aleatoriamente, es independiente y proviene de una poblaciรณn distribuida normalmente con varianzas desconocidas pero iguales.
Interpretar la prueba ANOVA
El estadรญstico F se utiliza para probar si los datos provienen de poblaciones significativamente diferentes, es decir, medias muestrales diferentes.
Para calcular el estadรญstico F, es necesario dividir el variabilidad entre grupos sobre la variabilidad dentro del grupo.
La funciรณn entre grupos La variabilidad refleja las diferencias entre los grupos dentro de toda la poblaciรณn. Mire los dos grรกficos siguientes para comprender el concepto de varianza entre grupos.
El grรกfico de la izquierda muestra muy poca variaciรณn entre los tres grupos, y es muy probable que las tres medias tiendan a la total media (es decir, media de los tres grupos).
El grรกfico de la derecha muestra tres distribuciones muy separadas y ninguna de ellas se superpone. Existe una alta probabilidad de que la diferencia entre la media total y la media de los grupos sea grande.
La funciรณn dentro del grupo la variabilidad considera la diferencia entre los grupos. La variaciรณn proviene de las observaciones individuales; Algunos puntos pueden ser totalmente diferentes de lo que significa el grupo. El dentro del grupo La variabilidad recoge este efecto y se refiere al error de muestreo.
Para comprender visualmente el concepto de variabilidad dentro del grupo, observe el siguiente grรกfico.
La parte izquierda traza la distribuciรณn de tres grupos diferentes. Aumentรณ la dispersiรณn de cada muestra y estรก claro que la variaciรณn individual es grande. La prueba F disminuirรก, lo que significa que usted tiende a aceptar la hipรณtesis nula.
La parte derecha muestra exactamente las mismas muestras (media idรฉntica) pero con menor variabilidad. Conduce a un aumento de la prueba F y tiende a favor de la hipรณtesis alternativa.
Puede utilizar ambas medidas para construir el estadรญstico F. Es muy intuitivo comprender el estadรญstico F. Si el numerador aumenta, significa que la variabilidad entre grupos es alta y es probable que los grupos de la muestra provengan de distribuciones completamente diferentes.
En otras palabras, un estadรญstico F bajo indica poca o ninguna diferencia significativa entre el promedio del grupo.
Ejemplo de prueba ANOVA unidireccional
Utilizarรก el conjunto de datos de veneno para implementar la prueba ANOVA unidireccional. El conjunto de datos contiene 48 filas y 3 variables:
- Tiempo: Tiempo de supervivencia del animal.
- veneno: Tipo de veneno utilizado: nivel de factor: 1,2 y 3
- tratar: Tipo de tratamiento utilizado: nivel de factor: 1,2 y 3
Antes de comenzar a calcular la prueba ANOVA, debe preparar los datos de la siguiente manera:
- Paso 1: importar los datos
- Paso 2: eliminar la variable innecesaria
- Paso 3: convertir la variable veneno como nivel ordenado
library(dplyr) PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/poisons.csv" df <- read.csv(PATH) %>% select(-X) %>% mutate(poison = factor(poison, ordered = TRUE)) glimpse(df)
Salida:
## Observations: 48 ## Variables: 3 ## $ time <dbl> 0.31, 0.45, 0.46, 0.43, 0.36, 0.29, 0.40, 0.23, 0.22, 0... ## $ poison <ord> 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2... ## $ treat <fctr> A, A, A, A, A, A, A, A, A, A, A, A, B, B, B, B, B, B, ...
Nuestro objetivo es probar la siguiente suposiciรณn:
- H0: No hay diferencia en el tiempo promedio de supervivencia entre los grupos.
- H3: El promedio del tiempo de supervivencia es diferente para al menos un grupo.
En otras palabras, se quiere saber si existe una diferencia estadรญstica entre la media del tiempo de supervivencia segรบn el tipo de veneno administrado al conejillo de indias.
Procederรก de la siguiente manera:
- Paso 1: Verifique el formato de la variable veneno
- Paso 2: Imprima el resumen estadรญstico: recuento, media y desviaciรณn estรกndar
- Paso 3: Dibuje un diagrama de caja
- Paso 4: Calcule la prueba ANOVA unidireccional
- Paso 5: Ejecutar una prueba t por pares
Paso 1) Puedes comprobar el nivel de veneno con el siguiente cรณdigo. Deberรญas ver tres valores de caracteres porque los conviertes en factor con el verbo mutate.
levels(df$poison)
Salida:
## [1] "1" "2" "3"
Paso 2) Calcula la media y la desviaciรณn estรกndar.
df % > % group_by(poison) % > % summarise( count_poison = n(), mean_time = mean(time, na.rm = TRUE), sd_time = sd(time, na.rm = TRUE) )
Salida:
## # A tibble: 3 x 4 ## poison count_poison mean_time sd_time ## <ord> <int> <dbl> <dbl> ## 1 1 16 0.617500 0.20942779 ## 2 2 16 0.544375 0.28936641 ## 3 3 16 0.276250 0.06227627
Paso 3) En el paso tres, puedes comprobar grรกficamente si hay una diferencia entre la distribuciรณn. Tenga en cuenta que incluye el punto nervioso.
ggplot(df, aes(x = poison, y = time, fill = poison)) +
geom_boxplot() +
geom_jitter(shape = 15,
color = "steelblue",
position = position_jitter(0.21)) +
theme_classic()
Salida:
Paso 4) Puede ejecutar la prueba ANOVA unidireccional con el comando aov. La sintaxis bรกsica de una prueba ANOVA es:
aov(formula, data) Arguments: - formula: The equation you want to estimate - data: The dataset used
La sintaxis de la fรณrmula es:
y ~ X1+ X2+...+Xn # X1 + X2 +... refers to the independent variables y ~ . # use all the remaining variables as independent variables
Puedes responder a nuestra pregunta: ยฟExiste alguna diferencia en el tiempo de supervivencia del conejillo de indias, conociendo el tipo de veneno administrado?
Tenga en cuenta que se recomienda almacenar el modelo y utilizar la funciรณn resumen() para obtener una mejor impresiรณn de los resultados.
anova_one_way <- aov(time~poison, data = df) summary(anova_one_way)
Explicaciรณn del cรณdigo
- aov(tiempo ~ veneno, datos = df): Ejecute la prueba ANOVA con la siguiente fรณrmula
- summary(anova_one_way): Imprime el resumen de la prueba
Salida:
## Df Sum Sq Mean Sq F value Pr(>F) ## poison 2 1.033 0.5165 11.79 7.66e-05 *** ## Residuals 45 1.972 0.0438 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El valor p es inferior al umbral habitual de 0.05. Estรก seguro de decir que existe una diferencia estadรญstica entre los grupos, indicada por el "*".
Comparaciรณn por pares
La prueba ANOVA unidireccional no informa quรฉ grupo tiene una media diferente. En su lugar, puede realizar una prueba de Tukey con la funciรณn TukeyHSD().
TukeyHSD(anova_one_way)
Salida:
ANOVA bidireccional
Una prueba ANOVA de dos vรญas agrega otra variable de grupo a la fรณrmula. Es idรฉntica a la prueba ANOVA de una vรญa, aunque la fรณrmula cambia ligeramente:
y=x1+x2
con es una variable cuantitativa y y son variables categรณricas.
Hipรณtesis en la prueba ANOVA de dos vรญas
- H0: Las medias son iguales para ambas variables (es decir, variable de factor)
- H3: Las medias son diferentes para ambas variables
Agrega la variable de tratamiento a nuestro modelo. Esta variable indica el tratamiento que se le da al cuy. Te interesa ver si existe una dependencia estadรญstica entre el veneno y el tratamiento que se le da a la cobaya.
Ajustamos nuestro cรณdigo agregando tratamiento con la otra variable independiente.
anova_two_way <- aov(time~poison + treat, data = df) summary(anova_two_way)
Salida:
## Df Sum Sq Mean Sq F value Pr(>F) ## poison 2 1.0330 0.5165 20.64 5.7e-07 *** ## treat 3 0.9212 0.3071 12.27 6.7e-06 *** ## Residuals 42 1.0509 0.0250 ## ---
Puede concluir que tanto el veneno como el tratamiento son estadรญsticamente diferentes de 0. Puede rechazar la hipรณtesis NULA y confirmar que cambiar el tratamiento o el veneno afecta el tiempo de supervivencia.
Resumen
Podemos resumir la prueba en la siguiente tabla:
| Prueba | Cรณdigo | Hipรณtesis | P-valor |
|---|---|---|---|
| ANOVA de una vรญa |
aov(y ~ X, data = df) |
H3: El promedio es diferente para al menos un grupo | 0.05 |
| Por parejas |
TukeyHSD(ANOVA summary) |
0.05 | |
| ANOVA de dos vรญas |
aov(y ~ X1 + X2, data = df) |
H3: El promedio es diferente para ambos grupos | 0.05 |




