"Nicol Julieth Diaz Benitez"
## [1] "Nicol Julieth Diaz Benitez"
#install.packages("ggplot2")   # solo una vez
#library(ggplot2)              # cada vez que abras RStudio
# Parámetros
n <- 10
p <- 0.5
x <- 0:10

# 1. Función de distribución (tabla)
F_x <- pbinom(x, size = n, prob = p)
tabla <- data.frame(x = x, f_x = dbinom(x, n, p), F_x = F_x)
cat("\n=== 1. Función de distribución F(x) ===\n")
## 
## === 1. Función de distribución F(x) ===
print(tabla)
##     x          f_x          F_x
## 1   0 0.0009765625 0.0009765625
## 2   1 0.0097656250 0.0107421875
## 3   2 0.0439453125 0.0546875000
## 4   3 0.1171875000 0.1718750000
## 5   4 0.2050781250 0.3769531250
## 6   5 0.2460937500 0.6230468750
## 7   6 0.2050781250 0.8281250000
## 8   7 0.1171875000 0.9453125000
## 9   8 0.0439453125 0.9892578125
## 10  9 0.0097656250 0.9990234375
## 11 10 0.0009765625 1.0000000000
# 2. P(X = 5)
r2 <- dbinom(5, n, p)
cat("\n=== 2. P(X = 5) ===\n")
## 
## === 2. P(X = 5) ===
cat("Resultado:", r2, "\n")
## Resultado: 0.2460938
# 3. P(X <= 2)
r3 <- pbinom(2, n, p)
cat("\n=== 3. P(X <= 2) ===\n")
## 
## === 3. P(X <= 2) ===
cat("Resultado:", r3, "\n")
## Resultado: 0.0546875
# 4. P(3 <= X < 5)
r4 <- pbinom(4, n, p) - pbinom(2, n, p)
cat("\n=== 4. P(3 <= X < 5) ===\n")
## 
## === 4. P(3 <= X < 5) ===
cat("Resultado:", r4, "\n")
## Resultado: 0.3222656
# 5. P(X >= 8)
r5 <- 1 - pbinom(7, n, p)
cat("\n=== 5. P(X >= 8) ===\n")
## 
## === 5. P(X >= 8) ===
cat("Resultado:", r5, "\n")
## Resultado: 0.0546875
# Resumen final
cat("\n=== RESUMEN ===\n")
## 
## === RESUMEN ===
resumen <- data.frame(
  Pregunta = c("P(X = 5)", "P(X <= 2)", "P(3 <= X < 5)", "P(X >= 8)"),
  Resultado = round(c(r2, r3, r4, r5), 4)
)
print(resumen)
##        Pregunta Resultado
## 1      P(X = 5)    0.2461
## 2     P(X <= 2)    0.0547
## 3 P(3 <= X < 5)    0.3223
## 4     P(X >= 8)    0.0547
# 6. Gráficas (una al lado de la otra)
par(mfrow = c(1, 2))

plot(x, F_x, type = "s", lwd = 2, col = "blue",
     main = "Función de distribución F(x)",
     xlab = "x", ylab = "F(x)")

plot(x, dbinom(x, n, p), type = "h", lwd = 3, col = "steelblue",
     main = "Función de probabilidad f(x)",
     xlab = "x", ylab = "P(X = x)")
points(x, dbinom(x, n, p), pch = 16, col = "steelblue")

par(mfrow = c(1, 1))
# =========================
# PROBLEMA 2: Geométrica, p = 0.05
# (X = número de ensayos hasta el primer éxito)
# =========================
p <- 0.05

a1 <- dgeom(1 - 1, p)            # P(X = 1)
a2 <- pgeom(2 - 1, p)            # P(X <= 2)
a3 <- dgeom(8 - 1, p)            # P(X = 8)
a4 <- 1 - pgeom(1 - 1, p)        # P(X >= 2) = 1 - P(X <= 1)

cat("\n=========== PROBLEMA 2 ===========\n")
## 
## =========== PROBLEMA 2 ===========
resumen2 <- data.frame(
  Pregunta  = c("P(X = 1)", "P(X <= 2)", "P(X = 8)", "P(X >= 2)"),
  Resultado = round(c(a1, a2, a3, a4), 4)
)
print(resumen2)
##    Pregunta Resultado
## 1  P(X = 1)    0.0500
## 2 P(X <= 2)    0.0975
## 3  P(X = 8)    0.0349
## 4 P(X >= 2)    0.9500
# Gráfica de f(x) (se muestra hasta x = 60)
x2 <- 1:60
plot(x2, dgeom(x2 - 1, p), type = "h", lwd = 2, col = "steelblue",
     main = "Función de probabilidad: Geométrica (p = 0.05)",
     xlab = "x (ensayos hasta el primer éxito)", ylab = "f(x) = P(X = x)")
