Problema 1 — Distribución Uniforme: \(X \sim unif(a=10,\ b=20)\)

a <- 10
b <- 20

# grafica de la funcion de densidad
x_seq <- seq(8, 22, length.out = 300)
fx <- dunif(x_seq, a, b)

plot(x_seq, fx, type = "l", lwd = 2, col = "#2980b9",
     xlab = "x", ylab = "f(x)",
     main = "Función de densidad — Uniforme(10, 20)",
     ylim = c(0, 0.15))
abline(v = c(a, b), lty = 2, col = "gray50")

# probabilidades
cat("P(X <= 12)      =", punif(12, a, b), "\n")
## P(X <= 12)      = 0.2
cat("P(13 <= X <= 15)=", punif(15, a, b) - punif(13, a, b), "\n")
## P(13 <= X <= 15)= 0.2
cat("P(X >= 18)      =", punif(18, a, b, lower.tail = FALSE), "\n")
## P(X >= 18)      = 0.2
# valor esperado y varianza
cat("E[X] =", (a + b) / 2, "\n")
## E[X] = 15
cat("V[X] =", (b - a)^2 / 12, "\n")
## V[X] = 8.333333

Problema 2 — Normal estándar \(Z \sim N(0,1)\) — Áreas bajo la curva

# funcion auxiliar para graficar el area sombreada
shade_normal <- function(z1, z2 = NULL, titulo = "") {
  z <- seq(-4, 4, length.out = 500)
  plot(z, dnorm(z), type = "l", lwd = 2, xlab = "z", ylab = "f(z)", main = titulo)
  if (is.null(z2)) {
    # cola derecha desde z1
    zs <- seq(z1, 4, length.out = 200)
    polygon(c(z1, zs, 4), c(0, dnorm(zs), 0), col = "#3498db80", border = NA)
  } else {
    zs <- seq(z1, z2, length.out = 200)
    polygon(c(z1, zs, z2), c(0, dnorm(zs), 0), col = "#3498db80", border = NA)
  }
}

a) Área a la derecha de z = -0.85

shade_normal(-0.85, titulo = "P(Z > -0.85)")

cat("P(Z > -0.85) =", pnorm(-0.85, lower.tail = FALSE))
## P(Z > -0.85) = 0.8023375

b) Área entre z = 0.40 y z = 1.30

shade_normal(0.40, 1.30, titulo = "P(0.40 < Z < 1.30)")

cat("P(0.40 < Z < 1.30) =", pnorm(1.30) - pnorm(0.40))
## P(0.40 < Z < 1.30) = 0.2477778

c) Área entre z = -0.30 y z = 0.90

shade_normal(-0.30, 0.90, titulo = "P(-0.30 < Z < 0.90)")

cat("P(-0.30 < Z < 0.90) =", pnorm(0.90) - pnorm(-0.30))
## P(-0.30 < Z < 0.90) = 0.4338513

d) Área desde z = -1.50 hasta z = -0.45

shade_normal(-1.50, -0.45, titulo = "P(-1.50 < Z < -0.45)")

cat("P(-1.50 < Z < -0.45) =", pnorm(-0.45) - pnorm(-1.50))
## P(-1.50 < Z < -0.45) = 0.259548

Problema 3 — Normal estándar \(Z \sim N(0,1)\) — Más áreas

a) Área a la izquierda de z = 0.56

z <- seq(-4, 4, length.out = 500)
plot(z, dnorm(z), type = "l", lwd = 2, xlab = "z", ylab = "f(z)", main = "P(Z < 0.56)")
zs <- seq(-4, 0.56, length.out = 200)
polygon(c(-4, zs, 0.56), c(0, dnorm(zs), 0), col = "#e74c3c80", border = NA)

cat("P(Z < 0.56) =", pnorm(0.56))
## P(Z < 0.56) = 0.7122603

b) Entre z = -2.93 y z = -2.06

shade_normal(-2.93, -2.06, titulo = "P(-2.93 < Z < -2.06)")

