Cómo realizar un ANOVA unidireccional en R

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

¿Qué es un ANOVA unidireccional?

Se utiliza un ANOVA de una vía («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.

Este tipo de prueba se llama ANOVA unidireccional porque estamos analizando cómo una variable predictora impacta una variable de respuesta. Si en cambio estuviéramos interesados ​​en cómo dos variables predictoras impactan en una variable de respuesta, podríamos realizar un ANOVA de dos vías .

Cómo realizar un ANOVA unidireccional en R

El siguiente ejemplo ilustra cómo realizar un ANOVA unidireccional en R.

Fondo

Suponga que queremos determinar si tres programas de ejercicio diferentes afectan la pérdida de peso de manera diferente. La variable predictora que estamos estudiando es el programa de ejercicios y la variable de respuesta es la pérdida de peso, medida en libras. Podemos realizar un ANOVA de una vía para determinar si existe una diferencia estadísticamente significativa entre la pérdida de peso resultante de los tres programas.

Reclutamos a 90 personas para que participen en un experimento en el que asignamos aleatoriamente a 30 personas para que sigan el programa A, el programa B o el programa C durante un mes.

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

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

#create marco de datos
data <- data.frame (programa = rep (c ("A", "B", "C"), cada uno = 30),
                   pérdida_de_peso = c (runif (30, 0, 3),
                                   runif (30, 0, 5),
                                   runif (30, 1, 7)))

#ver las primeras seis filas del marco de datos
head (data)
 
# program weight_loss
# 1 A 2.6900916
# 2 A 0,7965260
# 3 A 1.1163717
# 4 A 1.7185601
# 5 A 2.7246234
# 6 A 0.6050458

La primera columna del marco de datos muestra el programa en el que participó la persona durante un mes y la segunda columna muestra la pérdida de peso total que esa persona experimentó al final del programa, medida en libras.

Explorando los datos

Antes incluso de ajustar el modelo ANOVA unidireccional, 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 tres programas que utilizan 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 (programa)%>%
   resumir (media = media (pérdida de peso),
            sd = sd (pérdida_de_peso))

# A tibble: 3 x 3
# programa significa sd
#      
# 1 A 1,58 0,905
# 2 B 2.56 1.24 
# 3 C 4,13 1,57  

También podemos crear un diagrama de caja para cada uno de los tres programas para visualizar la distribución de la pérdida de peso para cada programa:

#create boxplots
 boxplot (programa de pérdida de peso,
datos = datos,
main = "Distribución de la pérdida de peso por programa",
xlab = "Programa",
ylab = "Pérdida de peso",
col = "azul acero",
border = "negro")

Diagramas de caja para la exploración de datos en R

Solo a partir de estos diagramas de caja podemos ver que la pérdida de peso promedio es más alta para los participantes en el Programa C y la pérdida de peso promedio es más baja para los participantes en el Programa A. También podemos ver que la desviación estándar (la «longitud» de la boxplot) para bajar de peso es bastante más alto en el Programa C en comparación con los otros dos programas.

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

Ajuste del modelo ANOVA unidireccional

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

aov (variable de respuesta ~ predictor_variable, data = conjunto de datos)

En nuestro ejemplo, podemos usar el siguiente código para ajustar el modelo ANOVA unidireccional, usando weight_loss como la variable de respuesta y program como nuestra variable predictora. Luego podemos usar la función summary () para ver el resultado de nuestro modelo:

#ajuste el modelo ANOVA unidireccional
modelo <- aov (programa de pérdida de peso ~, datos = datos)

#ver el resultado del modelo
resumen (modelo)

# Df Suma Sq Valor medio Sq F Pr (> F)    
#programa 2 98.93 49.46 30.83 7.55e-11 ***
#Residuos 87139,57 1,60                     
# ---
#Signif. códigos: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0,1 pulg. 1

A partir de la salida del modelo, podemos ver que el programa de variables predictoras es estadísticamente significativo al nivel de significancia de 0.05. En otras palabras, existe una diferencia estadísticamente significativa entre la pérdida de peso media que resulta de los tres programas.

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 unidireccional asume:

1. Independencia : las observaciones de cada grupo deben ser independientes entre sí. Dado que utilizamos un diseño aleatorio (es decir, asignamos a los participantes a los programas de ejercicios al azar), 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 nivel de la variable predictora.

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

Una forma de verificar los supuestos de normalidad e igual varianza es usar la función plot () , que produce cuatro gráficas de verificación del modelo. En particular, estamos más interesados ​​en las siguientes dos parcelas:

  • Residuales frente a ajustados : este gráfico muestra la relación entre los residuos y los valores ajustados. Podemos usar este gráfico para medir aproximadamente si la varianza entre los grupos es aproximadamente igual o no.
  • Gráfico QQ : este gráfico muestra los residuos estandarizados frente a los cuantiles teóricos. Podemos usar este gráfico para medir aproximadamente si se cumple o no el supuesto de normalidad.

El siguiente código se puede utilizar para producir estos gráficos de verificación de modelos:

trama (modelo)

Gráfico QQ en R

El gráfico QQ anterior nos permite verificar el supuesto de normalidad. Lo ideal sería que los residuos estandarizados cayeran a lo largo de la línea diagonal recta del gráfico. Sin embargo, en el gráfico anterior podemos ver que los residuos se desvían bastante de la línea hacia el principio y el final. Esta es una indicación de que nuestro supuesto de normalidad puede violarse.

Residuos vs parcela ajustada en R

El gráfico de Residuos vs Ajustado anterior nos permite verificar nuestro supuesto de varianzas iguales. Idealmente, nos gustaría ver que los residuos se distribuyen por igual para cada nivel de los valores ajustados. Podemos ver que los residuos están mucho más dispersos para los valores ajustados más altos, lo que es una indicación de que nuestro supuesto de varianzas iguales puede violarse.

Para probar formalmente varianzas iguales, podríamos probar la prueba de Levene usando el paquete del automóvil :

#cargar biblioteca de paquetes de
 coche (coche)

# realizar la prueba de Levene para la igualdad de varianzas
 leveneTest (weight_loss ~ program, data = data)

# Prueba de Levene para la homogeneidad de la varianza (centro = mediana)
# Df F valor Pr (> F)  
#grupo 2 4.1716 0.01862 *
# 87                  
# ---
#Signif. códigos: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0,1 pulg. 1

El valor p de la prueba es 0.01862 . Si usamos un nivel de significancia de 0.05, rechazaríamos la hipótesis nula de que las varianzas son iguales en los tres programas. Sin embargo, si usamos un nivel de significancia de 0.01, no rechazaríamos la hipótesis nula.

Aunque podríamos intentar transformar los datos para asegurarnos de que se cumplan nuestros supuestos de normalidad e igualdad de variaciones, por el momento no nos preocuparemos demasiado por esto.

Análisis de las diferencias de tratamiento

Una vez que hayamos verificado que los supuestos del modelo se cumplen (o se cumplen razonablemente), 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
#
#Ajuste: aov (fórmula = pérdida de peso ~ programa, datos = datos)
#
# $ programa
# diff lwr upr p adj
#BA 0.9777414 0.1979466 1.757536 0.0100545
#CA 2.5454024 1.7656076 3.325197 0.0000000
#CB 1,5676610 0,7878662 2,347456 0,0000199

El valor p indica si existe o no una diferencia estadísticamente significativa entre cada programa. Podemos ver en el resultado que hay una diferencia estadísticamente significativa entre la pérdida de peso promedio de cada programa al nivel de significancia de 0.05.

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

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

Gráfico de Tukey HSD para la diferencia de medias

Los resultados de los intervalos de confianza son consistentes con los resultados de las pruebas de hipótesis.

En particular, podemos ver que ninguno de los intervalos de confianza para la pérdida de peso media entre programas contiene el valor cero , lo que indica que hay una diferencia estadísticamente significativa en la pérdida media entre los tres programas. Esto es consistente con el hecho de que todos los valores p de nuestras pruebas de hipótesis están por debajo de 0.05.

Informe de los resultados del ANOVA de una vía

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

Se realizó un ANOVA de una vía para examinar los efectos del programa de ejercicio sobre la pérdida de peso (medido en libras). Hubo una diferencia estadísticamente significativa entre los efectos de los tres programas sobre la pérdida de peso (F (2, 87) = 30.83, p = 7.55e-11).Se llevaron a cabo pruebas post hoc HSD de Tukey.

La pérdida de peso media de los participantes del programa C es significativamente mayor que la pérdida de peso media de los participantes del programa B (p <0,0001).

La pérdida de peso media de los participantes del programa C es significativamente mayor que la pérdida de peso media de los participantes del programa A (p <0,0001).

Además, la pérdida de peso media de los participantes del programa B es significativamente mayor que la pérdida de peso media de los participantes del programa A (p = 0,01).

Lectura adicional:
Introducción al ANOVA unidireccional
Una guía para el uso de pruebas post hoc con ANOVA

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

Deja un comentario

El lenguaje de programación R ofrece dos funciones útiles para ver y eliminar objetos dentro de un espacio de trabajo…
statologos comunidad-2

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

You have Successfully Subscribed!