points(x2, dgeom(x2 - 1, p), pch = 16, col = "steelblue")

# =========================
# PROBLEMA 3: Hipergeométrica, N = 100, n = 4, K = 20
# =========================
N <- 100; n <- 4; K <- 20

b1 <- dhyper(1, K, N - K, n)             # P(X = 1)
b2 <- dhyper(6, K, N - K, n)             # P(X = 6)
b3 <- 1 - phyper(0, K, N - K, n)         # P(X >= 1) = 1 - P(X = 0)
b4 <- dhyper(4, K, N - K, n)             # P(X = 4)

cat("\n=========== PROBLEMA 3 ===========\n")
## 
## =========== PROBLEMA 3 ===========
resumen3 <- data.frame(
  Pregunta  = c("P(X = 1)", "P(X = 6)", "P(X >= 1)", "P(X = 4)"),
  Resultado = round(c(b1, b2, b3, b4), 4)
)
print(resumen3)
##    Pregunta Resultado
## 1  P(X = 1)    0.4191
## 2  P(X = 6)    0.0000
## 3 P(X >= 1)    0.5967
## 4  P(X = 4)    0.0012
# Gráfica de f(x)
x3 <- 0:4
plot(x3, dhyper(x3, K, N - K, n), type = "h", lwd = 3, col = "darkorange",
     main = "Función de probabilidad: Hipergeométrica (N=100, n=4, K=20)",
     xlab = "x", ylab = "f(x) = P(X = x)")
points(x3, dhyper(x3, K, N - K, n), pch = 16, col = "darkorange")

# =========================
# PROBLEMA 4: Poisson, lambda = 4
# =========================
lambda <- 4

c1 <- dpois(0, lambda)            # P(X = 0)
c2 <- dpois(4, lambda)            # P(X = 4)
c3 <- 1 - ppois(1, lambda)        # P(X >= 2) = 1 - P(X <= 1)
c4 <- ppois(2, lambda)            # P(X <= 2)

cat("\n=========== PROBLEMA 4 ===========\n")
## 
## =========== PROBLEMA 4 ===========
resumen4 <- data.frame(
  Pregunta  = c("P(X = 0)", "P(X = 4)", "P(X >= 2)", "P(X <= 2)"),
  Resultado = round(c(c1, c2, c3, c4), 4)
)
print(resumen4)
##    Pregunta Resultado
## 1  P(X = 0)    0.0183
## 2  P(X = 4)    0.1954
## 3 P(X >= 2)    0.9084
## 4 P(X <= 2)    0.2381
# Gráfica de f(x)
x4 <- 0:15
plot(x4, dpois(x4, lambda), type = "h", lwd = 3, col = "purple",
     main = "Función de probabilidad: Poisson (lambda = 4)",
     xlab = "x", ylab = "f(x) = P(X = x)")
points(x4, dpois(x4, lambda), pch = 16, col = "purple")

# =========================
# PROBLEMA 5: Binomial negativa
# N = 100, K = 20 -> p = 0.2 ; n = 5 éxitos
# (X = número de fracasos antes del 5.º éxito)
# =========================
N <- 100; K <- 20
p <- K / N
r <- 5

d1 <- dnbinom(0, size = r, prob = p)           # P(X = 0)
d2 <- dnbinom(6, size = r, prob = p)           # P(X = 6)
d3 <- 1 - pnbinom(9, size = r, prob = p)       # P(X >= 10) = 1 - P(X <= 9)
d4 <- pnbinom(12, size = r, prob = p)          # P(X <= 12)

EX <- r * (1 - p) / p                          # Esperanza
VX <- r * (1 - p) / p^2                        # Varianza

cat("\n=========== PROBLEMA 5 ===========\n")
## 
## =========== PROBLEMA 5 ===========
resumen5 <- data.frame(
  Pregunta  = c("P(X = 0)", "P(X = 6)", "P(X >= 10)", "P(X <= 12)"),
  Resultado = round(c(d1, d2, d3, d4), 4)
)
print(resumen5)
##     Pregunta Resultado
## 1   P(X = 0)    0.0003
## 2   P(X = 6)    0.0176
## 3 P(X >= 10)    0.8702
## 4 P(X <= 12)    0.2418
cat("E[X] =", EX, "\n")
## E[X] = 20
cat("V[X] =", VX, "\n")
## V[X] = 100
# Gráfica de f(x)
x5 <- 0:80
plot(x5, dnbinom(x5, size = r, prob = p), type = "h", lwd = 2, col = "firebrick",
     main = "Función de probabilidad: Binomial negativa (r = 5, p = 0.2)",
     xlab = "x (fracasos antes del 5.º éxito)", ylab = "f(x) = P(X = x)")
points(x5, dnbinom(x5, size = r, prob = p), pch = 16, cex = 0.6, col = "firebrick")

