knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)
library(ggplot2)
El presente taller tiene como propósito aplicar técnicas de simulación de variables aleatorias utilizando R Studio. Se trabajarán distribuciones de probabilidad clásicas como: Poison, Exponencial, Binomial, Normal, aplicadas a contextos de producción, confiabilidad y demanda energética.
El documento se organiza en cinco ejercicios, cada uno con su planteamiento, simulación y análisis, complementados con gráficos realizados mediante la librería ggplot2.
La Distribución Poisson es adecuada para modelar eventos discretos en un intervalo de tiempo, como las fallas diarias de un sistema.
set.seed(123)
fallas <- rpois(150, lambda = 3) # Simulación de 150 días con media de 3 fallas
mean_fallas <- mean(fallas) # Cálculo de la media
sd_fallas <- sd(fallas) # Cálculo de la desviación estándar
mean_fallas
## [1] 3
sd_fallas
## [1] 1.658818
Análisis
El resultado obtenido muestra un media cercana a 3, lo que valida el
supuesto del modelo. La desviación estándar refleja la variabilidad en
el número de fallas diarias.
La Distribución Exponencial se emplea comúnmente para modelar tiempos de vida o de espera.
set.seed(123) # Semilla para obtener siempre el mismo resultado
vida <- rexp(1000, rate = 1/500) # Simulación de 1000 tiempos de vida con media 500
prob_mas700 <- mean(vida > 700) # Estimar probabilidad de durar más de 700 horas
prob_mas700
## [1] 0.255
Análisis
La probabilidad obtenida se aproxima al valor teórico P(X >
700) = e^-700/500. Esto confirma la validez de la simulación y
su utilidad para estimar confiabilidad de componentes.
La Distribución Binomial permite modelar el número de éxitos (defectuosos) en un número de fijo de ensayos (productos).
set.seed(123) # Semilla
defectuosos <- rbinom(100, size = 50, prob = 0.05) # 100 lotes de 50 productos
mean_defectuosos <- mean(defectuosos) # Promedio de defectuosos por lote
mean_defectuosos
## [1] 2.48
Análisis
El promedio de defectuosos por lote se acerca al valor esperado
50 x 0.05 = 2.5. Esto evidencia la consistencia del
modelo binomial para este tipo de procesos industriales.
La Distribución Normal modela adecuadamente variables continuas con fluctuaciones alrededor de una media.
set.seed(123) # Semilla
demanda <- rnorm(365, mean = 100, sd = 15) # Simulación de 365 días
prob_mas130 <- mean(demanda > 130) # Probabilidad de superar 130 MW
prob_mas130
## [1] 0.03013699
# Creación del data frame para graficar
df_demanda <- data.frame(demanda)
# Histograma + Curva de Densidad
ggplot(df_demanda, aes(x = demanda)) +
geom_histogram(aes(y = ..density..), bins = 30, fill = "steelblue", color = "black", alpha = 0.7) +
geom_density(color = "red", size = 1) +
geom_vline(xintercept = 130, linetype = "dashed", color = "darkgreen") +
labs(title = "Histograma de la Demanda Diaria (MW)",
x = "Demanda (MW)", y = "Densidad")
Análisis
El histograma confirma la forma de campana característica de la normal.
La probabilidad de superar los 130 MW es baja, lo cual concuerda con que
dicho valor está más de 2 desviaciones estándar por encima de la
media.
a) Generar 1000 tiempos de vida del capacitor aplicando el método de la transformada inversa. X = −β⋅ln(1−U), U∼U(0,1)
set.seed(123) # Semilla
n <- 1000 # Número de Simulaciones
beta <- 1000 # Parámetro de la Distribución Exponencial
U <- runif(n)
vida_cap <- -beta * log(1 - U)
b) Estimar la media y la varianza de los tiempos generados y compararlas con los valores teóricos.
Valores Teóricos
E|X| = β = 1000, Var[X] = β^2 = 1000000
media_sim <- mean(vida_cap) # Media simulada
var_sim <- var(vida_cap) # Varianza simulada
media_sim
## [1] 986.1544
var_sim
## [1] 954966.2
Los valores simulados se aproximan a los teóricos, validando la simulación.
c) Graficar el histograma de los tiempos de vida simulados junto con la densidad teórica de la distribución exponencial.
df_vida <- data.frame(vida_cap)
ggplot(df_vida, aes(x = vida_cap)) +
geom_histogram(aes(y = ..density..), bins = 30, fill = "orange", color = "black", alpha = 0.7) +
stat_function(fun = dexp, args = list(rate = 1/beta), color = "blue", size = 1) +
labs(title = "Tiempo de Vida de Capacitores",
x = "Tiempo de vida (horas)", y = "Densidad")
Los Valores simulados se aproximan a los teóricos, validando la simulación.
d) Calcular la probabilidad de que un capacitor dure menos de 940 horas usando la simulación.
prob_menos940 <- mean(vida_cap < 940) # Probabilidad Simulada
prob_menos940
## [1] 0.611
El resultado simulado concuerda con el cálculo teórico P(X < 940) = 1 -e ^-940/1000. Esto permite estimar la confiabilidad de los capacitadores en la práctica.
El desarrollo de este taller permitió aplicar de manera práctica los conceptos de simulación de variables aleatorias en R, empleando diferentes distribuciones de probabilidad que modelan fenómenos comunes en ingeniería y procesos industriales. La simulación de fallas, tiempos de vida, productos defectuosos y demandas energéticas mostró cómo estos modelos permiten describir con realismo situaciones de incertidumbre y variabilidad.
Los resultados obtenidos reflejaron una estrecha coherencia con los valores teóricos, lo cual evidencia la validez de los métodos utilizados y la importancia de contrastar los datos simulados con los parámetros esperados. Asimismo, el uso de herramientas de visualización como ggplot2 facilitó la interpretación gráfica de los escenarios, fortaleciendo la comprensión y el análisis crítico de los procesos estudiados.
Esta práctica no solamente aportó a la consolidación de conocimientos teóricos, sino que también permitió ejercitar habilidades de análisis y validación, esenciales para anticipar el comportamiento de sistemas reales y tomar decisiones fundamentadas en contextos de ingeniería.