Problema 1 — Clasificación de variables: discretas vs continuas

Una variable es discreta si sus valores se pueden contar (enteros), y continua si se puede medir y tomar cualquier valor dentro de un rango.

variables <- data.frame(
  Variable = c("X", "Y", "M", "Z", "G", "Q", "R", "S", "T", "V", "W"),
  Descripcion = c(
    "Número de accidentes automovilísticos en un día en Cali",
    "Tiempo en recorrer 100 metros (segundos)",
    "Cantidad de leche que produce una vaca semanalmente (litros)",
    "Número de huevos que produce una gallina semanalmente",
    "Número de permisos de construcción aprobados mensualmente en Cali",
    "Peso en kilogramos de un automóvil",
    "Envergadura de las alas de un cóndor en metros",
    "Tiempo que dedica una persona al ocio (horas)",
    "Ingresos de una familia en pesos por mes",
    "Cantidad de calorías que contiene una bebida gaseosa",
    "Largo del fémur de un adulto humano en centímetros"
  ),
  Tipo = c(
    "Discreta", "Continua", "Continua", "Discreta", "Discreta",
    "Continua", "Continua", "Continua", "Discreta", "Discreta", "Continua"
  ),
  Justificacion = c(
    "Se cuentan: 0, 1, 2... no puede haber 2.7 accidentes",
    "Se mide: puede ser 13.472 s, 13.4721 s, etc.",
    "Se mide: puede ser 45.3 litros, 45.31 litros, etc.",
    "Se cuentan: 0, 1, 2... no puede poner 4.5 huevos",
    "Se cuentan: 0, 1, 2... no puede haber 15.6 permisos",
    "Se mide: puede ser 1250.47 kg, 1250.471 kg, etc.",
    "Se mide: puede ser 2.73 m, 2.731 m, etc.",
    "Se mide: puede ser 3.5 h, 3.52 h, etc.",
    "Se cuentan: unidades enteras de pesos colombianos",
    "Se cuentan: 150, 151, 152 kcal (valores enteros)",
    "Se mide: puede ser 45.3 cm, 45.31 cm, etc."
  )
)
knitr::kable(variables, caption = "Clasificación de variables aleatorias")
Clasificación de variables aleatorias
Variable Descripcion Tipo Justificacion
X Número de accidentes automovilísticos en un día en Cali Discreta Se cuentan: 0, 1, 2… no puede haber 2.7 accidentes
Y Tiempo en recorrer 100 metros (segundos) Continua Se mide: puede ser 13.472 s, 13.4721 s, etc.
M Cantidad de leche que produce una vaca semanalmente (litros) Continua Se mide: puede ser 45.3 litros, 45.31 litros, etc.
Z Número de huevos que produce una gallina semanalmente Discreta Se cuentan: 0, 1, 2… no puede poner 4.5 huevos
G Número de permisos de construcción aprobados mensualmente en Cali Discreta Se cuentan: 0, 1, 2… no puede haber 15.6 permisos
Q Peso en kilogramos de un automóvil Continua Se mide: puede ser 1250.47 kg, 1250.471 kg, etc.
R Envergadura de las alas de un cóndor en metros Continua Se mide: puede ser 2.73 m, 2.731 m, etc.
S Tiempo que dedica una persona al ocio (horas) Continua Se mide: puede ser 3.5 h, 3.52 h, etc.
T Ingresos de una familia en pesos por mes Discreta Se cuentan: unidades enteras de pesos colombianos
V Cantidad de calorías que contiene una bebida gaseosa Discreta Se cuentan: 150, 151, 152 kcal (valores enteros)
W Largo del fémur de un adulto humano en centímetros Continua Se mide: puede ser 45.3 cm, 45.31 cm, etc.

Problema 2 — Encontrar el valor de C

Para que \(f(x) = C\binom{2}{x}\binom{3}{3-x}\) sea una función de probabilidad válida, la suma de todas las probabilidades debe ser igual a 1: \(\sum f(x) = 1\).

# Calculo f(x) para cada valor usando combinatorios
fx_p2 <- function(x, C) {
  C * choose(2, x) * choose(3, 3 - x)
}

