Cómo realizar un ANOVA bidireccional en R

Puedes opinar sobre este contenido:
  • 0
  • 0
  • 0
  • 0

Actualizado el 17 de julio de 2024, por Luis Benites.

Se utiliza un ANOVA de dos factores («análisis de varianza») para determinar si existe o no una diferencia estadísticamente significativa entre las medias de tres o más grupos independientes que se han dividido en dos factores.

Este tutorial explica cómo realizar un ANOVA bidireccional en R.

Ejemplo: ANOVA bidireccional en R

Supongamos que queremos determinar si la intensidad del ejercicio y el sexo afectan la pérdida de peso. En este caso, los dos factores que estamos estudiando son el ejercicio y el género y la variable de respuesta es la pérdida de peso, medida en libras.

Podemos realizar un ANOVA bidireccional para determinar si el ejercicio y el género afectan la pérdida de peso y para determinar si existe una interacción entre el ejercicio y el género en la pérdida de peso.

Reclutamos a 30 hombres y 30 mujeres para participar en un experimento en el que asignamos aleatoriamente a 10 de cada uno para seguir un programa de no ejercicio, ejercicio ligero o ejercicio intenso durante un mes.

El siguiente código crea el marco de datos con el que trabajaremos:

#Haga que este ejemplo sea reproducible
 set.seed (10)

#create data frame
 data <- data.frame (gender = rep (c ("Male", "Female"), each = 30),
                   ejercicio = rep (c ("Ninguno", "Ligero", "Intenso"), cada uno = 10, veces = 2),
                   pérdida_peso = c (runif (10, -3, 3), runif (10, 0, 5), runif (10, 5, 9),
                                   runif (10, -4, 2), runif (10, 0, 3), runif (10, 3, 8)))

#ver las primeras seis filas del encabezado del marco de datos
 (datos)

# género ejercicio pérdida de peso
# 1 Masculino Ninguno 0.04486922
# 2 Masculino Ninguno -1.15938896
# 3 Masculino Ninguno -0.43855400
# 4 Masculino Ninguno 1.15861249
# 5 Masculino Ninguno -2.48918419
# 6 Masculino Ninguno -1.64738030

#ver cuántos participantes hay en cada grupo
tabla (datos $ género, datos $ ejercicio)

# Luz intensa Ninguno
# Femenino 10 10 10
# Hombre 10 10 10

Explorando los datos

Antes incluso de ajustar el modelo ANOVA bidireccional, podemos obtener una mejor comprensión de los datos al encontrar la media y la desviación estándar de la pérdida de peso para cada uno de los seis grupos de tratamiento utilizando el paquete dplyr :

#cargar paquete dplyr
biblioteca (dplyr)

# encontrar la desviación estándar y media de la pérdida de peso para cada grupo de tratamiento
datos%>%
  group_by (sexo, ejercicio)%>%
   resumir (media = media (pérdida de peso),
            sd = sd (pérdida_de_peso))

# A tibble: 6 x 4
# Grupos: género [2]
# ejercicio de género significa sd
#          
# 1 Femenino Intenso 5.31 1.02 
# 2 Mujer Ligera 0.920 0.835
# 3 Femenino Ninguno -0,501 1,77 
# 4 Masculino Intenso 7.37 0.928
# 5 Hombre Ligero 2.13 1.22 
# 6 Masculino Ninguno -0,698 1,12 

También podemos crear un diagrama de caja para cada uno de los seis grupos de tratamiento para visualizar la distribución de la pérdida de peso para cada grupo:

# establecer márgenes para que las etiquetas de los ejes en el diagrama de caja no se corten
par (mar = c (8, 4.1, 4.1, 2.1))

#create boxplots
 boxplot (weight_loss ~ gender: ejercicio,
datos = datos,
main = "Distribución de la pérdida de peso por grupo",
xlab = "Grupo",
ylab = "Pérdida de peso",
col = "azul acero",
border = "negro", 
las = 2 #haga que las etiquetas del eje x sean perpendiculares 
)

Diagramas de caja en R para ANOVA bidireccional

De inmediato podemos ver que los dos grupos que participaron en ejercicio intenso parecen tener mayores valores de pérdida de peso. También podemos ver que los hombres tienden a tener valores de pérdida de peso más altos para los grupos de ejercicio intenso y ligero en comparación con las mujeres.

