Punto 1

Una variable aleatoria \(X\) que toma los valores \(x_1 ,x_2,..., x_k\) se denomina variable aleatoria discreta uniforme si su función de masa de probabilidad es \(f(x) = 1/k\) para todas las variables (x₁, x₂,…, xₖ) y 0 en cualquier otro caso. Calcule la media y la varianza de \(X\).

# Valores de X y k
x_vals <- c(2, 5, 7)
k      <- length(x_vals)

# Función
f_unif <- function(x) {
  ifelse(x %in% x_vals, 
         1/k, 
         0)
}

# P(X = xi)
p_unif <- sapply(x_vals, f_unif)

df_unif <- data.frame(
  x = x_vals,
  P = p_unif
)
print(df_unif)
##   x         P
## 1 2 0.3333333
## 2 5 0.3333333
## 3 7 0.3333333
library(ggplot2)
ggplot(df_unif, aes(x = x, y = P)) +
  geom_point(color = "darkblue", size = 3) +
  geom_segment(aes(x = x, xend = x, y = 0, yend = P),
               linetype = "dashed", color = "darkblue") +
  labs(title = "Distribución Uniforme Discreta",
       x = "Valores de X",
       y = "P(X = x)") +
  theme_minimal()

E_X   <- sum(x_vals * p_unif)
E_X2  <- sum((x_vals^2) * p_unif)
Var_X <- E_X2 - E_X^2

cat("Media E[X]      =", round(E_X, 4), "\n")
## Media E[X]      = 4.6667
cat("Varianza Var(X) =", round(Var_X, 4), "\n")
## Varianza Var(X) = 4.2222

Punto 2

De acuerdo con un artículo de una revista importante, aproximadamente 30% de todas las fallas de operación en las tuberías de plantas químicas son ocasionadas por errores del operador.

n <- 20
p <- 0.30
x <- 0:n

# P(X = x)
f_bin <- dbinom(x, size = n, prob = p)

df_bin <- data.frame(
  x = x,
  P = f_bin
)
print(df_bin)
##     x            P
## 1   0 7.979227e-04
## 2   1 6.839337e-03
## 3   2 2.784587e-02
## 4   3 7.160367e-02
## 5   4 1.304210e-01
## 6   5 1.788631e-01
## 7   6 1.916390e-01
## 8   7 1.642620e-01
## 9   8 1.143967e-01
## 10  9 6.536957e-02
## 11 10 3.081708e-02
## 12 11 1.200665e-02
## 13 12 3.859282e-03
## 14 13 1.017833e-03
## 15 14 2.181070e-04
## 16 15 3.738977e-05
## 17 16 5.007558e-06
## 18 17 5.049639e-07
## 19 18 3.606885e-08
## 20 19 1.627166e-09
## 21 20 3.486784e-11
ggplot(df_bin, aes(x = x, y = P)) +
  geom_point(color = "navy", size = 2) +
  geom_segment(aes(x = x, xend = x, y = 0, yend = P),
               linetype = "dashed", color = "skyblue") +
  labs(title = "Distribución Binomial (n = 20, p = 0.3)",
       x = "x", y = "P(X = x)") +
  theme_minimal()

  1. ¿Cuál es la probabilidad de que de las siguientes 20 fallas en las tuberías al menos 10 se deban a un error del operador?
prob_a <- 1 - pbinom(9, size = n, prob = p)
cat("a) P(X ≥ 10) =", round(prob_a, 4), "\n")
## a) P(X ≥ 10) = 0.048
df_bin <- data.frame(x=0:20, P=dbinom(0:20, size=20, prob=0.3))

df2       <- df_bin
df2$shade <- df2$x >= 10

ggplot(df2, aes(x = x, y = P, fill = shade)) +
  geom_col(color = "black") +
  scale_fill_manual(
    values = c("grey", "navy"),
    guide  = FALSE
  ) +
  labs(
    title    = "Distribución Binomial (n = 20, p = 0.3)",
    subtitle = paste("P(X ≥ 10) =", round(sum(df2$P[df2$shade]), 4)),
    x        = "x",
    y        = "P(X = x)"
  ) +
  theme_minimal()