cat("Evaluando f(x) para x = 0, 1, 2:\n\n")
## Evaluando f(x) para x = 0, 1, 2:
cat("f(0) = C × C(2,0) × C(3,3) = C ×", choose(2,0), "×", choose(3,3), "= C ×", choose(2,0)*choose(3,3), "\n")
## f(0) = C × C(2,0) × C(3,3) = C × 1 × 1 = C × 1
cat("f(1) = C × C(2,1) × C(3,2) = C ×", choose(2,1), "×", choose(3,2), "= C ×", choose(2,1)*choose(3,2), "\n")
## f(1) = C × C(2,1) × C(3,2) = C × 2 × 3 = C × 6
cat("f(2) = C × C(2,2) × C(3,1) = C ×", choose(2,2), "×", choose(3,1), "= C ×", choose(2,2)*choose(3,1), "\n\n")
## f(2) = C × C(2,2) × C(3,1) = C × 1 × 3 = C × 3
suma_coef <- choose(2,0)*choose(3,3) + choose(2,1)*choose(3,2) + choose(2,2)*choose(3,1)
cat("Aplicando condición de suma = 1:\n")
## Aplicando condición de suma = 1:
cat("C ×", choose(2,0)*choose(3,3), "+ C ×", choose(2,1)*choose(3,2),
    "+ C ×", choose(2,2)*choose(3,1), "= 1\n")
## C × 1 + C × 6 + C × 3 = 1
cat("C ×", suma_coef, "= 1\n")
## C × 10 = 1
C <- 1 / suma_coef
cat("C = 1/", suma_coef, "=", C, "\n\n")
## C = 1/ 10 = 0.1
# Tabla final
tabla_p2 <- data.frame(
  x    = 0:2,
  fx   = round(sapply(0:2, fx_p2, C = C), 4)
)
knitr::kable(tabla_p2, col.names = c("x", "f(x)"), caption = "Distribución de probabilidad con C = 1/10")
Distribución de probabilidad con C = 1/10
x f(x)
0 0.1
1 0.6
2 0.3
cat("Verificación suma:", sum(tabla_p2$fx), "✓\n")
## Verificación suma: 1 ✓
barplot(tabla_p2$fx, names.arg = tabla_p2$x,
        col = "#2980b9", border = "white",
        xlab = "x", ylab = "f(x)",
        main = "Distribución de probabilidad — Problema 2",
        ylim = c(0, 0.7))
Función de probabilidad f(x) con C = 1/10

Función de probabilidad f(x) con C = 1/10


Problema 3 — Imperfecciones en tela sintética

x3  <- 0:4
fx3 <- c(0.41, 0.37, 0.16, 0.05, 0.01)
Fx3 <- cumsum(fx3)

cat("Verificación suma f(x):", sum(fx3), "✓\n\n")
## Verificación suma f(x): 1 ✓
tabla_p3 <- data.frame(x = x3, `f(x)` = fx3, `F(x)` = Fx3)
knitr::kable(tabla_p3, caption = "Función de masa f(x) y distribución acumulada F(x)")
Función de masa f(x) y distribución acumulada F(x)
x f.x. F.x.
0 0.41 0.41
1 0.37 0.78
2 0.16 0.94
3 0.05 0.99
4 0.01 1.00

Gráficas de f(x) y F(x)

par(mfrow = c(1, 2))

barplot(fx3, names.arg = x3, col = "#2980b9", border = "white",
        xlab = "x (imperfecciones)", ylab = "f(x)",
        main = "Función de masa f(x)", ylim = c(0, 0.50))

plot(c(-0.5, 0), c(0, 0), type = "l", lwd = 2.5, col = "#e74c3c",
     xlim = c(-0.5, 5), ylim = c(0, 1.05),
     xlab = "x", ylab = "F(x)", main = "Distribución acumulada F(x)")
segments(x0 = c(0,1,2,3,4), y0 = Fx3, x1 = c(1,2,3,4,5), lwd = 2.5, col = "#e74c3c")
points(x3, Fx3, pch = 16, col = "#e74c3c", cex = 1.2)
points(c(0,1,2,3,4), c(0, Fx3[-5]), pch = 1, col = "#e74c3c", cex = 1.2)
abline(h = c(0,1), col = "gray80", lty = 2)
f(x) y F(x) — imperfecciones en tela

