¿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
Declaración de paqueterias
library(tidyverse)
library(ggplot2)
library(car)
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
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
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~.)
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)
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
datos %>%
ggplot( aes(x=vore, y=sleep_total)) +
geom_boxplot()
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.
Consideraciones:
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
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