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