f(x) y F(x) — imperfecciones en tela

P(X < 3) — menos de 3 imperfecciones

p_menos3 <- sum(fx3[x3 < 3])
cat("P(X < 3) = f(0) + f(1) + f(2)\n")
## P(X < 3) = f(0) + f(1) + f(2)
cat("         = 0.41 + 0.37 + 0.16\n")
##          = 0.41 + 0.37 + 0.16
cat("         =", p_menos3, "\n")
##          = 0.94
cat("También: F(2) =", Fx3[3], "\n\n")
## También: F(2) = 0.94
cat("Interpretación: el", p_menos3*100,"% de los rollos de 10 metros tiene menos de 3 imperfecciones.\n")
## Interpretación: el 94 % de los rollos de 10 metros tiene menos de 3 imperfecciones.

Valor esperado E[X]

EX3 <- sum(x3 * fx3)
cat("E[X] = (0×0.41) + (1×0.37) + (2×0.16) + (3×0.05) + (4×0.01)\n")
## E[X] = (0×0.41) + (1×0.37) + (2×0.16) + (3×0.05) + (4×0.01)
cat("     = 0.00 + 0.37 + 0.32 + 0.15 + 0.04\n")
##      = 0.00 + 0.37 + 0.32 + 0.15 + 0.04
cat("     =", EX3, "\n\n")
##      = 0.88
cat("Interpretación: en promedio hay", EX3, "imperfecciones por cada 10 metros de tela.\n")
## Interpretación: en promedio hay 0.88 imperfecciones por cada 10 metros de tela.

Varianza V[X]

EX2_3 <- sum(x3^2 * fx3)
VX3   <- EX2_3 - EX3^2
cat("E[X²] = (0²×0.41) + (1²×0.37) + (2²×0.16) + (3²×0.05) + (4²×0.01)\n")
## E[X²] = (0²×0.41) + (1²×0.37) + (2²×0.16) + (3²×0.05) + (4²×0.01)
cat("      = 0.00 + 0.37 + 0.64 + 0.45 + 0.16\n")
##       = 0.00 + 0.37 + 0.64 + 0.45 + 0.16
cat("      =", EX2_3, "\n\n")
##       = 1.62
cat("V[X] = E[X²] - (E[X])²\n")
## V[X] = E[X²] - (E[X])²
cat("     =", EX2_3, "-", round(EX3^2, 4), "\n")
##      = 1.62 - 0.7744
cat("     =", round(VX3, 4), "\n")
##      = 0.8456

Problema 4 — Espacio muestral: tres lanzamientos de moneda

S <- expand.grid(L1 = c("C","S"), L2 = c("C","S"), L3 = c("C","S"))
S$W <- rowSums(S == "S")
colnames(S) <- c("Lanzamiento 1", "Lanzamiento 2", "Lanzamiento 3", "W (sellos)")
knitr::kable(S, caption = "Espacio muestral y valor de W en cada punto muestral")
Espacio muestral y valor de W en cada punto muestral
Lanzamiento 1 Lanzamiento 2 Lanzamiento 3 W (sellos)
C C C 0
S C C 1
C S C 1
S S C 2
C C S 1
S C S 2
C S S 2
S S S 3

Problema 5A — Distribución de W con moneda cargada

P(cara) = 2/3 y P(sello) = 1/3 porque la cara tiene el doble de probabilidad que el sello.

pS <- 1/3; pC <- 2/3

