Tarea: Simulación de Intervalos de Confianza

Antonio García, Luisa de Ángel y Nikole Gutiérrez

2025-12-08

library(ggplot2)
library(dplyr)
library(flextable)
library(scales)

1. Introducción:

El objetivo es simular la construcción de 100 intervalos de confianza del 90% para la media (\(\mu\)) de una distribución normal. Se propuso una media (\(\mu=170\)) y una desviación estándar (\(\sigma=10\)). La simulación se realizó utilizando la prueba t de Student, variando el tamaño de la muestra (\(n\)) entre 16, 25 y 36, con el fin de observar cómo el tamaño muestral afecta la precisión y la proporción de cobertura del verdadero valor del parámetro.

2. Configuración de Simulación

set.seed(6483)  


mu    <- 170   
sigma <- 10    


nivel_conf <- 0.90
ns         <- c(16, 25, 36)  
B          <- 100          


simular_ic_ttest <- function(n, B, mu, sigma, nivel_conf = 0.90) {
  
  resultados <- data.frame(
    n        = integer(B),
    rep      = integer(B),
    li       = numeric(B),   
    ls       = numeric(B),   
    contiene = logical(B)    
  )
  
  for (b in 1:B) {
    
    x <- rnorm(n, mean = mu, sd = sigma)
    
    
    ic <- t.test(x, conf.level = nivel_conf)$conf.int
    li <- ic[1]
    ls <- ic[2]
    
   
    contiene_mu <- (mu >= li & mu <= ls)
    
 
    resultados$n[b]        <- n
    resultados$rep[b]      <- b
    resultados$li[b]       <- li
    resultados$ls[b]       <- ls
    resultados$contiene[b] <- contiene_mu
  }
  
  return(resultados)
} 

lista_resultados <- lapply(
  ns,
  simular_ic_ttest,
  B = B,
  mu = mu,
  sigma = sigma,
  nivel_conf = nivel_conf
)


resultados_sim <- do.call(rbind, lista_resultados)


head(resultados_sim)
##    n rep       li       ls contiene
## 1 16   1 167.7901 174.9114     TRUE
## 2 16   2 168.1180 176.3071     TRUE
## 3 16   3 166.2340 176.8756     TRUE
## 4 16   4 165.1164 172.7248     TRUE
## 5 16   5 165.2615 174.6344     TRUE
## 6 16   6 165.6655 174.1206     TRUE

3. Resultados y Análisis

Resumen de la Cobertura

La siguiente tabla resume la proporción de veces que el intervalo de confianza logró capturar el verdadero valor de la media (\(\mu=170\)) y el ancho promedio de los intervalos para cada tamaño de muestra.

resumen_sim <- resultados_sim %>%
  dplyr::group_by(n) %>%
  dplyr::summarise(
    proporcion_contiene = mean(contiene),
    porcentaje_contiene = mean(contiene) * 100
  )
resumen_tabla <- resumen_sim %>%
  flextable::flextable() %>%
  flextable::set_header_labels(
    n = "Tamaño (n)",
    proporcion_contiene = "Proporción de Cobertura",
    porcentaje_contiene = "Porcentaje de Cobertura (%)",
    ancho_promedio = "Ancho Promedio del IC"
  ) %>%
  flextable::colformat_num(digits = 4) %>%
  flextable::theme_booktabs() %>%
  flextable::autofit()

resumen_tabla

Tamaño (n)

Proporción de Cobertura

Porcentaje de Cobertura (%)

16

0.90

90

25

0.89

89

36

0.82

82

Gráfica de los Intervalos de Confianza

El gráfico a continuación visualiza los 100 intervalos de confianza generados para cada tamaño de muestra (\(n\)). Los intervalos que no contienen el verdadero valor de la media (\(\mu=170\)) están resaltados.

ggplot2::ggplot(
  resultados_sim,
  aes(x = rep, ymin = li, ymax = ls, colour = contiene)
) +
  ggplot2::geom_errorbar(alpha = 0.8, linewidth = 0.7) +
  ggplot2::facet_wrap(~ n, scales = "free_x") +
  ggplot2::geom_hline(yintercept = mu, linetype = "dashed", color = "black", linewidth = 1) +
  ggplot2::scale_colour_manual(
    values = c("TRUE" = "#41B7C4", "FALSE" = "firebrick"), 
    labels = c("Sí", "No")
  ) +
  ggplot2::labs(
    title = "Simulación de 100 Intervalos de Confianza del 90% para la Media (μ=170)",
    subtitle = "La línea roja discontinua indica el valor real de la media (μ).",
    x = "Número de Simulación (1 a 100)",
    y = "Intervalo de Confianza",
    colour = "¿Contiene a μ?"
  ) +
  ggplot2::theme_minimal(base_size = 12) +
  ggplot2::theme(legend.position = "bottom")

## Interpretación de la Gráfica La gráfica ilustra dos conceptos fundamentales de los intervalos de confianza: -> Efecto del Tamaño de Muestra (\(n\)): Se observa claramente que a medida que el tamaño de la muestra aumenta (de \(n=16\) a \(n=36\)), el ancho de los intervalos de confianza disminuye (ver también la tabla de resumen). Esto indica que un tamaño de muestra mayor proporciona una estimación más precisa del parámetro poblacional. -> Proporción de Cobertura: Para cada valor de \(n\), la proporción de intervalos que contienen la línea roja discontinua (\(\mu=170\)) es muy cercana al 90% (el nivel de confianza elegido). Los intervalos que fallan en capturar a \(\mu\) están resaltados, mostrando la proporción que se espera que caiga fuera por azar. En conclusión, los resultados de la simulación son consistentes con la teoría estadística: el nivel de confianza se mantiene estable (cerca del 90%), y la precisión de la estimación (el ancho del IC) aumenta con el tamaño de la muestra.