Introducción

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.

Funciones en R para generar números aleatorios

Las principales funciones en R para generar valores de distribuciones aleatorias son:

  • Distribución uniforme: runif(n, min, max)
  • Distribución normal: rnorm(n, mean, sd)
  • Distribución exponencial: rexp(n, rate)
  • Distribución de Poisson: rpois(n, lambda)
  • Distribución binomial: rbinom(n, size, prob)

Ejercicios de Simulación

1. Simulación del número de fallas en un semestre (150 días)

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)

Resultados:

  • Media de fallas diarias: 3
  • Desviación estándar: 1.6588182

2. Simulación de la vida útil de un componente electrónico

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)

Resultado:

  • Probabilidad de que la vida útil sea mayor a 700 horas: 0.255

3. Simulación de productos defectuosos en una línea de ensamblaje

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)

Resultado:

  • Promedio de productos defectuosos por muestra: 2.48

4. Simulación de la demanda diaria de energía

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)

Resultado:

  • Probabilidad de que la demanda supere 130: 0.030137

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)


5. Simulación del tiempo de vida de un capacitor

a) Generar 1000 tiempos de vida con la transformada inversa

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)

b) Estimar la media y la varianza y compararlas con los valores teóricos

media_estimada <- mean(tiempo_vida)
varianza_estimada <- var(tiempo_vida)
media_teorica <- 1000
varianza_teorica <- 1000^2

Comparación de valores:

  • Media estimada: 986.1543575 (Teórica: 1000)
  • Varianza estimada: 9.5496623^{5} (Teórica: 10^{6})

c) Graficar el histograma con la densidad teórica

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)


d) Calcular la probabilidad de que un capacitor dure menos de 940 horas

prob_menos_940 <- mean(tiempo_vida < 940)

Resultado:

  • Probabilidad de que un capacitor dure menos de 940 horas: 0.611