El propósito es generar dos conjuntos de datos, uno con distribución Normal y otro con distribución Exponencial, para posteriormente estimar y contrastar los intervalos de confianza al 95% de la media poblacional empleando R.
Se crean dos grupos de datos. Cada grupo tiene 30 promedios, y cada promedio sale de una muestra con 20 datos.
# Fijar una semilla para que los resultados sean reproducibles
set.seed(3435)
# ---- Parámetros generales de la simulación ----
n_clientes <- 20
n_replicas <- 30
# ---- Simulación 1: Distribución Normal ----
media_normal <- 15
sd_normal <- 5
# Generamos 30 promedios. Cada uno es la media de 20 observaciones normales.
promedios_normal <- replicate(n_replicas, {
mean(rnorm(n = n_clientes, mean = media_normal, sd = sd_normal))
})
# ---- Simulación 2: Distribución Exponencial ----
media_exponencial <- 3.5
# La función rexp() usa el parámetro 'rate', que es el inverso de la media (1/media)
rate_exponencial <- 1 / media_exponencial
# Generamos 30 promedios. Cada uno es la media de 20 observaciones exponenciales.
promedios_exponencial <- replicate(n_replicas, {
mean(rexp(n = n_clientes, rate = rate_exponencial))
})
# Creamos un dataframe con los promedios generados para mostrarlo en una tabla
datos_generados <- data.frame(
Replica = 1:n_replicas,
Promedio_Normal = promedios_normal,
Promedio_Exponencial = promedios_exponencial
)
Primero, se presentan los 30 promedios generados para cada distribución.
# Usamos knitr::kable para una mejor visualización de la tabla
knitr::kable(
datos_generados,
digits = 4, # Redondear a 4 decimales
caption = "Promedios generados en cada una de las 30 réplicas."
)
| Replica | Promedio_Normal | Promedio_Exponencial |
|---|---|---|
| 1 | 16.0346 | 3.8623 |
| 2 | 16.3747 | 3.8741 |
| 3 | 16.6939 | 4.0199 |
| 4 | 16.1675 | 2.5926 |
| 5 | 13.7017 | 2.2651 |
| 6 | 17.7561 | 1.9301 |
| 7 | 12.9712 | 5.2139 |
| 8 | 13.6532 | 3.8655 |
| 9 | 15.0504 | 2.8992 |
| 10 | 13.3336 | 6.8332 |
| 11 | 14.3324 | 4.4901 |
| 12 | 15.1103 | 5.2665 |
| 13 | 15.0606 | 3.5200 |
| 14 | 13.4897 | 3.4037 |
| 15 | 14.5455 | 4.2200 |
| 16 | 13.6098 | 4.0330 |
| 17 | 15.6590 | 3.1261 |
| 18 | 14.9918 | 3.0930 |
| 19 | 14.9498 | 4.7798 |
| 20 | 15.1442 | 4.0089 |
| 21 | 17.0267 | 3.7801 |
| 22 | 15.8542 | 3.6971 |
| 23 | 14.4587 | 2.9866 |
| 24 | 14.2463 | 3.3160 |
| 25 | 14.5632 | 3.3809 |
| 26 | 14.4980 | 3.1815 |
| 27 | 12.6087 | 3.6215 |
| 28 | 17.1341 | 3.7504 |
| 29 | 14.6517 | 5.6792 |
| 30 | 15.2228 | 4.8037 |
A continuación, calculamos la media muestral, la desviación estándar y el intervalo de confianza del 95% para cada uno de los dos conjuntos de 30 promedios.
# ---- Cálculos para los promedios de la Normal ----
media_muestral_normal <- mean(promedios_normal)
sd_muestral_normal <- sd(promedios_normal)
# Usamos t.test(), que calcula directamente el intervalo de confianza
ic_test_normal <- t.test(promedios_normal, conf.level = 0.95)
# ---- Cálculos para los promedios de la Exponencial ----
media_muestral_exponencial <- mean(promedios_exponencial)
sd_muestral_exponencial <- sd(promedios_exponencial)
ic_test_exponencial <- t.test(promedios_exponencial, conf.level = 0.95)
# ---- Creación de la tabla de resumen ----
# Extraemos los límites del IC para ponerlos en columnas separadas
tabla_resumen <- data.frame(
Distribucion_Origen = c("Normal", "Exponencial"),
Media_Muestral = c(media_muestral_normal, media_muestral_exponencial),
Desviacion_Estandar = c(sd_muestral_normal, sd_muestral_exponencial),
lim_inf =c(ic_test_normal$conf.int[1],ic_test_exponencial$conf.int[1]),lim_sup =c(ic_test_normal$conf.int[2],ic_test_exponencial$conf.int[2]))
| Distribucion_Origen | Media_Muestral | Desviacion_Estandar | lim_inf | lim_sup |
|---|---|---|---|---|
| Normal | 14.9631 | 1.2740 | 14.4874 | 15.4389 |
| Exponencial | 3.8498 | 1.0238 | 3.4675 | 4.2321 |
Aquí tienes una versión parafraseada y explicada en un tono más informal y claro, manteniendo el sentido técnico:
### 3. Comentario sobre los Resultados y Diferencias
Interpretación de los resultados:
Al revisar la tabla resumen, se pueden destacar dos cosas importantes:
La media estimada es bastante precisa: En ambos casos, el promedio calculado con las 30 réplicas resultó muy cercano al valor real de la media teórica.
Los intervalos de confianza funcionan bien: El intervalo de confianza del 95% busca dar un rango dentro del cual, con alta probabilidad, está la media real de la población.
[r round(ic_test_normal$conf.int[1], 4), r round(ic_test_normal$conf.int[2], 4)]
sí incluye el valor real de 15.[r round(ic_test_exponencial$conf.int[1], 4), r round(ic_test_exponencial$conf.int[2], 4)]
también cubre la media real 3.5. Esto muestra que el
método de estimación funcionó bien en los dos casos.Análisis de las diferencias y conclusión general:
La diferencia principal entre ambas simulaciones está en la forma de las distribuciones:
Aun así, usamos el mismo método (t.test) para calcular
los intervalos de confianza y los resultados salieron correctos. Esto se
debe al Teorema del Límite Central (TLC), que dice que
cuando se tienen suficientes datos (por lo general más de 30
observaciones), la distribución de los promedios tiende a comportarse
como una Normal, sin importar cómo era la distribución original.
En este ejercicio no trabajamos con los datos originales, sino con los 30 promedios obtenidos de las simulaciones. Como este número es suficiente, el TLC entra en juego y hace que ambos conjuntos —los promedios normales y los exponenciales— se comporten de manera aproximadamente normal.
Conclusión final:
Este experimento demuestra, de forma práctica, cómo funciona el
Teorema del Límite Central. Gracias a él, podemos
aplicar pruebas basadas en la normalidad, como el t.test,
incluso cuando los datos originales no siguen una distribución normal.
En pocas palabras, el TLC es lo que nos permite confiar en los
resultados de inferencia estadística en la mayoría de los casos
reales.