Inferencias con Datos Numéricos

Inferencias con una Muestra

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.

Distribución t

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.

Gráficas de la distribución normal y la distribución t con 2, 5 y 30 grados de libertad

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.

Distribución t ajustable

Distribución t

Intervalos de Confianza para la Media de Una Muestra

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.

Intervalo de Confianza para la Media con la Distribución t

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:

  • \(\bar x\) es la media muestral.
  • \(t_{\alpha/2, n-1}\) es el valor crítico de la distribución t con \(n-1\) grados de libertad y un nivel de confianza del \(100(1-\alpha)\%\).
  • \(s\) es la desviación estándar muestral.
  • \(n\) es el tamaño de la muestra.
  • \(\alpha\) es el nivel de significancia, que representa la probabilidad de cometer un error tipo I (rechazar una hipótesis nula verdadera).
  • \(1-\alpha\) es el nivel de confianza, que representa la probabilidad de que el intervalo contenga la media poblacional verdadera.
  • \(t_{\alpha/2, n-1}\) se obtiene de la tabla de la distribución t de Student, que proporciona los valores críticos para diferentes niveles de significancia y grados de libertad.
  • El valor crítico \(t_{\alpha/2, n-1}\) se utiliza para ajustar el ancho del intervalo de confianza en función de la variabilidad de los datos y el tamaño de la muestra.
  • El intervalo de confianza se interpreta como un rango de valores dentro del cual se espera que se encuentre la media poblacional con un nivel de confianza del \(100(1-\alpha)\%\).
  • Si el intervalo de confianza es estrecho, indica que la estimación de la media poblacional es más precisa. Por otro lado, un intervalo de confianza más amplio sugiere una mayor incertidumbre en la estimación.

Ejemplo

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.

Prueba de Hipótesis para la Media de Una Muestra

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.

Hipótesis Nula y Alternativa

  • Hipótesis nula (\(H_0\)): \(\mu = \mu_0\), donde \(\mu_0\) es el valor hipotético de la media poblacional.
  • Hipótesis alternativa (\(H_a\)): \(\mu \neq \mu_0\) (prueba bilateral) o \(\mu > \mu_0\) o \(\mu < \mu_0\) (pruebas unilaterales).

Estadístico de Prueba

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.

Valor P

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.

Decisión

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.

Ejemplo

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")
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\)

Prueba de hipótesis a partir de datos de una muestra

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")
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")
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\)

Prueba t para datos pareados

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.

Hipótesis Nula y Alternativa

  • Hipótesis nula (\(H_0\)): \(\mu_d = 0\), donde \(\mu_d\) es la media de las diferencias entre los dos conjuntos de datos.
  • Hipótesis alternativa (\(H_a\)): \(\mu_d \neq 0\) (prueba bilateral) o \(\mu_d > 0\) o \(\mu_d < 0\) (pruebas unilaterales).

Estadístico de Prueba

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).

Valor P

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.

Ejemplo con la función t.test() para muestras pareadas

Tenemos 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.")
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.")
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.")
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\)