## Warning: The `guide` argument in `scale_*()` cannot be `FALSE`. This was deprecated in
## ggplot2 3.3.4.
## ℹ Please use "none" instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

  1. ¿Cuál es la probabilidad de que no más de 4 de 20 fallas se deban a un error del operador?
prob_b <- pbinom(4, size = n, prob = p)
cat("b) P(X ≤ 4) =", round(prob_b, 4), "\n")
## b) P(X ≤ 4) = 0.2375
df2$shade2 <- df2$x <= 4

ggplot(df2, aes(x = x, y = P, fill = shade2)) +
  geom_col(color = "black") +
  scale_fill_manual(
    values = c("grey", "navy"),
    guide  = FALSE
  ) +
  labs(
    title    = "Distribución Binomial (n = 20, p = 0.3)",
    subtitle = paste("P(X ≤ 4) =", round(sum(df2$P[df2$shade2]), 4)),
    x        = "x",
    y        = "P(X = x)"
  ) +
  theme_minimal()

Punto 3

Suponga que los motores de un avión operan de forma independiente y que tienen una probabilidad de falla de 0.4. Se supone que un avión tiene un vuelo seguro si funcionan al menos la mitad de sus motores. Si un avión tiene 4 motores y otro tiene 2, ¿cuál de los dos tiene la probabilidad más alta de un vuelo exitoso?

prob_funciona <- 0.6

exito_4motores <- sum(dbinom(2:4, size = 4, prob = prob_funciona))

exito_2motores <- sum(dbinom(1:2, size = 2, prob = prob_funciona))

cat("Probabilidad de vuelo exitoso (4 motores):", exito_4motores)
## Probabilidad de vuelo exitoso (4 motores): 0.8208
cat("Probabilidad de vuelo exitoso (2 motores):", exito_2motores)
## Probabilidad de vuelo exitoso (2 motores): 0.84
cat("El avión con 2 motores tiene mayor probabilidad de un vuelo exitoso.")
## El avión con 2 motores tiene mayor probabilidad de un vuelo exitoso.
# Definir datos

Motores <-  c(2, 4)
Probabilidad <- c(sum(dbinom(1:2, size = 2, prob = 0.6)),
  sum(dbinom(2:4, size = 4, prob = 0.6)))

datos <- data.frame(Motores,Probabilidad)

# Graficar con ggplot2
ggplot(datos, aes(x = Motores, y = Probabilidad)) +
  geom_point(size = 3, color = "blue") +
  geom_line(aes(group = 1), color = "navy") +
  geom_segment(x = Motores, xend = Motores, y = 0, 
               yend = Probabilidad, linetype = "dashed", color = "blue") +
  labs(
    title = "Probabilidad de vuelo exitoso según número de motores",
    x = "Número de motores",
    y = "Probabilidad de vuelo exitoso"
  ) +
  theme_minimal()

Punto 4

Para evitar la detección en la aduana, un viajero coloca 6 comprimidos con narcóticos en una botella que contiene 9 píldoras de vitamina que aparentemente son similares. Si el oficial de la aduana selecciona 3 de las tabletas al azar para su análisis, ¿cuál es la probabilidad de que el viajero sea arrestado por posesión ilegal de narcóticos?

m <- 6    
n <- 9     
k <- 3       

# Probabilidad de quedar arrestado
p_arrestado <- sum(dhyper(1:3, m, n, k))

cat("Probabilidad de arresto (al menos 1 narcótico):", p_arrestado, "\n")
## Probabilidad de arresto (al menos 1 narcótico): 0.8153846
# Probabilidad de quedar arrestado
x <- 0:3
p_arrestado <- sum(dhyper(1:3, m, n, k))

#Funcion probabilidad

probabilidad <- dhyper(x, m, n, k)


df <- data.frame(narcoticos_encontrados = x,probabilidad = probabilidad)

# Grafica
ggplot(df, aes(x = narcoticos_encontrados, y = probabilidad)) +
  geom_point(color = "blue") +
  geom_line(group = 1, color = "navy") +
  geom_segment(aes(x = narcoticos_encontrados, xend = narcoticos_encontrados,
                   y = 0, yend = probabilidad), linetype = "dashed", color = "skyblue") +
  labs(
    title = "Distribución Hipergeométrica: Narcóticos encontrados",
    x = "Número de narcóticos encontrados en la muestra",
    y = "Probabilidad"
  ) +
  theme_minimal()

