El software R proporciona funciones para generar números aleatorios de diversas distribuciones de probabilidad. En este taller, exploraremos la simulación de variables aleatorias y el análisis de los resultados obtenidos.
Las principales funciones en R para generar valores de distribuciones aleatorias son:
runif(n, min, max)rnorm(n, mean, sd)rexp(n, rate)rpois(n, lambda)rbinom(n, size, prob)Generamos 150 valores siguiendo una distribución de Poisson con media de 3 fallas por día.
set.seed(123)
fallas <- rpois(150, lambda = 3)
media_fallas <- mean(fallas)
desviacion_fallas <- sd(fallas)
Generamos 1000 valores con distribución exponencial y calculamos la probabilidad de que un componente dure más de 700 horas.
set.seed(123)
vida_util <- rexp(1000, rate = 1/500)
prob_mas_700 <- mean(vida_util > 700)
Simulamos la cantidad de productos defectuosos en 100 muestras de 50 productos con una probabilidad de defectos del 5%.
set.seed(123)
defectuosos <- rbinom(100, size = 50, prob = 0.05)
media_defectuosos <- mean(defectuosos)
Generamos 365 valores de consumo energético con una distribución normal de media 100 y desviación estándar de 15. Calculamos la probabilidad de que la demanda supere los 130.
set.seed(123)
demanda <- rnorm(365, mean = 100, sd = 15)
prob_mayor_130 <- mean(demanda > 130)
Visualizamos la distribución con un histograma:
hist(demanda, breaks = 20, main = "Histograma de demanda de energía", col = "lightblue", probability = TRUE)
lines(density(demanda), col = "red", lwd = 2)
Simulamos tiempos de vida con una distribución exponencial de media 1000 horas.
set.seed(123)
uniformes <- runif(1000)
tiempo_vida <- -1000 * log(1 - uniformes)
media_estimada <- mean(tiempo_vida)
varianza_estimada <- var(tiempo_vida)
media_teorica <- 1000
varianza_teorica <- 1000^2
Visualizamos la distribución de tiempos de vida y comparamos con la densidad teórica.
hist(tiempo_vida, breaks = 30, probability = TRUE, col = "lightblue", main = "Histograma del tiempo de vida del capacitor")
curve(dexp(x, rate = 1/1000), add = TRUE, col = "red", lwd = 2)
prob_menos_940 <- mean(tiempo_vida < 940)