resultados <- data.frame(
  Punto = c("CCC","CCS","CSC","SCC","CSS","SCS","SSC","SSS"),
  W     = c(0, 1, 1, 1, 2, 2, 2, 3),
  Probabilidad = round(c(pC^3, pC^2*pS, pC^2*pS, pC^2*pS,
                         pC*pS^2, pC*pS^2, pC*pS^2, pS^3), 6)
)
knitr::kable(resultados, caption = "Probabilidad de cada punto muestral")
Probabilidad de cada punto muestral
Punto W Probabilidad
CCC 0 0.296296
CCS 1 0.148148
CSC 1 0.148148
SCC 1 0.148148
CSS 2 0.074074
SCS 2 0.074074
SSC 2 0.074074
SSS 3 0.037037
dist_W <- aggregate(Probabilidad ~ W, data = resultados, sum)
dist_W$Probabilidad <- round(dist_W$Probabilidad, 6)
knitr::kable(dist_W, caption = "Distribución de probabilidad de W")
Distribución de probabilidad de W
W Probabilidad
0 0.296296
1 0.444444
2 0.222222
3 0.037037
cat("Verificación suma:", sum(dist_W$Probabilidad), "✓\n")
## Verificación suma: 0.999999 ✓
barplot(dist_W$Probabilidad, names.arg = dist_W$W,
        col = "#2980b9", border = "white",
        xlab = "W (número de sellos)", ylab = "f(w)",
        main = "Distribución de probabilidad de W",
        ylim = c(0, 0.50))
Distribución de W — moneda cargada

Distribución de W — moneda cargada


Problema 5B — Vida útil de medicina

\[f_x(x) = \frac{20000}{(x+100)^3}, \quad x \geq 0\]

fx_med <- function(x) 20000 / (x + 100)^3
x_med  <- seq(0, 400, length.out = 500)

a) P(X ≥ 22) — al menos 22 días

p_22 <- integrate(fx_med, 22, Inf)$value
cat("P(X >= 22) = ∫(22 a ∞) 20000/(x+100)³ dx =", round(p_22, 6), "\n")
## P(X >= 22) = ∫(22 a ∞) 20000/(x+100)³ dx = 0.671862
plot(x_med, fx_med(x_med), type = "l", lwd = 2, col = "#2c3e50",
     xlab = "x (días)", ylab = "f(x)", main = "P(X ≥ 22)")
x_s <- seq(22, 400, length.out = 300)
polygon(c(22, x_s, 400), c(0, fx_med(x_s), 0), col = "#3498db80", border = NA)
abline(v = 22, lty = 2, col = "#e74c3c")
text(120, 0.0004, paste0("P = ", round(p_22, 4)), col = "#2980b9", cex = 1.1)
P(X ≥ 22)

P(X ≥ 22)

b) P(80 ≤ X ≤ 120) — entre 80 y 120 días

p_80_120 <- integrate(fx_med, 80, 120)$value
cat("P(80 <= X <= 120) = ∫(80 a 120) 20000/(x+100)³ dx =", round(p_80_120, 6), "\n")
## P(80 <= X <= 120) = ∫(80 a 120) 20000/(x+100)³ dx = 0.10203
plot(x_med, fx_med(x_med), type = "l", lwd = 2, col = "#2c3e50",
     xlab = "x (días)", ylab = "f(x)", main = "P(80 ≤ X ≤ 120)")
x_s2 <- seq(80, 120, length.out = 200)
polygon(c(80, x_s2, 120), c(0, fx_med(x_s2), 0), col = "#27ae6080", border = NA)
abline(v = c(80, 120), lty = 2, col = "#e74c3c")
text(100, 0.0002, paste0("P = ", round(p_80_120, 4)), col = "#27ae60", cex = 1.1)
P(80 ≤ X ≤ 120)

P(80 ≤ X ≤ 120)

c) Valor esperado E[X]

EX_med <- integrate(function(x) x * fx_med(x), 0, Inf)$value
cat("E[X] = ∫(0 a ∞) x · 20000/(x+100)³ dx\n")
## E[X] = ∫(0 a ∞) x · 20000/(x+100)³ dx
cat("E[X] =", round(EX_med, 2), "días\n\n")
## E[X] = 100 días
cat("Interpretación: en promedio un frasco dura", round(EX_med, 0), "días.\n")
## Interpretación: en promedio un frasco dura 100 días.

Problema 6 — Horas de uso de lavadora

X está en unidades de 100 horas. Menos de 120 horas = X < 1.2. Entre 50 y 100 horas = 0.5 ≤ X ≤ 1.0.

