En esta ocasión haremos un ejemplo de ANOVA de una vía, en la que analizaremos el siguiente ejercicio:

Bajo nuevas reformas educativas aplicadas recientemente se requiere conocer el nivel académico de los institutos educativos de una ciudad para clasificarlos, para lo que se aplicó un examen estandarizado “ENLACE” a los alumnos de los principales colegios de la ciudad, del total de estudiantes entre los colegios se escogió una muestra aleatoria y se graficaron las calificaciones promedio de los alumnos.

Primero carguemos nuestro espacio de trabajo:

setwd("C:/Users/danie/Desktop/School/Tareas/Estadística/Presentación ANOVA")

#### Cargamos nuestras paqueterías ####
library(dplyr)
library(ggpubr)
library(ggplot2)
library(psych)
library(knitr)
library(broom)
library(car)
library(tidyverse)

colegios <- read.table("Calificaciones.csv", row.names = "id", header= TRUE, sep = ",")

glimpse(colegios)
## Rows: 40
## Columns: 2
## $ calificaciones <dbl> 5.5, 5.2, 5.9, 7.1, 6.2, 5.9, 5.3, 6.2, 6.1, 7.2, 5.5, …
## $ instituto      <chr> "A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B", …

¿Se cumplen los supuestos para ANOVA?

####Para demostrar independencia de datos

durbinWatsonTest(aov(calificaciones ~ instituto, data = colegios)) |> 
  tidy() |> 
  kable() 
statistic p.value autocorrelation method alternative
1.576989 0.044 0.1881788 Durbin-Watson Test two.sided
#### Normalidad

shapiro.test(colegios$calificaciones) |> 
  tidy() |> 
  kable() 
statistic p.value method
0.9609726 0.1808055 Shapiro-Wilk normality test
#### Histograma

hist(colegios$calificaciones, 
     main = "Distribución de Calificaciones", 
     xlab = "Figura 1: Calificaciones de los estudiantes durante la prueba Enlace", 
     ylab = "Calificaciones", 
     col = "lightblue", 
     border = "black",
     probability = TRUE) 

media <- mean(colegios$calificaciones, na.rm = TRUE)
desv <- sd(colegios$calificaciones, na.rm = TRUE)  

x <- seq(min(colegios$calificaciones, na.rm = TRUE), 
         max(colegios$calificaciones, na.rm = TRUE), 
         length = 100)

curve(dnorm(x, mean = media, sd = desv), 
      col = "red", 
      lwd = 2, 
      add = TRUE)

#### Homogeneidad

bartlett.test(calificaciones ~ instituto, data = colegios)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  calificaciones by instituto
## Bartlett's K-squared = 3.6487, df = 4, p-value = 0.4556

Descriptivos y distribución de las varianzas

group_by(colegios, instituto) %>%
  summarise(
    count = n(),
    mean = mean(calificaciones, na.rm = TRUE),
    sd = sd(calificaciones, na.rm = TRUE)
  )
## # A tibble: 5 × 4
##   instituto count  mean    sd
##   <chr>     <int> <dbl> <dbl>
## 1 A             8  5.91 0.613
## 2 B             8  6.92 1.04 
## 3 C             8  5.82 0.801
## 4 D             8  4.95 1.14 
## 5 E             8  5.95 0.695
#### Boxplot
boxplot(calificaciones ~ instituto, data = colegios,
        xlab = "Figura 2: Comparativo de las calificaciones de alumnos para la prueba ENLACE", ylab = "Calificaciones",
        frame = FALSE, col = c("#ff395a","#62bd41","#f6a49c", "#ffde20", "#527b08"))

Análisis de varianza (ANOVA) de un factor

anova <- aov(calificaciones ~ instituto, data = colegios)

summary(anova)
##             Df Sum Sq Mean Sq F value  Pr(>F)   
## instituto    4  15.69   3.921   5.031 0.00261 **
## Residuals   35  27.28   0.779                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Con el valor F=0.00261 calculado podemos rechazar H0 y por lo tanto, deducir que si existen diferencias significativas entre las medias en las calificaciones de la prueba, sin embargo, no conocemos aún que grupo o grupos varían entre sí, por lo que realizaremos una prueba post-Hoc de Tukey para analizar las diferencias entre grupos

Prueba post-Hoc

TukeyHSD(aov(calificaciones ~ instituto, data = colegios)) |> 
  tidy() |> 
  kable()
term contrast null.value estimate conf.low conf.high adj.p.value
instituto B-A 0 1.0125 -0.2565981 2.2815981 0.1710418
instituto C-A 0 -0.0875 -1.3565981 1.1815981 0.9996377
instituto D-A 0 -0.9625 -2.2315981 0.3065981 0.2107900
instituto E-A 0 0.0375 -1.2315981 1.3065981 0.9999876
instituto C-B 0 -1.1000 -2.3690981 0.1690981 0.1156449
instituto D-B 0 -1.9750 -3.2440981 -0.7059019 0.0007001
instituto E-B 0 -0.9750 -2.2440981 0.2940981 0.2002714
instituto D-C 0 -0.8750 -2.1440981 0.3940981 0.2954823
instituto E-C 0 0.1250 -1.1440981 1.3940981 0.9985225
instituto E-D 0 1.0000 -0.2690981 2.2690981 0.1804018

Interpretación de los datos

Concluimos que el nivel académico de los colegios A, B, C y E no tienen diferencia significativa entre si, es decir, tienen un nivel académico similar, sin embargo, el nivel del colegio D varía de los demás institutos, especialmente del nivel del colegio B, donde se ve una significancia bastante notable, lo cual a su vez nos indica que el colegio B sobresale un poco sobre el nivel de las demás escuelas.