A continuación, ajustaremos el modelo ANOVA bidireccional a nuestros datos para ver si estas diferencias visuales son realmente significativas desde el punto de vista estadístico.

Ajuste del modelo ANOVA bidireccional

La sintaxis general para ajustar un modelo ANOVA bidireccional en R es la siguiente:

aov (variable de respuesta ~ predictor_variable1 * predictor_variable2, data = conjunto de datos)

Tenga en cuenta que el * entre las dos variables predictoras indica que también queremos probar un efecto de interacción entre las dos variables predictoras.

En nuestro ejemplo, podemos usar el siguiente código para ajustar el modelo ANOVA bidireccional, usando weight_loss como la variable de respuesta y género y ejercicio como nuestras dos variables predictoras.

Luego podemos usar la función summary () para ver el resultado de nuestro modelo:

#ajuste el modelo ANOVA bidireccional
modelo <- aov (pérdida de peso ~ género * ejercicio, datos = datos)

#ver el resultado del modelo
resumen (modelo)

# Df Suma Sq Valor medio Sq F Pr (> F)    
# género 1 15,8 15,80 11,197 0,0015 ** 
# ejercicio 2505,6 252,78 179,087 <2e-16 ***
#género: ejercicio 2 13,0 6,51 4,615 0,0141 *  
#Residuos 54 76,2 1,41                   
# ---
#Signif. códigos: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0,1 pulg. 1

A partir del resultado del modelo, podemos ver que el género , el ejercicio y la interacción entre las dos variables son estadísticamente significativos al nivel de significancia de 0.05.

Comprobación de los supuestos del modelo

Antes de continuar, debemos verificar que se cumplan las suposiciones de nuestro modelo para que nuestros resultados del modelo sean confiables. En particular, un ANOVA bidireccional asume:

1. Independencia : las observaciones de cada grupo deben ser independientes entre sí. Dado que utilizamos un diseño aleatorio , esta suposición debe cumplirse para que no tengamos que preocuparnos demasiado por esto.

2. Normalidad : la variable dependiente debe tener una distribución aproximadamente normal para cada combinación de los grupos de los dos factores.

Una forma de comprobar este supuesto es crear un histograma de los residuos del modelo. Si los residuos se distribuyen aproximadamente normalmente, se debe cumplir este supuesto.

#definir residuos del modelo
 resid <- residuales del modelo $

#create histogram of residuals
 hist (resid, main = "Histogram of Residuals", xlab = "Residuals", col = "steelblue")

Histograma de residuos para ANOVA bidireccional

Los residuales se distribuyen aproximadamente normalmente, por lo que podemos suponer que se cumple el supuesto de normalidad.

3. Igualdad de varianza : las varianzas de cada grupo son iguales o aproximadamente iguales.

Una forma de verificar esta suposición es realizar una prueba de Levene para la igualdad de varianzas utilizando el paquete del automóvil :

#cargar paquete de coche
biblioteca (coche)

#conducir la prueba de Levene para la igualdad de varianzas
leveneTest (pérdida de peso ~ género * ejercicio, datos = datos)

# Prueba de Levene para la homogeneidad de la varianza (centro = mediana)
# Df F valor Pr (> F)
#grupo 5 1.8547 0.1177
# 54  

Dado que el valor p de la prueba es mayor que nuestro nivel de significancia de 0.05, podemos asumir que nuestro supuesto de igualdad de varianzas entre grupos se cumple.

Análisis de las diferencias de tratamiento

Una vez que hayamos verificado que se cumplen los supuestos del modelo, podemos realizar una prueba post hoc para determinar exactamente qué grupos de tratamiento difieren entre sí.

Para nuestra prueba post hoc, usaremos la función TukeyHSD () para realizar la Prueba de Tukey para comparaciones múltiples:

# realizar la prueba de Tukey para comparaciones múltiples
 TukeyHSD (modelo, nivel conf. = .95)