cat("P(-2.93 < Z < -2.06) =", pnorm(-2.06) - pnorm(-2.93))
## P(-2.93 < Z < -2.06) = 0.01800446

c) Entre z = -1.08 y z = 0.70

shade_normal(-1.08, 0.70, titulo = "P(-1.08 < Z < 0.70)")

cat("P(-1.08 < Z < 0.70) =", pnorm(0.70) - pnorm(-1.08))
## P(-1.08 < Z < 0.70) = 0.6179653

d) Desde z = 0.96 hasta z = 1.62

shade_normal(0.96, 1.62, titulo = "P(0.96 < Z < 1.62)")

cat("P(0.96 < Z < 1.62) =", pnorm(1.62) - pnorm(0.96))
## P(0.96 < Z < 1.62) = 0.1159115

Problema 4 — Normal general: \(X \sim N(\mu=150,\ \sigma^2=1000)\)

mu <- 150
sd <- sqrt(1000)   # sigma ≈ 31.62
cat("sigma =", sd, "\n")
## sigma = 31.62278
x_vals <- seq(mu - 4*sd, mu + 4*sd, length.out = 400)
plot(x_vals, dnorm(x_vals, mu, sd), type = "l", lwd = 2, col = "#8e44ad",
     xlab = "x", ylab = "f(x)",
     main = expression(paste("Distribución Normal  ", mu == 150, ",  ", sigma^2 == 1000)))
abline(v = mu, lty = 2, col = "gray")

cat("P(X <= 100)        =", pnorm(100, mu, sd), "\n")
## P(X <= 100)        = 0.05692315
cat("P(300 <= X <= 400) =", pnorm(400, mu, sd) - pnorm(300, mu, sd), "\n")
## P(300 <= X <= 400) = 1.050718e-06
cat("P(X >= 550)        =", pnorm(550, mu, sd, lower.tail = FALSE), "\n")
## P(X >= 550)        = 5.657419e-37
# valor de k tal que P(mu-k < X < mu+k) = 0.90 y 0.95
k90 <- qnorm(0.95) * sd
k95 <- qnorm(0.975) * sd
cat("\nP(-k < X < k) = 0.90 → k =", round(k90, 4),
    "→ intervalo: (", round(mu - k90, 2), ",", round(mu + k90, 2), ")\n")
## 
## P(-k < X < k) = 0.90 → k = 52.0148 → intervalo: ( 97.99 , 202.01 )
cat("P(-k < X < k) = 0.95 → k =", round(k95, 4),
    "→ intervalo: (", round(mu - k95, 2), ",", round(mu + k95, 2), ")\n")
## P(-k < X < k) = 0.95 → k = 61.9795 → intervalo: ( 88.02 , 211.98 )

Problema 5 — Distribución Exponencial: \(X \sim exp(\lambda=2)\)

cat("P(X <= 0)   =", pexp(0, rate = 2), "\n")
## P(X <= 0)   = 0
cat("P(X >= 2)   =", pexp(2, rate = 2, lower.tail = FALSE), "\n")
## P(X >= 2)   = 0.01831564
cat("P(1 < X < 2)=", pexp(2, rate = 2) - pexp(1, rate = 2), "\n")
## P(1 < X < 2)= 0.1170196
x_e <- seq(0, 3, length.out = 300)
plot(x_e, dexp(x_e, rate = 2), type = "l", lwd = 2, col = "#e67e22",
     xlab = "x", ylab = "f(x)",
     main = expression(paste("Distribución Exponencial  ", lambda == 2)))


Problema 6 — Puntuaciones de prueba: \(Y \sim N(\mu=480,\ \sigma=90)\)

mu6 <- 480
sd6 <- 90

