¿Qué es una prueba t?

Una prueba t, también conocida como prueba t de Student, es una técnica estadística para comparar las medias de uno o dos grupos usando la metodología de pruebas de hipótesis. Una prueba t puede usarse para determinar si el valor promedio de un grupo difiere de un valor de interés (prueba t de una muestra) o si las medias de dos grupos difieren entre sí (prueba t de muestras independientes o pareadas).

Desarrollo

  1. Definir el juego de hipótesis (\(H_o\) vs \(H_a\)) que quiera contrastar.
  2. Establecer un riesgo asumible de llegar a conclusiones erróneas (error tipo I, denotado por \(\alpha\) y típicamente de 5%).
  3. Calcular la estimación de la estadística de prueba usando sus datos y compárela con el cuantil teórico correspondiente de la distribución t.
  4. Finalmente, en función del resultado de la regla de decisión, p-value o intervalo de confianza, decidir si rechaza o no la hipótesis nula (\(H_o\)).

Declaración de paqueterias

library(tidyverse)
library(ggplot2)
library(car)

1.1 Comparación de medias de dos grupos

Utilizaremos la base de datos “msleep” de la paquetería ggplot2, la cual incluye las horas de sueño de los herbívoros y carnívoros. Nos interesa investigar si el promedio de horas de sueño de los herbívoros es estadísticamente diferente al de los carnívoros, para ello utilizaremos la prueba t

  • Estadísticos descriptivos
df <- ggplot2::msleep                  #Base de datos
datos <- df %>% 
  filter(vore %in% c("herbi", "carni"))  #Filtrando los dos grupos (herbívoros y carnívoros)
datos[, c( 6,3)]
## # A tibble: 51 × 2
##    sleep_total vore 
##          <dbl> <chr>
##  1        12.1 carni
##  2        14.4 herbi
##  3         4   herbi
##  4        14.4 herbi
##  5         8.7 carni
##  6        10.1 carni
##  7         3   herbi
##  8         5.3 herbi
##  9         9.4 herbi
## 10        12.5 herbi
## # … with 41 more rows
tapply(datos$sleep_total, datos$vore, summary)
## $carni
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    2.70    6.25   10.40   10.38   13.00   19.40 
## 
## $herbi
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.900   4.300  10.300   9.509  14.225  16.600
datos %>% 
  group_by(vore) %>% 
  summarize(mean = mean(sleep_total),
            sd = sd(sleep_total))
## # A tibble: 2 × 3
##   vore   mean    sd
##   <chr> <dbl> <dbl>
## 1 carni 10.4   4.67
## 2 herbi  9.51  4.88
  • Visualizando la distribución por grupos
datos %>%
  ggplot( aes(x=sleep_total, fill=vore )) +
  geom_histogram( color="#e9ecef", alpha=0.5, position = 'identity',bins = 10) +
  scale_fill_manual(values=c("#69b3a2", "#404080")) +
  labs(fill="")

datos %>%
  ggplot( aes(sleep_total, fill=vore,colour=vore)) + 
  geom_histogram(bins=10)+ facet_grid(vore~.)

¿Hay normalidad?

  • Con visualización
h <- filter(datos, vore == "herbi")
m_h<-mean(h$sleep_total)
std_h<-sqrt(var(h$sleep_total))
hist(h$sleep_total, xlab="Horas", ylab="Frecuencia", main="Distribución de horas de sueño herbívoros", prob=TRUE)
curve(dnorm(x, mean=m_h, sd=std_h), col="darkblue", add=TRUE)

c <- filter(datos, vore == "carni")
m_c<-mean(c$sleep_total)
std_c<-sqrt(var(c$sleep_total))
hist(c$sleep_total, xlab="Horas", ylab="Frecuencia", main="Distribución de horas de sueño carnívoros", prob=TRUE)
curve(dnorm(x, mean=m_c, sd=std_c), col="darkblue", add=TRUE)

  • Con Analítica
shapiro.test(h$sleep_total)        #Prueba de normalidad para herbívoros
## 
##  Shapiro-Wilk normality test
## 
## data:  h$sleep_total
## W = 0.89423, p-value = 0.004429
shapiro.test(c$sleep_total)        #Prueba de normalidad para carnívoros
## 
##  Shapiro-Wilk normality test
## 
## data:  c$sleep_total
## W = 0.97667, p-value = 0.8971
  • En el grupo herbívoros, SE RECHAZA \(H_0:\text{Hay normalidad}\), con la prueba analítica de Shapiro-Wilk, el método gráfico igualmente sugiere la falta de normalidad; Sin embargo, la prueba t es robusta al no cumplimiento de este supuesto cuando tenemos tamaños de muestra grande. Para el caso de carnívoros NO SE RECHAZA la normalidad.

¿Existe homogeneidad de varianzas?

  • Con visualización
datos %>%
  ggplot( aes(x=vore, y=sleep_total)) + 
  geom_boxplot()

  • Con analítica
datos %>%   
  leveneTest(sleep_total ~ vore, data = .)      #Prueba de levene
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value Pr(>F)
## group  1    0.91 0.3448
##       49

La visualización con boxplot es un poco incierta para la homogeneidad de varianzas, sin embargo, la prueba analítica de levene NO RECHAZA la igualdad de varianzas.

1.2 Comparación de medias de dos grupos: herbívoros y carnívoros

Consideraciones:

  • Agrupación según su alimentación en este caso, se considerarán sólo dos grupos: herbívoros y carnívoros
  • Se utilizará una prueba t clásica.

Nota. En caso de NO homogeneidad de varianzas usar Welch que es una adecuación de la prueba t de student. Basta sólo con quitar la opción de varianzas iguales (var.equal=TRUE).

Hipótesis estadísticas

  • \(H_0\): Las horas promedio de sueño en herbívoros y carnívoros son iguales
  • \(H_a\): Las horas promedio de sueño en herbívoros y carnívoros son diferentes
t.test(formula = sleep_total ~ vore, data = datos, var.equal=TRUE)        #Prueba t clásica
## 
##  Two Sample t-test
## 
## data:  sleep_total by vore
## t = 0.62514, df = 49, p-value = 0.5348
## alternative hypothesis: true difference in means between group carni and group herbi is not equal to 0
## 95 percent confidence interval:
##  -1.925753  3.664897
## sample estimates:
## mean in group carni mean in group herbi 
##           10.378947            9.509375

Conclusiones

  • Dado que p > 0.05 NO SE RECHAZA \(H_0\), es decir, los promedios de horas de sueño en herbívoros y carnívoros son estadísticamente iguales.
  • El IC (95%) va de -1.92 a 3.66, note que incluye a cero, por lo tanto NO SE RECHAZA \(H_0\) .
  • Los resultados de los métodos de estimación puntual, intervalos de confianza y prueba t coinciden en que el número promedio de horas de sueño en carnívoros y herbívoros son estadísticamente iguales.