De forma similar a cómo podemos modelar el comportamiento de la proporción muestral \(\hat p\) mediante una distribución normal, la media muestral \(\bar x\) también puede modelarse mediante una distribución normal cuando se cumplen ciertas condiciones. Sin embargo, la llamada distribución t, suele ser más útil al trabajar con la media muestral.
La distribución t es una familia de distribuciones que se caracterizan por un parámetro llamado grados de libertad (df). La forma de la distribución t depende de este parámetro, y a medida que los grados de libertad aumentan, la distribución t se asemeja más a la distribución normal estándar.
La distribución t se utiliza principalmente en inferencia estadística para estimar la media de una población cuando la desviación estándar de la población es desconocida y el tamaño de la muestra es pequeño (generalmente n < 30). A medida que el tamaño de la muestra aumenta, la distribución t se aproxima a la distribución normal.
library(ggplot2)
library(dplyr)
library(tidyr)
# Definir los grados de libertad
df_values <- c(2, 5, 30)
# Crear un rango de valores x
x <- seq(-4, 4, length.out = 100)
# Crear un data frame para almacenar los valores de las distribuciones
t_data <- data.frame(x = x)
# Calcular la densidad de la distribución normal estándar
t_data <- t_data %>%
mutate(normal = dnorm(x),
t2 = dt(x, df = 2),
t5 = dt(x, df = 5),
t30 = dt(x, df = 30))
# Convertir a formato largo para ggplot
t_data_long <- t_data %>%
pivot_longer(cols = c(t2, t5, t30), names_to = "df", values_to = "density") %>%
mutate(df = factor(df, levels = c("t2", "t5", "t30"), labels = c("2 df", "5 df", "30 df")))
# Crear el gráfico
ggplot(t_data_long, aes(x = x, y = density, color = df)) +
geom_line(size = 1) +
geom_line(aes(y = normal), linetype = "dashed", color = "black", size = 1) +
labs(
x = "x",
y = "Densidad") +
scale_color_manual(values = c("blue", "red", "green")) +
theme_minimal() +
theme(legend.title = element_blank())
Figura 1: Comparación de la distribución normal estándar (línea discontinua negra) y las distribuciones t con 2, 5 y 30 grados de libertad (líneas continuas de colores). A medida que los grados de libertad aumentan, la distribución t se asemeja más a la distribución normal estándar.
Cuando se estima la media poblacional a partir de una muestra, es importante calcular un intervalo de confianza que nos permita tener una idea del rango en el que se encuentra la media poblacional. El intervalo de confianza se basa en la distribución t cuando el tamaño de la muestra es pequeño y la desviación estándar poblacional es desconocida.
El intervalo de confianza para la media poblacional \(\mu\) se puede calcular utilizando la siguiente fórmula:
\[ \bar x \pm t_{\alpha/2, n-1} \cdot \frac{s}{\sqrt{n}} \] donde:
Supongamos que tenemos una muestra de orina de 10 pacientes con una enfermedad renal. La concentración media de un biomarcador en la orina es de 2.5 mg/dL, con una desviación estándar de 0.5 mg/dL. Queremos calcular un intervalo de confianza del 95% para la media poblacional. Al tener solo 10 pacientes, utilizaremos la distribución t.
# Datos de la muestra
n <- 10
x_bar <- 2.5
s <- 0.5
alpha <- 0.05
# Grados de libertad
df <- n - 1
# Valor crítico t
t_critical <- qt(1 - alpha / 2, df)
# Error estándar
se <- s / sqrt(n)
# Intervalo de confianza
lower_bound <- x_bar - t_critical * se
upper_bound <- x_bar + t_critical * se
# Resultados
intervalo_confianza <- c(lower_bound, upper_bound)
intervalo_confianza
## [1] 2.142322 2.857678
Vamos a mostrar el resultado de este intervalo de confianza con una gráfica. Para ello, vamos a crear una gráfica de la distribución t alrededor de la media y con 9 grados de libertad y a marcar el intervalo de confianza en la gráfica.
# Crear un rango de valores x para la distribución t
x_t <- seq(x_bar - 4 * se, x_bar + 4 * se, length.out = 100)
# Calcular la densidad de la distribución t
t_density <- dt((x_t - x_bar) / se, df) / se
# Crear un data frame para la distribución t
t_data <- data.frame(x = x_t, density = t_density)
# Crear el gráfico
# Añadir sombreado para el intervalo de confianza
ggplot(t_data, aes(x = x, y = density)) +
geom_line(size = 1, color = "blue") +
geom_vline(xintercept = x_bar, linetype = "dashed", color = "red") +
geom_vline(xintercept = lower_bound, linetype = "dashed", color = "darkgreen") +
geom_vline(xintercept = upper_bound, linetype = "dashed", color = "darkgreen") +
geom_area(data = t_data %>% filter(x >= lower_bound & x <= upper_bound), aes(y = density), fill = "lightblue", alpha = 0.5) +
labs(
x = "Concentración (mg/dL)",
y = "Densidad"
) +
theme_minimal()
Figura 2: Gráfica de la distribución t con 9 grados de libertad (línea azul) y el intervalo de confianza del 95% (sombreado en azul claro) para la media poblacional. La línea roja discontinua representa la media muestral, mientras que las líneas verdes discontinuas representan los límites inferior y superior del intervalo de confianza.
La prueba de hipótesis para la media poblacional se basa en la comparación entre la media muestral y una media poblacional hipotética. La hipótesis nula (\(H_0\)) establece que la media poblacional es igual a un valor específico, mientras que la hipótesis alternativa (\(H_a\)) establece que la media poblacional es diferente de ese valor.
El estadístico de prueba se calcula utilizando la siguiente fórmula: \[ t = \frac{\bar x - \mu_0}{s / \sqrt{n}} \]
donde: - \(\bar x\) es la media muestral. - \(\mu_0\) es el valor hipotético de la media poblacional. - \(s\) es la desviación estándar muestral. - \(n\) es el tamaño de la muestra.
El valor p se calcula utilizando la distribución t con \(n-1\) grados de libertad. El valor p representa la probabilidad de observar un estadístico de prueba tan extremo como el calculado, dado que la hipótesis nula es verdadera.
La decisión se toma comparando el valor p con el nivel de significancia \(\alpha\): - Si \(p \leq \alpha\), se rechaza la hipótesis nula. - Si \(p > \alpha\), no se rechaza la hipótesis nula.
Supongamos que queremos probar si la media poblacional de un biomarcador en la orina es igual a 2.0 mg/dL. Utilizando los mismos datos de la muestra anterior, realizamos una prueba de hipótesis con un nivel de significancia del 5%.
# Datos de la muestra
n <- 10
x_bar <- 2.5
s <- 0.5
alpha <- 0.05
mu_0 <- 2.0
# Grados de libertad
df <- n - 1
# Estadístico de prueba
t_statistic <- (x_bar - mu_0) / (s / sqrt(n))
# Valor p
p_value <- 2 * (1 - pt(abs(t_statistic), df))
# Resultados
resultados <- data.frame(
Estadístico = t_statistic,
Valor_p = p_value,
Decisión = ifelse(p_value <= alpha, "Rechazar $H_0$", "No rechazar $H_0$")
)
# usar kable para mostrar los resultados con 3 decimales
library(knitr)
kable(resultados, digits = 3, caption = "TABLA 1. Resultados de la prueba de hipótesis para la media poblacional")
Estadístico | Valor_p | Decisión |
---|---|---|
3.162 | 0.012 | Rechazar \(H_0\) |
Tenemos una muestra de 10 pacientes con una enfermedad renal. Las concentraciones de un biomarcador en la orina son las siguientes:
2.5, 2.7, 2.6, 2.4, 2.8, 2.9, 3.0, 2.3, 2.4, 2.5 mg/dL
Queremos determinar si la media poblacional de este biomarcador es significativamente diferente de 2.0 mg/dL. Para ello, realizamos una prueba de hipótesis con un nivel de significancia del 5%.
Usaremos la función t.test()
de R para realizar la
prueba de hipótesis. Esta función calcula automáticamente el estadístico
de prueba, el valor p y el intervalo de confianza para la media
poblacional.
# Datos de la muestra
concentracion1 <- c(2.5, 2.7, 2.6, 2.4, 2.8, 2.9, 3.0, 2.3, 2.4, 2.5)
# Tamaño de la muestra
n <- length(concentracion1)
# Media muestral
x_bar <- mean(concentracion1)
# Desviación estándar muestral
s <- sd(concentracion1)
# Nivel de significancia
alpha <- 0.05
# Valor hipotético de la media poblacional
mu_0 <- 2.0
# Grados de libertad
df <- n - 1
# Uso de la función t.test para calcular el estadístico de prueba y el valor p
t_test_result <- t.test(concentracion1, mu = mu_0, alternative = "greater")
# Extraer el estadístico de prueba, el valor p y el intervalo de confianza del 95%
t_statistic <- t_test_result$statistic
p_value <- t_test_result$p.value
# Intervalo de confianza del 95%
conf_int <- t_test_result$conf.int
# Resultados
resultados1 <- data.frame(
Promedio = x_bar,
Desviación_estándar = s,
Límite_Inferior = round(conf_int[1], 3),
Límite_Superior = round(conf_int[2], 3))
library(knitr)
kable(resultados1, digits = 3, caption = "TABLA 2. Estadísticos de la prueba de hipótesis para la media poblacional")
Promedio | Desviación_estándar | Límite_Inferior | Límite_Superior |
---|---|---|---|
2.61 | 0.233 | 2.475 | Inf |
resultados2 <- data.frame(
Estadístico = t_statistic,
Valor_p = p_value,
Decisión = ifelse(p_value <= alpha, "Rechazar $H_0$", "No rechazar $H_0$")
)
# usar kable para mostrar los resultados con 3 decimales
library(knitr)
kable(resultados2, digits = 4, caption = "TABLA 3. Resultados de la prueba de hipótesis para la media poblacional")
Estadístico | Valor_p | Decisión | |
---|---|---|---|
t | 8.2755 | 0 | Rechazar \(H_0\) |
La prueba t para datos pareados se utiliza cuando se tienen dos conjuntos de datos relacionados, como mediciones antes y después de un tratamiento en el mismo grupo de sujetos. Esta prueba evalúa si hay una diferencia significativa entre las medias de los dos conjuntos de datos. Es una forma de la prueba con una muestra, pero en este caso se utiliza la diferencia entre las dos muestras como la única muestra.
El estadístico de prueba se calcula utilizando la siguiente fórmula: \[ t = \frac{\bar d}{s_d / \sqrt{n}} \] donde: - \(\bar d\) es la media de las diferencias entre los dos conjuntos de datos. - \(s_d\) es la desviación estándar de las diferencias. - \(n\) es el tamaño de la muestra (número de pares de datos).
El valor p se calcula utilizando la distribución t con \(n-1\) grados de libertad. El valor p representa la probabilidad de observar un estadístico de prueba tan extremo como el calculado, dado que la hipótesis nula es verdadera.
t.test()
para muestras
pareadasTenemos datos de la concentración de PM2.5 (particulado menor a 2.5
micrómetros) en el aire de seis ciudades, antes y despés de implementar
un programa de reducción de emisiones. Queremos determinar si la
concentración de PM2.5 ha disminuido significativamente después de
implementar el programa. Los datos se encuentran en el archivo
pm25-antes-despues.csv
.
# Cargar los datos
pm25 <- read.csv("DATA/pm25-antes-despues.csv")
# Estadísticas descriptivas
library(dplyr)
# tabla
pm25 %>%
summarise(
Promedio_antes = mean(antes),
Desviacion_antes = sd(antes),
Promedio_despues = mean(despues),
Desviacion_despues = sd(despues)
) %>%
knitr::kable(digits = 3, caption = "TABLA 4a. Estadísticas descriptivas de la concentración de PM2.5 antes y después del programa de reducción de emisiones.")
Promedio_antes | Desviacion_antes | Promedio_despues | Desviacion_despues |
---|---|---|---|
39.467 | 2.424 | 34.433 | 3.561 |
# calcular las diferencias y obtener su promedio
pm25dif <- pm25 %>%
mutate(diferencia = antes - despues) %>%
summarise(
Promedio_diferencia = mean(diferencia),
Desviacion_diferencia = sd(diferencia)
)
# tabla
pm25dif %>%
knitr::kable(digits = 3, caption = "TABLA 4b. Estadísticas descriptivas de la diferencia de concentración de PM2.5 antes y después del programa de reducción de emisiones.")
Promedio_diferencia | Desviacion_diferencia |
---|---|
5.033 | 2.525 |
Prueba de hipótesis para determinar si la concentración de PM2.5 ha disminuido significativamente después de implementar el programa de reducción de emisiones.
# Prueba t para datos pareados
t_test_result_pm25 <- t.test(pm25$antes, pm25$despues, paired = TRUE, alternative = "less")
alpha = 0.05
# Extraer el estadístico de prueba, el valor p y el intervalo de confianza del 95%
t_statistic_pm25 <- t_test_result_pm25$statistic
p_value_pm25 <- t_test_result_pm25$p.value
# Intervalo de confianza del 95%
conf_int_pm25 <- t_test_result_pm25$conf.int
# Resultados
resultados_pm25 <- data.frame(
Estadístico = t_statistic_pm25,
Valor_p = p_value_pm25,
Decisión = ifelse(p_value_pm25 <= alpha, "Rechazar $H_0$", "No rechazar $H_0$")
)
# usar kable para mostrar los resultados con 3 decimales
library(knitr)
kable(resultados_pm25, digits = 4, caption = "TABLA 5. Resultados de la prueba t para datos pareados de la concentración de PM2.5 antes y después del programa de reducción de emisiones.")
Estadístico | Valor_p | Decisión | |
---|---|---|---|
t | 4.8832 | 0.9977 | No rechazar \(H_0\) |