Cómo realizar un ANCOVA en R7 min lectura

Este tutorial proporciona un ejemplo de cómo realizar un ANCOVA en R.

HOLA, estas en Statologos la enciclopedia más grande de estadística aplicada en español, no olvides que tienes un potente buscador de información en el menú utilizalo sabiamente 😉

Ejemplo: ANCOVA en R

Realizaremos un ANCOVA para probar si el estudio de la técnica tiene o no un impacto en los puntajes de los exámenes mediante el uso de las siguientes variables:

  • Técnica de estudio : la variable independiente que nos interesa analizar
  • Calificación actual del alumno : la covariable que queremos tener en cuenta
  • Puntaje del examen : las variables de respuesta que nos interesa analizar

El siguiente conjunto de datos contiene información de 90 estudiantes que se dividieron al azar en tres grupos de 30.

El conjunto de datos muestra la técnica de estudio que usó cada estudiante (A, B o C) , su calificación actual en la clase cuando comenzaron a usar la técnica de estudio y la puntuación del examen que recibieron después de usar la técnica de estudio durante un mes para prepararse para el examen:

#Haga que este ejemplo sea reproducible 
semillas (10)

#create conjunto de datos
data <- data.frame (técnica = rep (c ("A", "B", "C"), cada uno = 30),
                   grado_actual = runif (90, 65, 95),
                   examen = c (runif (30, 80, 95), runif (30, 70, 95), runif (30, 70, 90)))

#ver las primeras seis líneas del conjunto de datos
cabeza (datos)

# técnica examen current_grade
# 1 A 80.22435 87.32759
# 2 A 74.20306 90.67114
# 3 A 77.80723 88.87902
# 4 A 85.79306 87.75735
# 5 A 67.55408 85.72442
# 6 A 71.76310 92.52167

Paso 1: Explore los datos

Antes de ajustar el modelo ANCOVA, primero debemos explorar los datos para comprenderlos mejor y verificar que no haya valores atípicos extremos que puedan sesgar los resultados.

Primero, podemos ver un resumen de cada variable en el conjunto de datos:

resumen (datos)

# técnica examen current_grade      
# A: 30 min. : 65,43 min. : 71,17  
# B: 30 1er Qu.:71.79 1er Qu.:77.27  
# C: 30 Mediana: 77,84 Mediana: 84,69  
# Media: 78,15 Media: 83,38  
# 3rd Qu.:83.65 3rd Qu.:89.22  
# Máx. : 93,84 Máx. : 94,76  

Podemos ver que cada valor para estudiar la técnica ( A, B y C) aparece 30 veces en los datos.

También podemos ver cómo se distribuyeron los puntajes actuales de los estudiantes al comienzo del estudio. La puntuación mínima de la clase fue de 65,43, la máxima de 93,84 y la media de 78,15.

Asimismo, podemos observar que la puntuación mínima recibida en el examen fue de 71,17, la máxima de 94,76 y la media de 83,38.

A continuación, podemos usar el paquete dplyr para encontrar fácilmente la media y la desviación estándar tanto de las calificaciones actuales como de los puntajes del examen para cada técnica de estudio:

#load dplyr
biblioteca (dplyr)

datos%>%
  group_by (técnica)%>%
   resume (mean_grade = mean (current_grade),
            sd_grade = sd (actual_grado),
            mean_exam = mean (examen),
            sd_exam = sd (examen))

# A tibble: 3 x 5
# técnica mean_grade sd_grade mean_exam sd_exam                      
# 1 A 79,0 7,00 88,5 3,88
# 2 B 78,5 8,33 81,8 7,62
# 3 C 76,9 8,24 79,9 5,71

Podemos ver que la media y las desviaciones estándar de la calificación actual para los estudiantes que usan cada técnica de estudio son aproximadamente similares.

También se puede observar que la puntuación media examen es notablemente superior para los estudiantes que utilizaron el estudio de la técnica Una comparación con las técnicas B y C .

También podemos visualizar la distribución de los puntajes de los exámenes según la técnica de estudio mediante el uso de diagramas de caja :

diagrama de caja (examen ~ técnica,
datos = datos,
main = "Puntaje del examen por técnica de estudio",
xlab = "Técnica de estudio",
ylab = "Puntaje del examen",
col = "azul acero",
border = "negro"
)

Comprobación de los supuestos de ANCOVA con diagramas de caja

De manera similar, también podemos usar diagramas de caja para visualizar la distribución de las calificaciones actuales en función de la técnica de estudio:

boxplot (actual_grado ~ técnica,
datos = datos,
main = "Calificación actual por técnica de estudio",
xlab = "Técnica de estudio",
ylab = "Calificación actual",
col = "azul acero",
border = "negro"
)

Distribución usando diagramas de caja en R

Paso 2: Verifique los supuestos del modelo

Una vez que hemos realizado una exploración básica de datos y estamos familiarizados con los datos, debemos verificar que se cumplan las siguientes suposiciones para ANCOVA:

  • La covariable y el tratamiento son independientes ; necesitamos verificar que la covariable ( grado actual) y el tratamiento (técnica de estudio) sean independientes entre sí, ya que agregar un término de covariable en el modelo solo tiene sentido si la covariable y el tratamiento actúan independientemente de la variable de respuesta ( examen ).
  • Homogeneidad de varianza : necesitamos verificar que las varianzas entre los grupos sean iguales