# Tukey comparaciones múltiples de medias
# 95% de nivel de confianza familiar
#
#Fit: aov (fórmula = pérdida de peso ~ género * ejercicio, datos = datos)
#
# $ género
# diff lwr upr p adj
# Hombre-Mujer 1.026456 0.4114451 1.641467 0.0014967
#
# $ ejercicio
# diff lwr upr p adj
# Ligero-Intenso -4.813064 -5.718493 -3.907635 0.0e + 00
# Ninguno-Intenso -6.938966 -7.844395 -6.033537 0.0e + 00
# Sin luz -2.125902 -3.031331 -1.220473 1.8e-06
#
# $ `género: ejercicio`
# diff lwr upr p adj
# Masculino: Intenso-Femenino: Intenso 2.0628297 0.4930588 3.63260067 0.0036746
# Femenino: Ligero-Femenino: Intenso -4.3883563 -5.9581272 -2.81858535 0.0000000
# Masculino: Ligero-Femenino: Intenso -3.1749419 -4.7447128 -1.60517092 0.0000027
# Femenino: Ninguno-Femenino: Intenso -5.8091131 -7.3788841 -4.23934219 0.0000000
# Masculino: Ninguno-Femenino: Intenso -6.0059891 -7.5757600 -4.43621813 0.0000000
# Femenino: Ligero-Masculino: Intenso -6.4511860 -8.0209570 -4.88141508 0.0000000
# Masculino: Ligero-Masculino: Intenso -5.2377716 -6.8075425 -3.66800066 0.0000000
# Femenino: Ninguno-Masculino: Intenso -7.8719429 -9.4417138 -6.30217192 0.0000000
# Masculino: Ninguno-Masculino: Intenso -8.0688188 -9.6385897 -6.49904786 0.0000000
# Masculino: Ligero-Hembra: Ligero 1.2134144 -0.3563565 2.78318536 0.2185439
# Femenino: Ninguno-Femenino: Ligero -1.4207568 -2.9905278 0.14901410 0.0974193
# Masculino: Ninguno-Femenino: Ligero -1.6176328 -3.1874037 -0.04786184 0.0398106
# Femenino: Ninguno-Masculino: Ligero -2.6341713 -4.2039422 -1.06440032 0.0001050
# Masculino: Ninguno-Masculino: Ligero -2.8310472 -4.4008181 -1.26127627 0.0000284
# Masculino: Ninguno-Femenino: Ninguno -0.1968759 -1.7666469 1.37289500 0.9990364

El valor p indica si existe o no una diferencia estadísticamente significativa entre cada grupo.

Por ejemplo, en la última fila de arriba vemos que el grupo de hombres sin ejercicio no experimentó una diferencia estadísticamente significativa en la pérdida de peso en comparación con el grupo de mujeres sin ejercicio (valor de p: 0,990364).

También podemos visualizar los intervalos de confianza del 95% que resultan de la prueba de Tukey usando la función plot () en R:

# establecer márgenes de eje para que las etiquetas no se corten
 par (mar = c (4.1, 13, 4.1, 2.1))

#crear intervalo de confianza para cada gráfica de comparación
 (TukeyHSD (modelo, nivel conf. = .95), las = 2)

Intervalos de confianza de comparación múltiple en R

Informe de los resultados del ANOVA bidireccional

Por último, podemos informar los resultados del ANOVA bidireccional de tal manera que resuma los hallazgos:

Se realizó un ANOVA de dos vías para examinar los efectos del sexo ( masculino, femenino) y el régimen de ejercicio (ninguno, ligero, intenso) sobre la pérdida de peso (medida en libras). Hubo una interacción estadísticamente significativa entre los efectos del género y el ejercicio sobre la pérdida de peso (F (2, 54) = 4.615, p = 0.0141).Se llevaron a cabo pruebas post hoc HSD de Tukey.

Para los hombres, un régimen de ejercicio intenso conduce a una pérdida de peso significativamente mayor en comparación con un régimen ligero (p <.0001) y sin régimen de ejercicio (p <.0001). Además, para los hombres, un régimen ligero conduce a una pérdida de peso significativamente mayor en comparación con ningún régimen de ejercicio (p <0,0001).

Para las mujeres, un régimen de ejercicio intenso conduce a una pérdida de peso significativamente mayor en comparación con un régimen ligero (p <.0001) y sin régimen de ejercicio (p <.0001).

Se realizaron controles de normalidad y la prueba de Levene para verificar que se cumplieran los supuestos de ANOVA.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:

La ayuda no cuesta nada

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

Cuando queremos comprender la relación entre una sola variable predictora y una variable de respuesta, a menudo usamos regresión lineal…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!