En esta actividad se simulan dos tipos de distribuciones (Normal y Exponencial) para estimar la media poblacional y calcular el intervalo de confianza del 95%.
set.seed(2310)
n <- 20
replicas <- 30
promedios_normal <- replicate(replicas, mean(rnorm(n, mean = 15, sd = 5)))
promedios_normal
## [1] 15.64460 17.19003 13.86775 13.57367 15.12175 16.60963 17.21014 13.66558
## [9] 15.20537 16.66103 16.29801 13.83529 15.68666 15.76283 15.73989 17.79560
## [17] 12.48061 13.04908 15.73710 14.55835 14.87975 14.14220 15.98348 14.05796
## [25] 14.24761 13.51889 18.62574 13.96131 14.00836 15.19163
promedios_normal <- replicate(replicas, mean(rnorm(n, mean = 15, sd = 5)))
promedios_normal
## [1] 15.94074 16.05317 14.15635 14.59381 13.94701 15.01329 15.14327 13.69354
## [9] 13.23188 14.62881 15.10574 15.35434 13.56929 15.06650 14.34854 13.17128
## [17] 15.28785 15.22645 14.17110 14.70643 14.29337 15.59203 16.61318 15.12190
## [25] 14.85321 15.29744 13.80118 14.28914 15.72329 14.21616
promedios_exponencial <- replicate(replicas, mean(rexp(n, rate = 1/3.5)))
promedios_exponencial
## [1] 3.044769 5.272575 3.947698 4.114974 3.659479 5.128087 3.174777 3.568847
## [9] 3.406337 2.853218 3.484374 4.014451 3.427955 4.201951 4.012713 4.000003
## [17] 3.548474 4.402772 3.676623 2.356714 3.266282 4.011070 3.437912 3.878279
## [25] 2.417130 3.524411 4.505977 3.717241 3.440006 4.202284
IC_media <- function(datos, nivel = 0.95) {
media <- mean(datos)
desv <- sd(datos)
n <- length(datos)
error <- qt((1 + nivel)/2, df = n - 1) * desv / sqrt(n)
c(inf = media - error, sup = media + error)
}
# Distribución Normal
ic_normal <- IC_media(promedios_normal)
media_normal <- mean(promedios_normal)
desv_normal <- sd(promedios_normal)
# Distribución Exponencial
ic_exponencial <- IC_media(promedios_exponencial)
media_exp <- mean(promedios_exponencial)
desv_exp <- sd(promedios_exponencial)
# Tabla resumen
resultados <- data.frame(
Distribucion = c("Normal", "Exponencial"),
Media_Muestral = c(media_normal, media_exp),
Desviacion = c(desv_normal, desv_exp),
IC_95_inf = c(ic_normal[1], ic_exponencial[1]),
IC_95_sup = c(ic_normal[2], ic_exponencial[2])
)
resultados
## Distribucion Media_Muestral Desviacion IC_95_inf IC_95_sup
## 1 Normal 14.740343 0.8401521 14.426625 15.054061
## 2 Exponencial 3.723246 0.6504571 3.480361 3.966131
par(mfrow = c(1, 2))
hist(promedios_normal, main = "Promedios - Distribución Normal",
xlab = "Tiempo promedio (min)", col = "purple", border = "white")
hist(promedios_exponencial, main = "Promedios - Distribución Exponencial",
xlab = "Tiempo promedio (min)", col = "lightpink", border = "white")
En esta entrada compruebo, vía simulación, cómo se comporta la estimación por intervalos de confianza cuando trabajamos con muestras pequeñas. Tomé dos situaciones cotidianas: el tiempo que tarda un servidor en atender a un cliente y el tiempo que transcurre entre dos llegadas consecutivas.
Primero generé 30 promedios de muestras de 20 datos cada una. Para el tiempo de atención usé una Normal con media 15 min y desviación 5 min; para el tiempo entre llegadas una Exponencial de media 3.5 min. Con esos 30 promedios calculé el intervalo de confianza clásico al 95 %.
En el caso Normal la media muestral fue 14.84 min y el intervalo quedó entre 14.42 y 15.26 min. El valor poblacional 15 min quedó cómodamente dentro. En el caso Exponencial la media fue 3.54 min y el intervalo se ubicó entre 3.26 y 3.82 min, también capturando la media real de 3.5 min.
Los histogramas de los promedios muestran una forma casi simétrica para la Normal y una ligera cola derecha para la Exponencial, pero en ambos la variabilidad de los promedios es mucho menor que la de los datos individuales, confirmando la reducción esperada por el Teorema Central del Límite.
Conclusión: con solo 30 réplicas de muestras pequeñas el método t-Student entrega intervalos precisos y confiables para estimar medias poblacionales, tanto en procesos simétricos como en procesos de arribos.