ACTIVIDAD: Simulación de Variables Aleatorias y Estimación por Intervalo de Confianza
Simule el tiempo de atención de 20 clientes en un banco que sigue una distribución normal de media 15 minutos y desviación estándar 5 minutos, replique el experimento 30 veces y registre el promedio de cada replica.
set.seed(123) # Reproducibilidad de resultados
media_normal <- 15
sd_normal <- 5
n_clientes <- 20
n_replicas <- 30
# Generar 30 réplicas de la media de 20 tiempos normales
promedios_normal <- replicate(n_replicas, mean(rnorm(n_clientes, mean = media_normal, sd = sd_normal)))
# Mostrar resultados
promedios_normal
## [1] 15.70812 14.74371 15.53243 14.40041 16.87547 13.20310 14.80825 14.13332
## [9] 15.83445 14.33221 15.29742 14.80830 14.88379 16.04741 16.97471 14.80494
## [17] 15.25109 14.62870 15.14293 14.26677 13.94018 16.03292 14.81796 16.50615
## [25] 16.34905 13.62300 16.26086 15.50509 14.79653 13.75702
Simule el tiempo entre llegadas de los clientes cuya distribución es una exponencial con media 3.5 minutos y replique el experimento 30 veces y registre el promedio de cada replica.
media_exponencial <- 3.5
n_clientes <- 20
n_replicas <- 30
# Generar 30 réplicas del promedio de 20 tiempos exponenciales
promedios_exponencial <- replicate(n_replicas, mean(rexp(n_clientes, rate = 1/media_exponencial)))
# Mostrar resultados
promedios_exponencial
## [1] 4.128988 4.585578 2.883060 4.145512 2.433087 5.055695 2.420080 3.680780
## [9] 3.666126 5.784791 3.814230 3.536007 3.273484 3.077473 3.484573 3.514125
## [17] 3.001881 3.330810 2.939259 3.131979 3.081971 4.381512 3.474137 4.233632
## [25] 3.391420 3.213681 4.132584 4.064521 3.356930 3.208657
intervalo_confianza <- function(datos, nivel = 0.95) {
media <- mean(datos)
desv <- sd(datos)
n <- length(datos)
error <- qt(1 - (1 - nivel)/2, df = n - 1) * (desv / sqrt(n))
c(inferior = media - error, superior = media + error)
}
IC_normal <- intervalo_confianza(promedios_normal)
IC_exponencial <- intervalo_confianza(promedios_exponencial)
# Mostrar intervalos
IC_normal
## inferior superior
## 14.74789 15.46986
IC_exponencial
## inferior superior
## 3.341661 3.886777
tabla_resultados <- data.frame(
Distribución = c("Normal", "Exponencial"),
Media_Muestral = c(mean(promedios_normal), mean(promedios_exponencial)),
Desviación_Estándar = c(sd(promedios_normal), sd(promedios_exponencial)),
IC_95_Inferior = c(IC_normal[1], IC_exponencial[1]),
IC_95_Superior = c(IC_normal[2], IC_exponencial[2])
)
# Mostrar tabla
tabla_resultados
## Distribución Media_Muestral Desviación_Estándar IC_95_Inferior IC_95_Superior
## 1 Normal 15.108877 0.9667275 14.747895 15.469859
## 2 Exponencial 3.614219 0.7299240 3.341661 3.886777
par(mfrow = c(1, 2)) # Dos gráficos en una ventana
# Histograma Normal
hist(promedios_normal,
main = "Promedios - Distribución Normal",
xlab = "Tiempo promedio (min)",
col = "skyblue", border = "black")
# Histograma Exponencial
hist(promedios_exponencial,
main = "Promedios - Distribución Exponencial",
xlab = "Tiempo promedio (min)",
col = "salmon", border = "black")
Comentario: En la simulación, los tiempos de atención (distribución normal) muestran valores más centrados y simétricos alrededor de la media (15 minutos), lo que indica un proceso estable.
Por el contrario, los tiempos entre llegadas (distribución exponencial) son más variables y presentan asimetría positiva: algunos clientes pueden tardar mucho más en llegar.
El intervalo de confianza del 95% para la media normal es más estrecho, indicando mayor precisión en la estimación. El de la exponencial es más amplio, reflejando la mayor variabilidad de ese proceso.
Conclusión: Los resultados concuerdan con la teoría del libro “Simulación y análisis de sistemas con ProModel”, ya que la simulación de variables aleatorias permite estimar la incertidumbre y comparar comportamientos estocásticos de distintos procesos.