fx6 <- function(x) ifelse(x >= 0 & x < 1, x, ifelse(x >= 1 & x <= 2, 2 - x, 0))
x6  <- seq(-0.2, 2.5, length.out = 500)

a) P(X < 1.2) — menos de 120 horas

p_120 <- integrate(function(x) x, 0, 1)$value +
         integrate(function(x) 2 - x, 1, 1.2)$value
cat("P(X < 1.2) = ∫(0 a 1) x dx  +  ∫(1 a 1.2) (2-x) dx\n")
## P(X < 1.2) = ∫(0 a 1) x dx  +  ∫(1 a 1.2) (2-x) dx
cat("           =", integrate(function(x) x, 0, 1)$value,
    "+", integrate(function(x) 2-x, 1, 1.2)$value, "\n")
##            = 0.5 + 0.18
cat("           =", round(p_120, 4), "\n")
##            = 0.68
plot(x6, fx6(x6), type = "l", lwd = 2, col = "#8e44ad",
     xlab = "x (×100 horas)", ylab = "f(x)", main = "P(X < 1.2)")
x_s1 <- seq(0, 1, length.out = 200)
x_s2 <- seq(1, 1.2, length.out = 100)
polygon(c(0, x_s1, 1),   c(0, fx6(x_s1), 0), col = "#9b59b680", border = NA)
polygon(c(1, x_s2, 1.2), c(0, fx6(x_s2), 0), col = "#9b59b680", border = NA)
abline(v = 1.2, lty = 2, col = "#e74c3c")
text(0.5, 0.4, paste0("P = ", round(p_120, 4)), cex = 1.1, col = "#8e44ad")
P(X < 1.2) = P(X < 120 horas)

P(X < 1.2) = P(X < 120 horas)

b) P(0.5 ≤ X ≤ 1.0) — entre 50 y 100 horas

p_50_100 <- integrate(function(x) x, 0.5, 1.0)$value
cat("P(0.5 <= X <= 1.0) = ∫(0.5 a 1) x dx =", round(p_50_100, 4), "\n")
## P(0.5 <= X <= 1.0) = ∫(0.5 a 1) x dx = 0.375
plot(x6, fx6(x6), type = "l", lwd = 2, col = "#8e44ad",
     xlab = "x (×100 horas)", ylab = "f(x)", main = "P(0.5 ≤ X ≤ 1.0)")
x_s3 <- seq(0.5, 1.0, length.out = 200)
polygon(c(0.5, x_s3, 1.0), c(0, fx6(x_s3), 0), col = "#e67e2280", border = NA)
abline(v = c(0.5, 1.0), lty = 2, col = "#e74c3c")
text(0.75, 0.25, paste0("P = ", round(p_50_100, 4)), cex = 1.1, col = "#e67e22")
P(0.5 ≤ X ≤ 1.0)

P(0.5 ≤ X ≤ 1.0)


Problema 7 — Uniforme continua: \(f(x) = 1/2\), \(1 \leq x \leq 3\)

Verificar que el área bajo la curva es 1

cat("Área = (1/2) × (3 - 1) = (1/2) × 2 =",
    integrate(function(x) rep(1/2, length(x)), 1, 3)$value, "✓\n")
## Área = (1/2) × (3 - 1) = (1/2) × 2 = 1 ✓

Probabilidades usando f(x)

cat("P(2 < X < 2.5)  = (1/2)(2.5-2)  =", (1/2)*(2.5-2), "\n")
## P(2 < X < 2.5)  = (1/2)(2.5-2)  = 0.25
cat("P(X = 2.5)      = 0  (variable continua)\n")
## P(X = 2.5)      = 0  (variable continua)
cat("P(2 <= X < 2.5) = (1/2)(2.5-2)  =", (1/2)*(2.5-2), "\n")
## P(2 <= X < 2.5) = (1/2)(2.5-2)  = 0.25
cat("P(X > 2.5)      = (1/2)(3-2.5)  =", (1/2)*(3-2.5), "\n")
## P(X > 2.5)      = (1/2)(3-2.5)  = 0.25
cat("P(X >= 2.5)     = (1/2)(3-2.5)  =", (1/2)*(3-2.5), "\n")
## P(X >= 2.5)     = (1/2)(3-2.5)  = 0.25