# =========================
# PROBLEMA 6: Binomial, n = 4, p = 0.05
# =========================
n <- 4
p <- 0.05

e1 <- dbinom(0, n, p)            # Ninguna con imperfecciones: P(X = 0)
e2 <- dbinom(1, n, p)            # Sólo una: P(X = 1)
e3 <- 1 - dbinom(0, n, p)        # Una o más: P(X >= 1)

cat("\n=========== PROBLEMA 6 ===========\n")
## 
## =========== PROBLEMA 6 ===========
resumen6 <- data.frame(
  Pregunta  = c("Ninguna imperfecta: P(X = 0)",
                "Sólo una imperfecta: P(X = 1)",
                "Una o más imperfectas: P(X >= 1)"),
  Resultado = round(c(e1, e2, e3), 4)
)
print(resumen6)
##                           Pregunta Resultado
## 1     Ninguna imperfecta: P(X = 0)    0.8145
## 2    Sólo una imperfecta: P(X = 1)    0.1715
## 3 Una o más imperfectas: P(X >= 1)    0.1855
# =========================
# PROBLEMA 7: Poisson, 8 clientes por hora
# =========================
tasa <- 8   # clientes por hora

# a) Exactamente 5 clientes entre 8 y 9 AM (1 hora -> lambda = 8)
f1 <- dpois(5, lambda = tasa * 1)

# b) No más de 3 clientes entre 2:30 y 3:30 PM (1 hora -> lambda = 8)
f2 <- ppois(3, lambda = tasa * 1)

# c) Exactamente 2 clientes en 2 horas (lambda = 16)
f3 <- dpois(2, lambda = tasa * 2)

# d) Valor esperado entre 2:00 y 4:30 PM (2.5 horas)
f4 <- tasa * 2.5

cat("\n=========== PROBLEMA 7 ===========\n")
## 
## =========== PROBLEMA 7 ===========
resumen7 <- data.frame(
  Pregunta  = c("a) P(X = 5) en 1 hora",
                "b) P(X <= 3) en 1 hora",
                "c) P(X = 2) en 2 horas",
                "d) E[X] en 2.5 horas"),
  Resultado = c(round(f1, 4), round(f2, 4), signif(f3, 3), f4)
)
print(resumen7)
##                 Pregunta Resultado
## 1  a) P(X = 5) en 1 hora  9.16e-02
## 2 b) P(X <= 3) en 1 hora  4.24e-02
## 3 c) P(X = 2) en 2 horas  1.44e-05
## 4   d) E[X] en 2.5 horas  2.00e+01
# =========================
# PROBLEMA 8: Binomial, n = 20, p = 0.9
# =========================
n <- 20
p <- 0.9

g1 <- n * p                             # Valor esperado de semillas que germinan
g2 <- pbinom(15, n, p)                  # P(X <= 15)

cat("\n=========== PROBLEMA 8 ===========\n")
## 
## =========== PROBLEMA 8 ===========
cat("Semillas esperadas que germinan: E[X] =", g1, "\n")
## Semillas esperadas que germinan: E[X] = 18
cat("P(X <= 15) =", g2, "\n")
## P(X <= 15) = 0.0431745
cat("P(X <= 15) redondeado =", round(g2, 4), "\n")
## P(X <= 15) redondeado = 0.0432
if (g2 < 0.05) {
  cat("Conclusión: P(X <= 15) es muy pequeña (< 0.05), hay razón para sospechar de la cifra 90%.\n")
} else {
  cat("Conclusión: P(X <= 15) no es tan pequeña, no hay razón fuerte para sospechar.\n")
}
## Conclusión: P(X <= 15) es muy pequeña (< 0.05), hay razón para sospechar de la cifra 90%.
# =========================
# PROBLEMA 9: Examen de 100 preguntas, p = 0.25
# =========================
p <- 0.25

# a) P(X >= 60), X ~ binom(100, 0.25)
h1 <- 1 - pbinom(59, size = 100, prob = p)
# Equivalente: pbinom(59, 100, p, lower.tail = FALSE)

# b) P(X = 10): la primera correcta ocurre en la pregunta 10
h2 <- dgeom(10 - 1, prob = p)

# c) Número esperado de respuestas erróneas hasta 5 correctas
r <- 5
h3 <- r * (1 - p) / p

cat("\n=========== PROBLEMA 9 ===========\n")
## 
## =========== PROBLEMA 9 ===========
resumen9 <- data.frame(
  Pregunta  = c("a) P(aprobar) = P(X >= 60)",
                "b) P(primera correcta en la pregunta 10)",
                "c) E[errores hasta 5 correctas]"),
  Resultado = c(signif(h1, 3), round(h2, 4), h3)
)
print(resumen9)
##                                   Pregunta Resultado
## 1               a) P(aprobar) = P(X >= 60)  1.33e-13
## 2 b) P(primera correcta en la pregunta 10)  1.88e-02
## 3          c) E[errores hasta 5 correctas]  1.50e+01
# =========================
# PROBLEMA 10: Poisson, lambda = 15
# =========================
lambda <- 15