Punto 5

Se selecciona al azar un comité de 3 personas a partir de 4 médicos y 2 enfermeras. Escriba una fórmula para la distribución de probabilidad de la variable aleatoria \(X\) que representa el número de médicos en el comité. Calcule \(P(2 ≤ X ≤ 3)\).

m.5 <- 4
n.5 <- 2
k.5 <- 3

valores <- 0:3
funcion <- dhyper(valores,m.5,n.5,k.5)

df <- data.frame(valores, funcion)

ggplot(df, aes(valores, funcion)) +
  geom_point(color = "blue") +
  geom_line(group = 1, color = "navy" ) +
  geom_segment(aes(x = valores, xend = valores, y = 0, yend = funcion), linetype = "dashed", color = "skyblue") +
  labs(
    title = "Distribución de probabilidad de X (número de médicos en el comité)",
    x = "Número de médicos (X)",
    y = "Probabilidad"
  ) +
    theme_minimal()

prob_2_x_3 <- sum(dhyper(2:3, m.5, n.5, k.5))
cat("La probabilidad de escoger 3 personas y que sean 2 o 3 medicos es del", prob_2_x_3)
## La probabilidad de escoger 3 personas y que sean 2 o 3 medicos es del 0.8

Punto 6

De un lote de 10 misiles, se seleccionan 4 al azar y se disparan. Si el lote contiene 3 misiles defectuosos que no pueden dispararse, ¿cual es la probabilidad de que: a) los 4 puedan dispararse? b) a lo sumo fallen 2?

## Distribucion hipergeometrica

n6 <- 10 # numero total de misiles

m6 <- 3 # numero de misiles defectuosos

k6 <- 4 # numero de misiles seleecionados

# X: numero de misiles defectuosos seleccionados

# Definiendo la función

f.h6 <- function(x){
  hiper <- choose(m6,x)*choose(n6-m6,k6-x)/choose(n6,k6)
  return(hiper)
}

# a) P(X = 0)

# con la funcion hecha a pedal

f.h6a <- f.h6(0)

# con las funciones de R

sol6a <- dhyper(x = 0, m = m6, n = n6-m6, k = k6)

cat("La probabilidad de que no falle ningun misil de los cuatro es de:", sol6a)
## La probabilidad de que no falle ningun misil de los cuatro es de: 0.1666667
# b) P(X <= 2)

# con la funcion hecha a pedal

x6b <- c(0,1,2)

f.h6b <- sum(sapply(x6b,f.h6))

# con las funciones de R

sol6b <- phyper(q = 2, m = m6, n = n6-m6, k = k6)

cat("La probabilidad de que fallen a lo sumo 2 misiles es de:", sol6b)
## La probabilidad de que fallen a lo sumo 2 misiles es de: 0.9666667
# Grafica de la funcion de probabilidad

x.6 <- c(0,1,2,3,4)

f.x6 <- sapply(x.6,f.h6)

df6 <- data.frame(x.6,f.x6)

ggplot(df6, aes(x = x.6, y = f.x6)) +
  geom_point(color = "darkblue", size = 3) +
  geom_segment(aes(x = x.6, xend = x.6, y = 0, yend = f.x6),
               linetype = "dashed", color = "navy") +
  labs(title = "Distribución Uniforme Discreta",
       x = "Valores de X",
       y = "P(X = x)") +
  theme_minimal()

Punto 7

En cierto crucero ocurren, en promedio, 3 accidentes de tránsito al mes. ¿Cuál es la probabilidad de que en cualquier determinado mes en este crucero: a) ocurran exactamente 5 accidentes? b) ocurran menos de 3 accidentes? c) ocurran al menos 2 accidentes?

# Distribucion de Poisson

# Funcion hecha a pedal

l7 <- 3 # numero de accidentes de transito al mes

f.p7 <- function(x) { (exp(-l7) * l7^x) / factorial(x) }

# a)

sol7a <- dpois(5, lambda = l7)

cat("La probabilidad de que ocurran exactamente 5 accidentes es:",sol7a)
## La probabilidad de que ocurran exactamente 5 accidentes es: 0.1008188
# b)

sol7b <- ppois(2, lambda = l7)

