set.seed(123)
mu <- 500
beta <- 100
n_simulaciones <- 3650
# Generar números aleatorios para distribución Gumbel
# Usamos: X = mu - beta * log(-log(U)) donde U ~ Uniforme(0,1)
U <- runif(n_simulaciones)
caudales_simulados <- mu - beta * log(-log(U))
Resultados: - Simulaciones generadas: 3650 - Resumen estadístico de caudales simulados:
summary(caudales_simulados)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 296.2 467.1 536.1 557.2 622.6 1296.0
umbral <- 750
superaciones <- sum(caudales_simulados > umbral)
prob_superacion_dia <- superaciones / n_simulaciones
prob_al_menos_una_10anios <- 1 - (1 - prob_superacion_dia)^n_simulaciones
Resultados: - Días con caudal > 750 m³/s: 275 / 3650 - Probabilidad por día: 0.0753 - Probabilidad de al menos una superación en 10 años: 1
riesgo_objetivo <- 0.01
# P(X > x) = 0.01 => P(X ≤ x) = 0.99
# Para Gumbel: x = mu - beta * log(-log(p))
p <- 0.99
caudal_1porciento <- mu - beta * log(-log(p))
Resultado: - Caudal para P(superación) = 0.01: 960.01 m³/s
par(mfrow = c(1, 2))
# Histograma
hist(caudales_simulados, breaks = 30, prob = TRUE, col = "lightblue",
main = "Distribución de Caudales Simulados",
xlab = "Caudal (m³/s)", ylab = "Densidad")
# Curva teórica Gumbel
x <- seq(min(caudales_simulados), max(caudales_simulados), length = 100)
densidad_gumbel <- exp(-(x - mu)/beta - exp(-(x - mu)/beta)) / beta
lines(x, densidad_gumbel, col = "red", lwd = 2)
legend("topright", legend = c("Simulado", "Teórico Gumbel"),
col = c("lightblue", "red"), lwd = c(NA, 2), fill = c("lightblue", NA))
# QQ-plot para verificar distribución Gumbel
prob_empirica <- ppoints(n_simulaciones)
quantiles_teoricos <- mu - beta * log(-log(prob_empirica))
plot(sort(quantiles_teoricos), sort(caudales_simulados),
xlab = "Cuantiles Teóricos Gumbel", ylab = "Cuantiles Simulados",
main = "QQ-Plot: Gumbel")
abline(0, 1, col = "red")
El ingeniero civil podría implementar:
# Parámetros del problema
n <- 100
p1 <- 0.03
p2 <- 0.05
data.frame(
Variable = c("X", "Y"),
Media = c(n * p1, n * p2),
Varianza = c(n * p1 * (1-p1), n * p2 * (1-p2)),
Desviacion = c(sqrt(n * p1 * (1-p1)), sqrt(n * p2 * (1-p2)))
)
## Variable Media Varianza Desviacion
## 1 X 3 2.91 1.705872
## 2 Y 5 4.75 2.179449
set.seed(123)
n_muestras <- 1000
# Generar muestras
muestras_X <- rbinom(n_muestras, size = n, prob = p1)
muestras_Y <- rbinom(n_muestras, size = n, prob = p2)
summary(muestras_X)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 3.000 2.966 4.000 10.000
sd(muestras_X)
## [1] 1.679185
summary(muestras_Y)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 3.00 5.00 4.98 6.00 13.00
sd(muestras_Y)
## [1] 2.190982
total_defectuosos <- muestras_X + muestras_Y
prob_menor_10 <- mean(total_defectuosos < 10)
summary(total_defectuosos)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.000 6.000 8.000 7.946 9.250 19.000
sd(total_defectuosos)
## [1] 2.707104
sum(total_defectuosos < 10)
## [1] 750
prob_menor_10
## [1] 0.75
prob_X_mayor_Y <- mean(muestras_X > muestras_Y)
prob_Y_mayor_X <- mean(muestras_Y > muestras_X)
prob_iguales <- mean(muestras_X == muestras_Y)
sum(muestras_X > muestras_Y)
## [1] 186
sum(muestras_Y > muestras_X)
## [1] 724
sum(muestras_X == muestras_Y)
## [1] 90
data.frame(
Evento = c("X > Y", "Y > X", "X = Y"),
Conteo = c(sum(muestras_X > muestras_Y), sum(muestras_Y > muestras_X), sum(muestras_X == muestras_Y)),
Probabilidad = c(prob_X_mayor_Y, prob_Y_mayor_X, prob_iguales)
)
## Evento Conteo Probabilidad
## 1 X > Y 186 0.186
## 2 Y > X 724 0.724
## 3 X = Y 90 0.090
# Configurar parámetros gráficos
par(mfrow = c(1, 2))
# Histograma simple sin caracteres especiales
hist(total_defectuosos, breaks = 15, prob = TRUE, col = "lightgreen",
main = "Distribucion del Total de Defectuosos",
xlab = "Numero total de defectuosos", ylab = "Densidad")
# QQ-plot simple
qqnorm(total_defectuosos, main = "QQ-Plot: Normalidad")
qqline(total_defectuosos, col = "red")
El QQ-plot compara los cuantiles de los datos simulados contra los cuantiles teóricos de una distribución normal. Si los puntos se alinean aproximadamente sobre la línea recta, sugiere que los datos siguen una distribución normal. En este caso, se observa que el número total de defectuosos presenta una desviación mínima de la normalidad, con una ligera asimetría en las colas pero manteniendo una aproximación razonable. Esta cercanía a la distribución normal es esperable por el Teorema del Límite Central, dado que el total es la suma de variables binomiales independientes con parámetros similares y tamaño de muestra suficiente (n=100), lo que garantiza una convergencia adecuada hacia la distribución normal.
set.seed(123)
n_pistones <- 5000
mu <- 10
sigma <- 0.02
# Generar muestra de diámetros
diametros <- rnorm(n_pistones, mean = mu, sd = sigma)
summary(diametros)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 9.937 9.987 10.000 10.000 10.013 10.069
sd(diametros)
## [1] 0.01989142
# Definir límites de especificación
limite_inferior <- 9.97
limite_superior <- 10.03
# Identificar pistones rechazados
rechazados <- diametros < limite_inferior | diametros > limite_superior
proporcion_rechazados <- mean(rechazados)
sum(rechazados)
## [1] 655
proporcion_rechazados
## [1] 0.131
costo_por_piston <- 15
costo_total <- sum(rechazados) * costo_por_piston
costo_promedio_por_lote <- mean(rechazados) * n_pistones * costo_por_piston
costo_total
## [1] 9825
costo_promedio_por_lote
## [1] 9825
par(mfrow = c(1, 2))
# Histograma con curva normal
hist(diametros, breaks = 30, prob = TRUE, col = "lightblue",
main = "Distribucion de Diametros de Pistones",
xlab = "Diametro (cm)", ylab = "Densidad")
# Superponer curva normal teórica
x_seq <- seq(min(diametros), max(diametros), length = 100)
lines(x_seq, dnorm(x_seq, mean = mu, sd = sigma), col = "red", lwd = 2)
abline(v = c(limite_inferior, limite_superior), col = "darkred", lty = 2, lwd = 2)
legend("topright", legend = c("Datos", "Normal Teorica", "Limites"),
col = c("lightblue", "red", "darkred"), lwd = c(NA, 2, 2),
fill = c("lightblue", NA, NA))
# QQ-plot
qqnorm(diametros, main = "QQ-Plot: Normalidad de Diametros")
qqline(diametros, col = "red")
Algunas estrategias recomendadas:
2.Calibración de equipos: Establecer programa de mantenimiento preventivo y calibración periódica de las máquinas para reducir variabilidad.
3.Optimización de materiales: Evaluar y estandarizar la calidad de las materias primas para reducir fuentes de variación externas.
set.seed(123)
lambda <- 30
n_minutos <- 10000
solicitudes <- rpois(n_minutos, lambda = lambda)
summary(solicitudes)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.00 26.00 30.00 29.96 34.00 53.00
var(solicitudes)
## [1] 29.55417
sd(solicitudes)
## [1] 5.436375
prob_mas_40 <- mean(solicitudes > 40)
solicitudes_mas_40 <- sum(solicitudes > 40)
solicitudes_mas_40
## [1] 298
prob_mas_40
## [1] 0.0298
capacidad_maxima <- 35
sobrecargas <- sum(solicitudes > capacidad_maxima)
proporcion_sobrecarga <- mean(solicitudes > capacidad_maxima)
sobrecargas
## [1] 1503
proporcion_sobrecarga
## [1] 0.1503
Algunas mejoras recomendadas:
2.Arquitectura asíncrona: Implementar colas de mensajes para procesamiento asíncrono
3.Optimización de código: Mejorar eficiencia mediante caching y optimización de consultas
par(mfrow = c(1, 2))
# Histograma simple sin caracteres especiales
hist(solicitudes, breaks = 30, col = "lightcoral",
main = "Distribucion de Solicitudes por Minuto",
xlab = "Numero de solicitudes", ylab = "Frecuencia")
# Añadir líneas de referencia
abline(v = mean(solicitudes), col = "blue", lwd = 2, lty = 2)
abline(v = mean(solicitudes) + sd(solicitudes), col = "red", lwd = 2, lty = 2)
abline(v = mean(solicitudes) - sd(solicitudes), col = "red", lwd = 2, lty = 2)
abline(v = capacidad_maxima, col = "darkgreen", lwd = 2, lty = 2)
# QQ-plot simple
qqnorm(solicitudes, main = "QQ-Plot: Normalidad")
qqline(solicitudes, col = "red")
La distribución de solicitudes muestra una dispersión característica de los procesos Poisson, donde la varianza es aproximadamente igual a la media. Con una desviación estándar de alrededor de 5.5 solicitudes por minuto, se observa una variabilidad moderada alrededor de la media de 30 solicitudes. El coeficiente de variación de aproximadamente 0.18 indica una dispersión relativa consistente con lo esperado para esta distribución. Los valores oscilan entre aproximadamente 15 y 45 solicitudes por minuto, mostrando que aunque la mayoría de las observaciones se concentran cerca de la media, existen picos ocasionales que superan significativamente el promedio, lo que explica los momentos de sobrecarga del servidor.
Nota sobre el QQ-plot: Se incluye un gráfico de normalidad para comparar la distribución Poisson simulada con una distribución normal, evidenciando que para valores grandes de lambda (λ=30) la distribución Poisson se aproxima bien a una normal, lo que valida el uso de métodos paramétricos en el análisis.