i1 <- 1 - ppois(16, lambda)     # P(X >= 17) = 1 - P(X <= 16)
i2 <- ppois(18, lambda)         # P(X <= 18)
i3 <- dpois(2, lambda)          # P(X = 2)

cat("\n=========== PROBLEMA 10 ===========\n")
## 
## =========== PROBLEMA 10 ===========
resumen10 <- data.frame(
  Pregunta  = c("P(X >= 17)", "P(X <= 18)", "P(X = 2)"),
  Resultado = c(round(i1, 4), round(i2, 4), signif(i3, 3))
)
print(resumen10)
##     Pregunta Resultado
## 1 P(X >= 17) 0.3359000
## 2 P(X <= 18) 0.8195000
## 3   P(X = 2) 0.0000344
# =========================
# PROBLEMA 11: Binomial, n = 105, p = 0.90
# =========================
n <- 105
p <- 0.90

j1 <- pbinom(100, size = n, prob = p)    # P(X <= 100)

cat("\n=========== PROBLEMA 11 ===========\n")
## 
## =========== PROBLEMA 11 ===========
cat("P(todos los que lleguen tengan asiento) = P(X <= 100) =", round(j1, 4), "\n")
## P(todos los que lleguen tengan asiento) = P(X <= 100) = 0.9833
cat("P(que alguien se quede sin asiento)     = P(X >= 101) =", round(1 - j1, 4), "\n")
## P(que alguien se quede sin asiento)     = P(X >= 101) = 0.0167
# =========================
# PROBLEMA 12: Poisson, 1 grieta por cada 100 m
# =========================
tasa <- 1 / 100    # grietas por metro

k1 <- dpois(8, lambda = tasa * 500)       # P(X = 8) en 500 m (lambda = 5)
k2 <- dpois(0, lambda = tasa * 100)       # P(X = 0) en 100 m (lambda = 1)
k3 <- ppois(1, lambda = tasa * 500)       # P(X < 2) = P(X <= 1) en 500 m (lambda = 5)

cat("\n=========== PROBLEMA 12 ===========\n")
## 
## =========== PROBLEMA 12 ===========
resumen12 <- data.frame(
  Pregunta  = c("a) P(X = 8) en 500 m",
                "b) P(X = 0) en 100 m",
                "c) P(X < 2) en 500 m"),
  Resultado = round(c(k1, k2, k3), 4)
)
print(resumen12)
##               Pregunta Resultado
## 1 a) P(X = 8) en 500 m    0.0653
## 2 b) P(X = 0) en 100 m    0.3679
## 3 c) P(X < 2) en 500 m    0.0404
# =========================
# PROBLEMA 13: Binomial, n = 12, p = 0.92
# =========================
n <- 12
p <- 0.92

# Probabilidades de cada regla
m1 <- dbinom(12, n, p)                    # P(X = 12)
m2 <- 1 - pbinom(10, n, p)                # P(X >= 11)
m3 <- pbinom(10, n, p)                    # P(X <= 10) = P(2 o más fallan)
m4 <- pbinom(9, n, p)                     # P(X < 10) = P(X <= 9)

cat("\n=========== PROBLEMA 13 ===========\n")
## 
## =========== PROBLEMA 13 ===========
cat("Modelo: X ~ binom(n = 12, p = 0.92)\n\n")
## Modelo: X ~ binom(n = 12, p = 0.92)
decision <- data.frame(
  Directriz = c("1. P(X = 12) > 0.35",
                "2. P(X >= 11) > 0.70",
                "3. P(2 o más fallan) = P(X <= 10) > 0.20",
                "4. P(X < 10) < 0.10"),
  Probabilidad = round(c(m1, m2, m3, m4), 4),
  Umbral = c(0.35, 0.70, 0.20, 0.10),
  Se_cumple = c(m1 > 0.35, m2 > 0.70, m3 > 0.20, m4 < 0.10)
)
print(decision)
##                                  Directriz Probabilidad Umbral Se_cumple
## 1                      1. P(X = 12) > 0.35       0.3677   0.35      TRUE
## 2                     2. P(X >= 11) > 0.70       0.7513   0.70      TRUE
## 3 3. P(2 o más fallan) = P(X <= 10) > 0.20       0.2487   0.20      TRUE
## 4                      4. P(X < 10) < 0.10       0.0652   0.10      TRUE
cat("\nEsperanza E[X] =", n * p, "\n")
## 
## Esperanza E[X] = 11.04
cat("Varianza  V[X] =", round(n * p * (1 - p), 4), "\n")
## Varianza  V[X] = 0.8832