cat("P(Y > 700)           =", pnorm(700, mu6, sd6, lower.tail = FALSE), "\n")
## P(Y > 700)           = 0.007253771
cat("Percentil 25         =", qnorm(0.25, mu6, sd6), "\n")
## Percentil 25         = 419.2959
cat("Percentil de Y=600   =", round(pnorm(600, mu6, sd6) * 100, 2), "%\n")
## Percentil de Y=600   = 90.88 %
cat("P(420 <= Y <= 520)   =", pnorm(520, mu6, sd6) - pnorm(420, mu6, sd6), "\n")
## P(420 <= Y <= 520)   = 0.4191468

Problema 7 — Estaturas: \(X \sim N(\mu=170.6,\ \sigma=6.6)\)

mu7 <- 170.6
sd7 <- 6.6

# a) proporcion entre 160 y 170
cat("a) P(160 <= X <= 170)  =", pnorm(170, mu7, sd7) - pnorm(160, mu7, sd7), "\n")
## a) P(160 <= X <= 170)  = 0.4096521
# b) Juan mide 0.5 desviaciones por encima de la media
juan <- mu7 + 0.5 * sd7
cat("b) Estatura Juan:", juan, "cm → P(X > Juan) =", pnorm(juan, mu7, sd7, lower.tail = FALSE), "\n")
## b) Estatura Juan: 173.9 cm → P(X > Juan) = 0.3085375
# c) percentil 90
cat("c) Percentil 90 =", qnorm(0.90, mu7, sd7), "cm\n")
## c) Percentil 90 = 179.0582 cm
# d) probabilidad de medir mas de 180
p180 <- pnorm(180, mu7, sd7, lower.tail = FALSE)
cat("d) P(X > 180) =", p180, "\n")
## d) P(X > 180) = 0.07718815
# e) de 5 personas, exactamente 1 mide mas de 180 → binomial
cat("e) P(exactamente 1 de 5 > 180) =", dbinom(1, 5, p180), "\n")
## e) P(exactamente 1 de 5 > 180) = 0.2798809

Problema 8 — IMC hombres adultos: \(X \sim N(\mu=24.2,\ \sigma=4.1)\)

mu8 <- 24.2
sd8 <- 4.1

# a) probabilidad de Obesidad tipo 1
cat("a) P(Obesidad 1: 30 <= IMC <= 34.9) =", pnorm(34.9, mu8, sd8) - pnorm(30, mu8, sd8), "\n")
## a) P(Obesidad 1: 30 <= IMC <= 34.9) = 0.07405756
# b) proporciones por rango de riesgo
bajo_peso   <- pnorm(18.5, mu8, sd8)
normal      <- pnorm(24.9, mu8, sd8) - pnorm(18.5, mu8, sd8)
sobrepeso   <- pnorm(29.9, mu8, sd8) - pnorm(25.0, mu8, sd8)
obesidad1   <- pnorm(34.9, mu8, sd8) - pnorm(30.0, mu8, sd8)
obesidad2   <- pnorm(39.9, mu8, sd8) - pnorm(35.0, mu8, sd8)
obesidad3   <- pnorm(40.0, mu8, sd8, lower.tail = FALSE)

tabla_imc <- data.frame(
  Categoria  = c("Bajo peso", "Normal", "Sobrepeso",
                  "Obesidad tipo 1", "Obesidad tipo 2", "Obesidad tipo 3"),
  Rango      = c("<18.5", "18.5-24.9", "25.0-29.9",
                  "30.0-34.9", "35.0-39.9", "≥40"),
  Proporcion = round(c(bajo_peso, normal, sobrepeso,
                        obesidad1, obesidad2, obesidad3), 6)
)

knitr::kable(tabla_imc, caption = "Proporciones esperadas por categoría de IMC")
Proporciones esperadas por categoría de IMC
Categoria Rango Proporcion
Bajo peso <18.5 0.082227
Normal 18.5-24.9 0.485555
Sobrepeso 25.0-29.9 0.340421
Obesidad tipo 1 30.0-34.9 0.074058
Obesidad tipo 2 35.0-39.9 0.004153
Obesidad tipo 3 ≥40 0.000058