En variables continuas P(X = c) = 0 para cualquier valor constante c, por lo tanto P(2 < X < 2.5) = P(2 ≤ X < 2.5) = P(2 < X ≤ 2.5) = P(2 ≤ X ≤ 2.5).

F(x) acumulada y probabilidades con F(x)

\[F(x) = \frac{x-1}{2}, \quad 1 \leq x \leq 3\]

Fx7 <- function(x) (x - 1) / 2
cat("Usando F(x) = (x-1)/2:\n")
## Usando F(x) = (x-1)/2:
cat("P(2 < X < 2.5)  = F(2.5) - F(2)  =", Fx7(2.5), "-", Fx7(2), "=", Fx7(2.5)-Fx7(2), "\n")
## P(2 < X < 2.5)  = F(2.5) - F(2)  = 0.75 - 0.5 = 0.25
cat("P(X = 2.5)      = 0\n")
## P(X = 2.5)      = 0
cat("P(2 <= X < 2.5) = F(2.5) - F(2)  =", Fx7(2.5)-Fx7(2), "\n")
## P(2 <= X < 2.5) = F(2.5) - F(2)  = 0.25
cat("P(X > 2.5)      = 1 - F(2.5)     =", 1-Fx7(2.5), "\n")
## P(X > 2.5)      = 1 - F(2.5)     = 0.25
cat("P(X >= 2.5)     = 1 - F(2.5)     =", 1-Fx7(2.5), "\n")
## P(X >= 2.5)     = 1 - F(2.5)     = 0.25
par(mfrow = c(1, 2))
x7 <- seq(0.5, 3.5, length.out = 400)

fx7_plot <- function(x) ifelse(x >= 1 & x <= 3, 0.5, 0)
plot(x7, fx7_plot(x7), type = "l", lwd = 2, col = "#16a085",
     xlab = "x", ylab = "f(x)", main = "f(x)", ylim = c(0, 0.7))
x_s <- seq(2, 2.5, length.out = 100)
polygon(c(2, x_s, 2.5), c(0, rep(0.5, 100), 0), col = "#1abc9c80", border = NA)
text(2.25, 0.3, "P=0.25", cex = 0.9, col = "#16a085")

plot(x7, punif(x7, 1, 3), type = "l", lwd = 2, col = "#16a085",
     xlab = "x", ylab = "F(x)", main = "F(x) acumulada")
abline(v = 2.5, lty = 2, col = "#e74c3c")
abline(h = Fx7(2.5), lty = 2, col = "#e74c3c")
text(2.8, 0.6, "F(2.5)=0.75", cex = 0.9, col = "#e74c3c")
f(x) y F(x) — uniforme continua

f(x) y F(x) — uniforme continua


Problema 8 — Tiempo en laboratorio: \(f(x) = 2(1-x)\), \(0 \leq x \leq 1\)

fx8 <- function(x) ifelse(x >= 0 & x <= 1, 2*(1-x), 0)
x8  <- seq(-0.1, 1.2, length.out = 300)
cat("Verificación área:", integrate(function(x) 2*(1-x), 0, 1)$value, "✓\n")
## Verificación área: 1 ✓

a) P(X ≤ 1/3)

pA <- integrate(function(x) 2*(1-x), 0, 1/3)$value
cat("P(X <= 1/3) = ∫(0 a 1/3) 2(1-x) dx =", round(pA, 6), "\n")
## P(X <= 1/3) = ∫(0 a 1/3) 2(1-x) dx = 0.555556
plot(x8, fx8(x8), type = "l", lwd = 2, col = "#c0392b",
     xlab = "x", ylab = "f(x)", main = "P(X ≤ 1/3)")
x_s <- seq(0, 1/3, length.out = 100)
polygon(c(0, x_s, 1/3), c(0, fx8(x_s), 0), col = "#e74c3c80", border = NA)
abline(v = 1/3, lty = 2, col = "#c0392b")
text(0.1, 0.5, paste0("P = ", round(pA, 4)), cex = 1.1, col = "#c0392b")
P(X ≤ 1/3)

P(X ≤ 1/3)

b) P(X > 0.5)

