# Colores
c31 <- "#2C7FB8" # color principal
c32 <- "#BDBDBD" # color secundario
# Gráfica de f(x) para variables continuas: curva, regiones sombreadas y línea de la media
# f: función de densidad; regiones: lista de intervalos c(a, b) a sombrear
grafica_fx <- function(f, desde, hasta, titulo = "", xlab = "x",
regiones = NULL, media = NULL, extra = NULL) {
x <- sort(unique(c(seq(desde, hasta, length.out = 1000), extra)))
fx <- f(x)
par(mar = c(4.5, 6, 3, 1)) # margen izquierdo amplio para que no se pisen los decimales del eje
plot(x, fx, type = "l", lwd = 2, col = c31, las = 1,
xlab = xlab, ylab = "", main = titulo,
ylim = c(0, max(fx) * 1.25))
mtext("f(x)", side = 2, line = 4.5)
for (r in regiones) {
xs <- seq(r[1], r[2], length.out = 300)
polygon(c(r[1], xs, r[2]), c(0, f(xs), 0), col = adjustcolor(c31, alpha.f = 0.35), border = NA)
}
if (!is.null(media)) {
abline(v = media, lty = 2, col = "#E74C3C", lwd = 1.5)
legend("topright", legend = paste0("media = ", round(media, 2)),
lty = 2, col = "#E74C3C", bty = "n")
}
grid()
}
# Tabla de resultados
tabla <- function(nombres, valores, dec = 4) {
# valores muy pequeños se muestran en notación científica para que no queden en 0
valor <- ifelse(valores > 0 & valores < 1e-4,
format(valores, digits = 3, scientific = TRUE),
format(round(valores, dec), nsmall = dec))
knitr::kable(data.frame(Resultado = nombres, Valor = valor), align = c("l", "c"))
}\[X \sim U(a = 20,\ b = 50)\] \[f(x) = \frac{1}{b - a} = \frac{1}{30}, \qquad 20 \leq x \leq 50\]
a <- 20; b <- 50
p1a <- punif(30, min = a, max = b) # P(X <= 30)
p1b <- punif(42, min = a, max = b, lower.tail = FALSE) # P(X > 42)
p1c <- punif(40, min = a, max = b) - punif(25, min = a, max = b) # P(25 <= X < 40)
x80 <- qunif(0.80, min = a, max = b) # x tal que P(X <= x) = 0.80
E1 <- (a + b) / 2 # E[X]
V1 <- (b - a)^2 / 12 # V[X]
tabla(c("f(x) = 1/(b - a)", "P(X <= 30)", "P(X > 42)", "P(25 <= X < 40)",
"x tal que P(X <= x) = 0.80", "E[X]", "V[X]"),
c(dunif(30, a, b), p1a, p1b, p1c, x80, E1, V1))| Resultado | Valor |
|---|---|
| f(x) = 1/(b - a) | 0.0333 |
| P(X <= 30) | 0.3333 |
| P(X > 42) | 0.2667 |
| P(25 <= X < 40) | 0.5000 |
| x tal que P(X <= x) = 0.80 | 44.0000 |
| E[X] | 35.0000 |
| V[X] | 75.0000 |
grafica_fx(function(x) dunif(x, a, b), 15, 55, titulo = "Uniforme(20, 50)",
media = E1, extra = c(a - 1e-9, a, b, b + 1e-9))\[X \sim N(\mu = 100,\ \sigma^2 = 15^2)\]
mu <- 100; s <- 15
p2a <- pnorm(85, mean = mu, sd = s) # P(X <= 85)
p2b <- pnorm(120, mean = mu, sd = s, lower.tail = FALSE) # P(X > 120)
p2c <- pnorm(115, mean = mu, sd = s) - pnorm(90, mean = mu, sd = s) # P(90 <= X < 115)
x95 <- qnorm(0.95, mean = mu, sd = s) # P(X <= x) = 0.95
ic <- qnorm(c(0.025, 0.975), mean = mu, sd = s) # intervalo central del 95 %
tabla(c("P(X <= 85)", "P(X > 120)", "P(90 <= X < 115)", "x tal que P(X <= x) = 0.95",
"Límite inferior del 95 % central", "Límite superior del 95 % central"),
c(p2a, p2b, p2c, x95, ic[1], ic[2]))| Resultado | Valor |
|---|---|
| P(X <= 85) | 0.1587 |
| P(X > 120) | 0.0912 |
| P(90 <= X < 115) | 0.5889 |
| x tal que P(X <= x) = 0.95 | 124.6728 |
| Límite inferior del 95 % central | 70.6005 |
| Límite superior del 95 % central | 129.3995 |
grafica_fx(function(x) dnorm(x, mu, s), 45, 155, titulo = "Normal(100, 15\u00b2) - en azul el 95 % central",
regiones = list(ic), media = mu)El intervalo central que contiene aproximadamente el 95 % de los valores es \((70.6,\ 129.4)\), que equivale a \(\mu \pm 1.96\,\sigma\).
\[X \sim N(\mu = 72,\ \sigma^2 = 8^2)\]
mu <- 72; s <- 8
p3a <- pnorm(60, mean = mu, sd = s) # P(X < 60)
p3b <- pnorm(80, mean = mu, sd = s, lower.tail = FALSE) # P(X >= 80)
p3c <- pnorm(76, mean = mu, sd = s) - pnorm(68, mean = mu, sd = s) # P(68 <= X <= 76)
x90 <- qnorm(0.90, mean = mu, sd = s) # percentil 90
x5 <- qnorm(0.05, mean = mu, sd = s, lower.tail = FALSE) # deja por encima el 5 %
tabla(c("P(X < 60)", "P(X >= 80)", "P(68 <= X <= 76)", "Percentil 90",
"x que deja por encima el 5 %"),
c(p3a, p3b, p3c, x90, x5))| Resultado | Valor |
|---|---|
| P(X < 60) | 0.0668 |
| P(X >= 80) | 0.1587 |
| P(68 <= X <= 76) | 0.3829 |
| Percentil 90 | 82.2524 |
| x que deja por encima el 5 % | 85.1588 |
grafica_fx(function(x) dnorm(x, mu, s), 40, 104, titulo = "Normal(72, 8\u00b2) - en azul P(68 <= X <= 76)",
regiones = list(c(68, 76)), media = mu)La curva es simétrica respecto a la media \(\mu = 72\). Por eso \(68\) y \(76\) quedan a la misma distancia de la media (\(\pm 4\)) y el intervalo \([68, 76]\) está centrado en ella.
\[X \sim N(\mu = 500,\ \sigma^2 = 40^2)\]
mu <- 500; s <- 40
p4a <- pnorm(450, mean = mu, sd = s) # P(X <= 450)
p4b <- pnorm(575, mean = mu, sd = s, lower.tail = FALSE) # P(X > 575)
p4c <- pnorm(540, mean = mu, sd = s) - pnorm(480, mean = mu, sd = s) # P(480 < X < 540)
c80 <- qnorm(c(0.10, 0.90), mean = mu, sd = s) # 80 % central
x99 <- qnorm(0.99, mean = mu, sd = s) # percentil 99
tabla(c("P(X <= 450)", "P(X > 575)", "P(480 < X < 540)",
"Límite inferior del 80 % central", "Límite superior del 80 % central",
"Percentil 99"),
c(p4a, p4b, p4c, c80[1], c80[2], x99))| Resultado | Valor |
|---|---|
| P(X <= 450) | 0.1056 |
| P(X > 575) | 0.0304 |
| P(480 < X < 540) | 0.5328 |
| Límite inferior del 80 % central | 448.7379 |
| Límite superior del 80 % central | 551.2621 |
| Percentil 99 | 593.0539 |
grafica_fx(function(x) dnorm(x, mu, s), 360, 640, titulo = "Normal(500, 40\u00b2) - en azul el 80 % central",
regiones = list(c80), media = mu)\[X \sim \text{Exp}(\lambda = 0.25)\] \[f(x) = \lambda e^{-\lambda x}, \qquad x \geq 0\]
l <- 0.25
p5a <- pexp(2, rate = l) # P(X <= 2)
p5b <- pexp(5, rate = l, lower.tail = FALSE) # P(X > 5)
p5c <- pexp(6, rate = l) - pexp(2, rate = l) # P(2 < X <= 6)
x90 <- qexp(0.90, rate = l) # P(X <= x) = 0.90
E5 <- 1 / l # E[X] = 1/λ
V5 <- 1 / l^2 # V[X] = 1/λ²
tabla(c("P(X <= 2)", "P(X > 5)", "P(2 < X <= 6)", "x tal que P(X <= x) = 0.90",
"E[X]", "V[X]"),
c(p5a, p5b, p5c, x90, E5, V5))| Resultado | Valor |
|---|---|
| P(X <= 2) | 0.3935 |
| P(X > 5) | 0.2865 |
| P(2 < X <= 6) | 0.3834 |
| x tal que P(X <= x) = 0.90 | 9.2103 |
| E[X] | 4.0000 |
| V[X] | 16.0000 |
grafica_fx(function(x) dexp(x, rate = l), 0, 30, titulo = "Exponencial(\u03bb = 0.25)",
regiones = list(c(2, 6)), media = E5)\[\ln(X) \sim N(\mu = 3.5,\ \sigma^2 = 0.40^2) \quad \Longrightarrow \quad X \sim \text{Lognormal}(3.5,\ 0.40^2)\] \[E[X] = e^{\mu + \sigma^2/2}, \qquad V[X] = \left(e^{\sigma^2} - 1\right) e^{2\mu + \sigma^2}\]
ml <- 3.5; sl <- 0.40
p6a <- plnorm(25, meanlog = ml, sdlog = sl) # P(X <= 25)
p6b <- plnorm(50, meanlog = ml, sdlog = sl, lower.tail = FALSE) # P(X > 50)
p6c <- plnorm(40, meanlog = ml, sdlog = sl) - plnorm(20, meanlog = ml, sdlog = sl) # P(20 <= X < 40)
med6 <- qlnorm(0.50, meanlog = ml, sdlog = sl) # mediana = e^μ
x90 <- qlnorm(0.90, meanlog = ml, sdlog = sl) # percentil 90
E6 <- exp(ml + sl^2 / 2) # E[X]
V6 <- (exp(sl^2) - 1) * exp(2 * ml + sl^2) # V[X]
tabla(c("P(X <= 25)", "P(X > 50)", "P(20 <= X < 40)", "Mediana de X",
"Percentil 90", "E[X]", "V[X]"),
c(p6a, p6b, p6c, med6, x90, E6, V6))| Resultado | Valor |
|---|---|
| P(X <= 25) | 0.2411 |
| P(X > 50) | 0.1515 |
| P(20 <= X < 40) | 0.5779 |
| Mediana de X | 33.1155 |
| Percentil 90 | 55.2916 |
| E[X] | 35.8735 |
| V[X] | 223.2930 |
grafica_fx(function(x) dlnorm(x, ml, sl), 0, 100, titulo = "Lognormal(3.5, 0.40\u00b2)",
regiones = list(c(20, 40)), media = E6)\[X \sim \text{Gamma}(\alpha = 3,\ \lambda
= 0.5)\] \[f(x) =
\frac{\lambda^\alpha}{\Gamma(\alpha)}\, x^{\alpha - 1} e^{-\lambda x},
\qquad x > 0\] \(\lambda\) es
la tasa, por eso en R se usa rate = 0.5
(equivale a scale = 1/0.5 = 2).
al <- 3; l <- 0.5
p7a <- pgamma(4, shape = al, rate = l) # P(X <= 4)
p7b <- pgamma(8, shape = al, rate = l, lower.tail = FALSE) # P(X > 8)
p7c <- pgamma(7, shape = al, rate = l) - pgamma(3, shape = al, rate = l) # P(3 <= X < 7)
x95 <- qgamma(0.95, shape = al, rate = l) # percentil 95
E7 <- al / l # E[X] = α/λ
V7 <- al / l^2 # V[X] = α/λ²
tabla(c("P(X <= 4)", "P(X > 8)", "P(3 <= X < 7)", "Percentil 95", "E[X]", "V[X]"),
c(p7a, p7b, p7c, x95, E7, V7))| Resultado | Valor |
|---|---|
| P(X <= 4) | 0.3233 |
| P(X > 8) | 0.2381 |
| P(3 <= X < 7) | 0.4880 |
| Percentil 95 | 12.5916 |
| E[X] | 6.0000 |
| V[X] | 12.0000 |
grafica_fx(function(x) dgamma(x, shape = al, rate = l), 0, 25, titulo = "Gamma(\u03b1 = 3, \u03bb = 0.5)",
regiones = list(c(3, 7)), media = E7)\[X \sim \text{Beta}(\alpha = 2.5,\ \beta = 4), \qquad 0 \leq x \leq 1\] \[E[X] = \frac{\alpha}{\alpha + \beta}, \qquad V[X] = \frac{\alpha\beta}{(\alpha + \beta)^2(\alpha + \beta + 1)}\]
a <- 2.5; b <- 4
p8a <- pbeta(0.30, shape1 = a, shape2 = b) # P(X <= 0.30)
p8b <- pbeta(0.60, shape1 = a, shape2 = b, lower.tail = FALSE) # P(X > 0.60)
p8c <- pbeta(0.50, shape1 = a, shape2 = b) - pbeta(0.20, shape1 = a, shape2 = b) # P(0.20 <= X < 0.50)
x75 <- qbeta(0.75, shape1 = a, shape2 = b) # percentil 75
E8 <- a / (a + b) # E[X]
V8 <- a * b / ((a + b)^2 * (a + b + 1)) # V[X]
tabla(c("P(X <= 0.30)", "P(X > 0.60)", "P(0.20 <= X < 0.50)", "Percentil 75", "E[X]", "V[X]"),
c(p8a, p8b, p8c, x75, E8, V8))| Resultado | Valor |
|---|---|
| P(X <= 0.30) | 0.3522 |
| P(X > 0.60) | 0.1300 |
| P(0.20 <= X < 0.50) | 0.5723 |
| Percentil 75 | 0.5088 |
| E[X] | 0.3846 |
| V[X] | 0.0316 |
grafica_fx(function(x) dbeta(x, a, b), 0, 1, titulo = "Beta(2.5, 4)",
regiones = list(c(0.20, 0.50)), media = E8)\[X \sim \text{Weibull}(k = 2,\ \lambda = 1000)\] \[F(x) = 1 - e^{-(x/\lambda)^k}, \qquad x \geq 0\]
k <- 2; sc <- 1000
p9a <- pweibull(500, shape = k, scale = sc) # P(X <= 500)
p9b <- pweibull(1200, shape = k, scale = sc, lower.tail = FALSE) # P(X > 1200)
p9c <- pweibull(1000, shape = k, scale = sc) - pweibull(600, shape = k, scale = sc) # P(600 <= X < 1000)
med9 <- qweibull(0.50, shape = k, scale = sc) # mediana
x90 <- qweibull(0.90, shape = k, scale = sc) # percentil 90
tabla(c("P(X <= 500)", "P(X > 1200)", "P(600 <= X < 1000)", "Mediana de X", "Percentil 90"),
c(p9a, p9b, p9c, med9, x90))| Resultado | Valor |
|---|---|
| P(X <= 500) | 0.2212 |
| P(X > 1200) | 0.2369 |
| P(600 <= X < 1000) | 0.3298 |
| Mediana de X | 832.5546 |
| Percentil 90 | 1517.4271 |
grafica_fx(function(x) dweibull(x, shape = k, scale = sc), 0, 2500, titulo = "Weibull(k = 2, \u03bb = 1000)",
regiones = list(c(600, 1000)))\(X\): tiempo de validación de un pedido (segundos). \[X \sim U(a = 1.5,\ b = 4.5), \qquad f(x) = \frac{1}{3}, \quad 1.5 \leq x \leq 4.5\]
a <- 1.5; b <- 4.5
p10a <- punif(3, min = a, max = b) # P(X < 3)
p10b <- punif(4, min = a, max = b) - punif(2, min = a, max = b) # P(2 <= X <= 4)
x10 <- qunif(0.90, min = a, max = b) # inicio del 10 % más lento
tabla(c("P(X < 3)", "P(2 <= X <= 4)", "Tiempo desde el cual está el 10 % más lento"),
c(p10a, p10b, x10))| Resultado | Valor |
|---|---|
| P(X < 3) | 0.5000 |
| P(2 <= X <= 4) | 0.6667 |
| Tiempo desde el cual está el 10 % más lento | 4.2000 |
grafica_fx(function(x) dunif(x, a, b), 1, 5, titulo = "Uniforme(1.5, 4.5) - en azul X < 3 y el 10 % más lento",
regiones = list(c(a, 3), c(x10, b)), extra = c(a - 1e-9, a, b, b + 1e-9),
xlab = "Segundos")Una validación pertenece al 10 % más lento si tarda más de 4.2 segundos. El criterio de desempeño pide que \(P(X < 3) > 0.45\) y se obtiene 0.5, por lo tanto sí se cumple el criterio.
\(X\): peso de una bolsa (gramos). \[X \sim N(\mu = 500,\ \sigma^2 = 8^2)\] Aceptación: \(485 \leq X \leq 515\). Revisión individual: 2 % más bajo o 2 % más alto.
mu <- 500; s <- 8
p11a <- pnorm(515, mean = mu, sd = s) - pnorm(485, mean = mu, sd = s) # proporción aceptada
p11b <- pnorm(520, mean = mu, sd = s, lower.tail = FALSE) # P(X > 520)
lim_rev <- qnorm(c(0.02, 0.98), mean = mu, sd = s) # límites de revisión
fuera <- 10000 * (1 - p11a) # bolsas fuera de 485-515
tabla(c("Proporción dentro de 485 y 515", "P(X > 520)",
"Peso inferior de revisión (2 %)", "Peso superior de revisión (98 %)",
"Bolsas fuera del intervalo (de 10000)"),
c(p11a, p11b, lim_rev[1], lim_rev[2], fuera))| Resultado | Valor |
|---|---|
| Proporción dentro de 485 y 515 | 0.9392 |
| P(X > 520) | 0.0062 |
| Peso inferior de revisión (2 %) | 483.5700 |
| Peso superior de revisión (98 %) | 516.4300 |
| Bolsas fuera del intervalo (de 10000) | 607.9272 |
grafica_fx(function(x) dnorm(x, mu, s), 470, 530, titulo = "Normal(500, 8\u00b2) - en azul la región de revisión",
regiones = list(c(470, lim_rev[1]), c(lim_rev[2], 530)), media = mu, xlab = "Gramos")Para analizar el último punto se compara la proporción fuera de especificación con el mismo centro (500 g) y distintas desviaciones:
sigmas <- c(4, 8, 15)
fuera_sigma <- 1 - (pnorm(515, mean = 500, sd = sigmas) - pnorm(485, mean = 500, sd = sigmas))
knitr::kable(data.frame(sigma = sigmas, `Proporción fuera de 485-515` = round(fuera_sigma, 4),
check.names = FALSE), align = "c")| sigma | Proporción fuera de 485-515 |
|---|---|
| 4 | 0.0002 |
| 8 | 0.0608 |
| 15 | 0.3173 |
Se espera que el 93.92 % de las bolsas cumpla el intervalo de aceptación, es decir, unas 608 de cada 10000 quedan por fuera. Los pesos que delimitan la revisión individual son 483.57 g y 516.43 g.
Centrar el proceso en 500 g no garantiza por sí solo una baja proporción fuera de especificación: con el mismo centro, la proporción fuera de límites cambia mucho según la desviación estándar (tabla anterior). También importa la variabilidad del proceso.
\(X\): puntaje de la prueba. \[X \sim N(\mu = 70,\ \sigma^2 = 10^2)\] Reconocimiento: 10 % superior. Acompañamiento: 15 % inferior.
mu <- 70; s <- 10
p12a <- pnorm(85, mean = mu, sd = s) - pnorm(65, mean = mu, sd = s) # P(65 <= X <= 85)
x_sup <- qnorm(0.90, mean = mu, sd = s) # puntaje mínimo 10 % superior
x_inf <- qnorm(0.15, mean = mu, sd = s) # puntaje máximo 15 % inferior
p12b <- pnorm(90, mean = mu, sd = s, lower.tail = FALSE) # P(X > 90)
reconocidos <- 600 * 0.10
acomp <- 600 * 0.15
tabla(c("P(65 <= X <= 85)", "Puntaje mínimo del 10 % superior", "Puntaje máximo del 15 % inferior",
"P(X > 90)", "Estudiantes con reconocimiento (de 600)", "Estudiantes con acompañamiento (de 600)"),
c(p12a, x_sup, x_inf, p12b, reconocidos, acomp))| Resultado | Valor |
|---|---|
| P(65 <= X <= 85) | 0.6247 |
| Puntaje mínimo del 10 % superior | 82.8155 |
| Puntaje máximo del 15 % inferior | 59.6357 |
| P(X > 90) | 0.0228 |
| Estudiantes con reconocimiento (de 600) | 60.0000 |
| Estudiantes con acompañamiento (de 600) | 90.0000 |
grafica_fx(function(x) dnorm(x, mu, s), 30, 110,
titulo = "Normal(70, 10\u00b2) - en azul 15 % inferior y 10 % superior",
regiones = list(c(30, x_inf), c(x_sup, 110)), media = mu, xlab = "Puntaje")Reciben reconocimiento quienes obtengan al menos 82.82 puntos y se convoca a acompañamiento a quienes obtengan 59.64 puntos o menos. De 600 estudiantes se esperan 60 con reconocimiento y 90 con acompañamiento. Son cantidades esperadas (promedio), así que en una aplicación real el número observado puede variar un poco.
\(X\): horas hasta una interrupción menor. \[E[X] = \frac{1}{\lambda} = 200 \quad \Longrightarrow \quad \lambda = \frac{1}{200} = 0.005\] \[X \sim \text{Exp}(\lambda = 0.005)\]
l <- 1 / 200
p13a <- pexp(300, rate = l, lower.tail = FALSE) # P(X > 300)
p13b <- pexp(250, rate = l) - pexp(100, rate = l) # P(100 < X < 250)
t20 <- qexp(0.20, rate = l) # P(X <= t) = 0.20
p13c <- pexp(250, rate = l, lower.tail = FALSE) /
pexp(150, rate = l, lower.tail = FALSE) # P(X > 250 | X > 150)
p13d <- pexp(100, rate = l, lower.tail = FALSE) # P(X > 100)
tabla(c("P(X > 300)", "P(100 < X < 250)", "Tiempo con probabilidad acumulada 0.20 (horas)",
"P(X > 250 | X > 150)", "P(X > 100)"),
c(p13a, p13b, t20, p13c, p13d))| Resultado | Valor |
|---|---|
| P(X > 300) | 0.2231 |
| P(100 < X < 250) | 0.3200 |
| Tiempo con probabilidad acumulada 0.20 (horas) | 44.6287 |
| P(X > 250 | X > 150) | 0.6065 |
| P(X > 100) | 0.6065 |
grafica_fx(function(x) dexp(x, rate = l), 0, 1000, titulo = "Exponencial(\u03bb = 0.005) - en azul P(100 < X < 250)",
regiones = list(c(100, 250)), media = 1 / l, xlab = "Horas")Se debe programar el mantenimiento preventivo antes de 44.63 horas, tiempo en el que la probabilidad acumulada de interrupción llega al 20 %.
Si el servidor ya operó 150 horas sin interrupciones, la probabilidad de que opere al menos 100 horas adicionales es \(P(X > 250 \mid X > 150) =\) 0.6065, igual a \(P(X > 100) =\) 0.6065. Esto se debe a la propiedad de falta de memoria de la exponencial: \(P(X > s + t \mid X > s) = P(X > t)\). El tiempo ya transcurrido no cambia la probabilidad del tiempo restante.
\(X\): costo de reparación (millones de pesos). \[\ln(X) \sim N(\mu = 1.2,\ \sigma^2 = 0.5^2) \quad \Longrightarrow \quad X \sim \text{Lognormal}(1.2,\ 0.5^2)\]
ml <- 1.2; sl <- 0.5
p14a <- plnorm(3, meanlog = ml, sdlog = sl) # P(X < 3)
p14b <- plnorm(5, meanlog = ml, sdlog = sl, lower.tail = FALSE) # P(X > 5)
med14 <- qlnorm(0.50, meanlog = ml, sdlog = sl) # mediana = e^μ
x95 <- qlnorm(0.95, meanlog = ml, sdlog = sl) # superado solo por el 5 %
E14 <- exp(ml + sl^2 / 2) # media
tabla(c("P(X < 3)", "P(X > 5)", "Costo mediano (millones)", "Costo superado solo por el 5 % (millones)",
"Costo medio E[X] (millones)"),
c(p14a, p14b, med14, x95, E14))| Resultado | Valor |
|---|---|
| P(X < 3) | 0.4197 |
| P(X > 5) | 0.2064 |
| Costo mediano (millones) | 3.3201 |
| Costo superado solo por el 5 % (millones) | 7.5566 |
| Costo medio E[X] (millones) | 3.7622 |
grafica_fx(function(x) dlnorm(x, ml, sl), 0, 15, titulo = "Lognormal(1.2, 0.5\u00b2) - línea: media",
regiones = list(c(5, 15)), media = E14, xlab = "Millones de pesos")La mediana es 3.32 millones y la media es 3.76 millones, así que la media es mayor. En una lognormal la distribución tiene asimetría positiva: unas pocas reparaciones muy costosas alargan la cola derecha y suben la media, pero casi no mueven la mediana. Por eso la media y la mediana no se esperan iguales (solo coinciden en distribuciones simétricas).
\(X\): tiempo total para completar una solicitud (minutos). \[X \sim \text{Gamma}(\alpha = 4,\ \lambda = 0.20)\]
al <- 4; l <- 0.20
E15 <- al / l # tiempo promedio
p15a <- pgamma(30, shape = al, rate = l) # P(X < 30)
p15b <- pgamma(25, shape = al, rate = l) - pgamma(15, shape = al, rate = l) # P(15 < X < 25)
x90 <- qgamma(0.90, shape = al, rate = l) # no superado por el 90 %
tabla(c("Tiempo promedio E[X] (min)", "P(X < 30)", "P(15 < X < 25)",
"Tiempo no superado por el 90 % (min)"),
c(E15, p15a, p15b, x90))| Resultado | Valor |
|---|---|
| Tiempo promedio E[X] (min) | 20.0000 |
| P(X < 30) | 0.8488 |
| P(15 < X < 25) | 0.3822 |
| Tiempo no superado por el 90 % (min) | 33.4039 |
grafica_fx(function(x) dgamma(x, shape = al, rate = l), 0, 80, titulo = "Gamma(\u03b1 = 4, \u03bb = 0.20) - en azul X < 30",
regiones = list(c(0, 30)), media = E15, xlab = "Minutos")La meta de la administración es que al menos el 80 % de las solicitudes se resuelva en menos de 30 minutos. Como \(P(X < 30) =\) 0.8488, la promesa sí cumple la meta. Aunque el tiempo promedio es 20 minutos, lo que garantiza la promesa es la probabilidad acumulada hasta 30 minutos, no el promedio.
\(X\): proporción diaria de utilización de la capacidad. \[X \sim \text{Beta}(\alpha = 5,\ \beta = 2), \qquad 0 \leq x \leq 1\] Alta utilización: \(X > 0.80\). Baja utilización: \(X < 0.50\).
a <- 5; b <- 2
E16 <- a / (a + b) # utilización promedio
p16a <- pbeta(0.80, shape1 = a, shape2 = b, lower.tail = FALSE) # P(X > 0.80)
p16b <- pbeta(0.50, shape1 = a, shape2 = b) # P(X < 0.50)
x10 <- qbeta(0.10, shape1 = a, shape2 = b, lower.tail = FALSE) # superado solo por el 10 %
dias <- 250 * p16a # días esperados con alta utilización
tabla(c("Utilización promedio E[X]", "P(X > 0.80)", "P(X < 0.50)",
"Utilización superada solo por el 10 % de los días",
"Días esperados con utilización > 80 % (de 250)"),
c(E16, p16a, p16b, x10, dias))| Resultado | Valor |
|---|---|
| Utilización promedio E[X] | 0.7143 |
| P(X > 0.80) | 0.3446 |
| P(X < 0.50) | 0.1094 |
| Utilización superada solo por el 10 % de los días | 0.9074 |
| Días esperados con utilización > 80 % (de 250) | 86.1600 |
grafica_fx(function(x) dbeta(x, a, b), 0, 1, titulo = "Beta(5, 2) - en azul baja y alta utilización",
regiones = list(c(0, 0.50), c(0.80, 1)), media = E16, xlab = "Proporción de utilización")Se espera una utilización promedio de 0.7143. Un día es de alta utilización con probabilidad 0.3446, así que en 250 días se esperan unos 86.2 días con utilización superior al 80 %.
\(X\): vida útil del rodamiento (horas). \[X \sim \text{Weibull}(k = 2.5,\ \lambda = 5000)\]
k <- 2.5; sc <- 5000
p17a <- pweibull(3000, shape = k, scale = sc) # P(X < 3000)
p17b <- pweibull(6000, shape = k, scale = sc, lower.tail = FALSE) # P(X > 6000)
t10 <- qweibull(0.10, shape = k, scale = sc) # F(t) = 0.10
med17 <- qweibull(0.50, shape = k, scale = sc) # mediana
p17c <- pweibull(2000, shape = k, scale = sc) # falla acumulada a 2000 h
tabla(c("P(X < 3000)", "P(X > 6000)", "Tiempo con falla acumulada del 10 % (horas)",
"Mediana de la vida útil (horas)", "Falla acumulada a las 2000 horas"),
c(p17a, p17b, t10, med17, p17c))| Resultado | Valor |
|---|---|
| P(X < 3000) | 0.2434 |
| P(X > 6000) | 0.2065 |
| Tiempo con falla acumulada del 10 % (horas) | 2032.5496 |
| Mediana de la vida útil (horas) | 4318.1745 |
| Falla acumulada a las 2000 horas | 0.0962 |
grafica_fx(function(x) dweibull(x, shape = k, scale = sc), 0, 12000,
titulo = "Weibull(k = 2.5, \u03bb = 5000) - en azul el 10 % que falla primero",
regiones = list(c(0, t10)), xlab = "Horas")
Manuel Alejandro Vargas Imuez
Teoría de Probabilidades
Pontificia Universidad Javeriana Cali