# 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"))
}

Problema 1

\[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))

Problema 2

\[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\).

Problema 3

\[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.

Problema 4

\[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)

Problema 5

\[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)

Problema 6

\[\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)

Problema 7

\[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)

Problema 8

\[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)

Problema 9

\[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)))

Problema 10

\(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.

Problema 11

\(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.

Problema 12

\(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.

Problema 13

\(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.

Problema 14

\(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).

Problema 15

\(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.

Problema 16

\(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 %.

Problema 17

\(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")

  • Como \(k = 2.5 > 1\), la tasa de falla es creciente: el rodamiento se desgasta con el uso y el riesgo de falla aumenta con la edad.
  • El tiempo en el que ha fallado el 10 % es 2032.55 horas. Para que no falle más del 10 %, el reemplazo preventivo debe programarse antes de ese tiempo.
  • Una propuesta coherente es reemplazar a las 2000 horas: la falla acumulada en ese momento es 0.0962, que es menor al 10 %.

Manuel Alejandro Vargas Imuez
Teoría de Probabilidades
Pontificia Universidad Javeriana Cali