pB <- integrate(function(x) 2*(1-x), 0.5, 1)$value
cat("P(X > 0.5) = ∫(0.5 a 1) 2(1-x) dx =", round(pB, 6), "\n")
## P(X > 0.5) = ∫(0.5 a 1) 2(1-x) dx = 0.25
plot(x8, fx8(x8), type = "l", lwd = 2, col = "#c0392b",
     xlab = "x", ylab = "f(x)", main = "P(X > 0.5)")
x_s2 <- seq(0.5, 1, length.out = 100)
polygon(c(0.5, x_s2, 1), c(0, fx8(x_s2), 0), col = "#e74c3c80", border = NA)
abline(v = 0.5, lty = 2, col = "#c0392b")
text(0.7, 0.3, paste0("P = ", round(pB, 4)), cex = 1.1, col = "#c0392b")
P(X > 0.5)

P(X > 0.5)

c) P(X < 0.75 | X ≥ 0.5)

num  <- integrate(function(x) 2*(1-x), 0.5, 0.75)$value
den  <- pB
cond <- num / den
cat("P(0.5 <= X < 0.75) =", round(num, 6), "\n")
## P(0.5 <= X < 0.75) = 0.1875
cat("P(X >= 0.5)        =", round(den, 6), "\n")
## P(X >= 0.5)        = 0.25
cat("P(X < 0.75 | X >= 0.5) =", round(num,6), "/", round(den,6), "=", round(cond, 6), "\n")
## P(X < 0.75 | X >= 0.5) = 0.1875 / 0.25 = 0.75

d) Valor esperado y varianza

EX8   <- integrate(function(x) x * 2*(1-x), 0, 1)$value
EX2_8 <- integrate(function(x) x^2 * 2*(1-x), 0, 1)$value
VX8   <- EX2_8 - EX8^2

cat("E[X]  = ∫(0 a 1) x·2(1-x) dx =", round(EX8, 6), "\n")
## E[X]  = ∫(0 a 1) x·2(1-x) dx = 0.333333
cat("E[X²] = ∫(0 a 1) x²·2(1-x) dx =", round(EX2_8, 6), "\n")
## E[X²] = ∫(0 a 1) x²·2(1-x) dx = 0.166667
cat("V[X]  = E[X²] - (E[X])² =", round(EX2_8,6), "-", round(EX8^2,6), "=", round(VX8, 6), "\n\n")
## V[X]  = E[X²] - (E[X])² = 0.166667 - 0.111111 = 0.055556
cat("Interpretación: el equipo opera en promedio", round(EX8, 4),
    "unidades de tiempo antes de fallar.\n")
## Interpretación: el equipo opera en promedio 0.3333 unidades de tiempo antes de fallar.

Problema 9 — Restaurante con reservas: \(X \sim Binom(n=25,\ p=0.80)\)

El 80% de las personas con reserva asiste (p = 0.80). Hay 25 reservas y 20 mesas. Todas tienen asiento si X ≤ 20.

n9 <- 25; p9 <- 0.80

prob9 <- pbinom(20, n9, p9)
cat("P(X <= 20) = pbinom(20, 25, 0.80) =", round(prob9, 6), "\n\n")
## P(X <= 20) = pbinom(20, 25, 0.80) = 0.579326
cat("Interpretación: hay un", round(prob9*100, 2),
    "% de probabilidad de que todos los asistentes tengan mesa.\n")
## Interpretación: hay un 57.93 % de probabilidad de que todos los asistentes tengan mesa.
cols9 <- ifelse(0:25 <= 20, "#3498db", "#e74c3c")
barplot(dbinom(0:25, n9, p9), names.arg = 0:25,
        col = cols9, border = "white",
        xlab = "X (personas que asisten)", ylab = "f(x)",
        main = "Binomial(25, 0.80) — probabilidad de asistencia")
legend("topleft", legend = c("X ≤ 20: todos tienen mesa", "X > 20: no hay mesas"),
       fill = c("#3498db", "#e74c3c"), border = "white", bty = "n", cex = 0.85)
Distribución binomial — asistentes al restaurante

Distribución binomial — asistentes al restaurante