Para verificar que la covariable y el tratamiento son independientes, podemos ejecutar un ANOVA usando el grado actual como variable de respuesta y la técnica de estudio como variable predictora:

#fit anova model
 anova_model <- aov (current_grade ~ técnica, datos = datos)
 #ver resumen del resumen del modelo anova
 (anova_model)

# Df Suma Sq Valor medio Sq F Pr (> F)
# técnica 2 74 37,21 0,599 0,552
#Residuales 87 5406 62.14    

El valor p es mayor que 0.05, por lo que la covariable ( grado actual) y el tratamiento ( técnica de estudio ) parecen ser independientes.

A continuación, para verificar que existe homogeneidad de varianza entre los grupos, podemos realizar la Prueba de Levene:

#cargar biblioteca de coches para realizar la prueba de Levene
biblioteca (coche)

#conduct Prueba de Levene
leveneTest (examen ~ técnica, datos = datos)

# Prueba de Levene para la homogeneidad de la varianza (centro = mediana)
# Df F valor Pr (> F)    
#grupo 2 9.4324 0.0001961 ***
# 87   

El valor p de la prueba es igual a .0001961, lo que indica que las varianzas entre los grupos no son iguales. Aunque podríamos intentar una transformación de los datos para corregir este problema, no nos preocuparemos demasiado por las diferencias en la varianza por el momento.

Paso 3: ajuste el modelo ANCOVA

A continuación, ajustaremos el modelo ANCOVA utilizando la puntuación del examen como variable de respuesta, estudiando la técnica como variable predictora (o «tratamiento») y la calificación actual como covariable.

Usaremos la función Anova () en el paquete del automóvil para hacerlo, solo para que podamos especificar que nos gustaría usar la suma de cuadrados de tipo III para el modelo, ya que la suma de cuadrados de tipo I depende del orden en que los predictores se ingresan en el modelo:

#cargar biblioteca de coches
biblioteca (coche)

#fit ANCOVA modelo
 ancova_model <- aov (examen ~ técnica + grado_actual, datos = datos)

#ver resumen del modelo
 Anova (ancova_model, type = "III")

#Respuesta: examen
# Suma Sq Df F valor Pr (> F)    
# (Intercepción) 7161.2 1 201.4621 <2.2e-16 ***
# técnica 1242.9 2 17.4830 4.255e-07 ***
#current_grade 12,3 1 0,3467 0,5576    
#Residuales 3057.0 86         

Podemos ver que el valor p para la técnica es extremadamente pequeño, lo que indica que estudiar la técnica tiene un efecto estadísticamente significativo en los puntajes de los exámenes, incluso después de controlar por la calificación actual.

Paso 4: Pruebas post hoc

Aunque los resultados de ANCOVA nos dijeron que estudiar la técnica tuvo un efecto estadísticamente significativo en los puntajes de los exámenes, necesitamos ejecutar pruebas post hoc para descubrir realmente qué técnicas de estudio difieren entre sí.

Para hacerlo, podemos usar la función glht () dentro del paquete multcomp en R para realizar la prueba de Tukey para múltiples comparaciones:

#cargar la biblioteca multcomp
biblioteca (multcomp)

#ajuste del modelo ANCOVA
 ancova_model <- aov (examen ~ técnica + grado_actual, datos = datos)

#definir las comparaciones post hoc para hacer
 postHocs <- glht (ancova_model, linfct = mcp (técnica = "Tukey"))

#ver un resumen del resumen de comparaciones post hoc
 (postHocs)

# Comparaciones múltiples de medias: contrastes de Tukey
#
#Ajuste: aov (fórmula = examen ~ técnica + grado_actual, datos = datos)
#
# Hipótesis lineales:
# Estimar Std. Valor t de error Pr (> | t |)    
#B - A == 0 -6,711 1,540 -4,358 0,000109 ***
#C - A == 0 -8.736 1.549 -5.640 <1e-04 ***
#C - B == 0 -2,025 1,545 -1,311 0,393089    

#ver los intervalos de confianza asociados con el confint de comparaciones múltiples
 (postHocs)

# Intervalos de confianza simultáneos
#
# Comparaciones múltiples de medias: contrastes de Tukey
#
#Ajuste: aov (fórmula = examen ~ técnica + grado_actual, datos = datos)
#
#Quantile = 2.3845
# 95% de nivel de confianza familiar
#
# Hipótesis lineales:
# Estimar lwr upr     
#B - A == 0 -6.7112 -10.3832 -3.0392
#C - A == 0 -8.7364 -12.4302 -5.0426
#C - B == 0 -2.0252 -5.7091 1.6588

A partir del resultado, podemos ver que hay una diferencia estadísticamente significativa (en α = .05) en los puntajes del examen entre estudiar la técnica A y estudiar la técnica B (valor de p: .000109), así como entre la técnica A y la técnica C ( valor p: <1e-04).

También podemos ver que hay no una diferencia estadísticamente significativa (al α = 0,05) entre las técnicas B y C .Los intervalos de confianza entre las técnicas también confirman estas conclusiones.

Por lo tanto, podemos concluir que el uso de la técnica de estudio A conduce a un puntaje de examen estadísticamente significativamente mayor para los estudiantes en comparación con las técnicas B y C , incluso después de controlar la calificación actual del estudiante en la clase.

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

Deja un comentario

Se utiliza un diagrama de caja para visualizar el resumen de cinco números de un conjunto de datos, que incluye:…
statologos comunidad-2

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

You have Successfully Subscribed!