cat("La probabilidad de que ocurran menos de 3 accidentes es:",sol7b)
## La probabilidad de que ocurran menos de 3 accidentes es: 0.4231901
# c)

sol7c <- 1 - ppois(1,lambda = l7)

cat("La probabilidad de que ocurran al menos 2 accidentes es:",sol7c)
## La probabilidad de que ocurran al menos 2 accidentes es: 0.8008517
# Grafica de la funcion de probabilidad

x.7 <- 0:15

f.p7 <- sapply(x.7,f.p7)

df7 <- data.frame(x.7,f.p7)

ggplot(df7, aes(x = x.7, y = f.p7)) +
  geom_point(color = "darkblue", size = 3) +
  geom_segment(aes(x = x.7, xend = x.7, y = 0, yend = f.p7),
               linetype = "dashed", color = "darkblue") +
  labs(title = "Distribución Uniforme Discreta",
       x = "Valores de X",
       y = "P(X = x)") +
  theme_minimal()

Punto 8

Los cambios en los procedimientos de los aeropuertos requieren una planeación considerable. Los índices de llegadas de los aviones son factores importantes que deben tomarse en cuenta. Suponga que los aviones pequeños llegan a cierto aeropuerto, de acuerdo con un proceso de Poisson, con una frecuencia de 6 por hora. De esta manera, el parámetro de Poisson para las llegadas en un periodo de horas es \(\mu = 6t\).

  1. ¿Cuál es la probabilidad de que lleguen exactamente 4 aviones pequeños durante un periodo de una hora?
lambda <- 6
prob_4_en_1h <- dpois(4, lambda = lambda)
cat("P(X = 4 en 1h):", prob_4_en_1h, "\n")
## P(X = 4 en 1h): 0.1338526
x_vals <- 0:15

df_a <- data.frame(
  x = x_vals,
  P = dpois(x_vals, lambda = lambda)
)
df_a$shade <- df_a$x == 4

ggplot(df_a, aes(x = x, y = P, fill = shade)) +
  geom_col(color = "black") +
  scale_fill_manual(values = c("grey", "darkblue"), guide = FALSE) +
  labs(title = "Distribución de Poisson (λ = 6)",
       subtitle = "P(X = 4) sombreado",
       x = "Número de aviones pequeños en 1 hora",
       y = "P(X = x)") +
  theme_minimal()

  1. ¿Cuál es la probabilidad de que lleguen al menos 4 durante un periodo de una hora?
prob_al_menos_4_en_1h <- 1 - ppois(3, lambda = lambda)
cat("P(X >= 4 en 1h):", prob_al_menos_4_en_1h, "\n")
## P(X >= 4 en 1h): 0.8487961
df_b <- df_a
df_b$shade2 <- df_b$x >= 4

ggplot(df_b, aes(x = x, y = P, fill = shade2)) +
  geom_col(color = "black") +
  scale_fill_manual(values = c("grey", "darkblue"), guide = FALSE) +
  labs(title = "Distribución de Poisson (λ = 6)",
       subtitle = "P(X ≥ 4) sombreado",
       x = "Número de aviones pequeños en 1 hora",
       y = "P(X = x)") +
  theme_minimal()

  1. Si definimos un día laboral como de 12 horas, ¿cuál es la probabilidad de que al menos 75 aviones pequeños lleguen durante un día laboral?
lambda_12h <- 6 * 12  
prob_al_menos_75_en_12h <- 1 - ppois(74, lambda = lambda_12h)
cat("P(X >= 75 en 12h):", prob_al_menos_75_en_12h, "\n")
## P(X >= 75 en 12h): 0.3773273
x_vals_12h <- 60:90 

df_c <- data.frame(
  x = x_vals_12h,
  P = dpois(x_vals_12h, lambda = lambda_12h)
)
df_c$shade3 <- df_c$x >= 75

ggplot(df_c, aes(x = x, y = P, fill = shade3)) +
  geom_col(color = "black") +
  scale_fill_manual(values = c("grey", "darkblue"), guide = FALSE) +
  labs(title = "Distribución de Poisson (λ = 72, 12 horas)",
       subtitle = "P(X ≥ 75) sombreado",
       x = "Número de aviones pequeños en 12 horas",
       y = "P(X = x)") +
  theme_minimal()