Distribución Binomial

La distribución binomial es una distribución de probabilidad discreta que describe el número de éxitos en una secuencia de \(n\) ensayos independientes entre sí, con una probabilidad fija \(p\) de ocurrencia del éxito entre los ensayos.

Para muchos eventos o casos existen solo dos categorías mutuamente exclusivas, o aún cuando existan más de dos, se pueden separar en la categoría de interés y las otras en una sola categoría.

Ejemplo.

Tirar una moneda varias veces solo tiene dos categorías de resultados.

Tirar los dados, aunque tiene seis posibles resultados, se pueden dividir en dos categorías: el número del 1 al 6 que me interesa, y los demás (p. ej.: 3 versus 1, 2, 4, 5 y 6).

Una distribución binomial de probabilidades describe las probabilidades de resultados para eventos, que presenten las siguientes propiedades:

La función de probabilidad de la distribución binomial es:

\[p(x) = \binom{n}{x} p^x (1-p)^{n-x}\]

donde:

Ejercicio 1 - Usando la función binomial p(x)

Vamos a tirar un dado 10 veces y queremos saber cuál es la probabilidad de que salga un 6 exactamente 4 veces.

Solución

  1. Número de ensayos: \(n = 10\).
  2. Probabilidad de éxito: \(p = 1/6\).
  3. Número de éxitos: \(x = 4\).
# Datos
n <- 10
p <- 1/6
x <- 4

# Probabilidad
prob <- dbinom(x, n, p)
# dejar el resultado en dos decimales
prob <- round(prob, 3)

La probabilidad de que salga un 6 exactamente 4 veces en 10 tiradas es de 0.054.

Gráfica en ggplot2

library(ggplot2)

# Datos
x <- 0:10
y <- dbinom(x, n, p)

# Gráfica con líneas verticales hasta los valores de y
ggplot(data.frame(x = x, y = y), aes(x = x, y = y)) +
  geom_point() +
  geom_segment(aes(xend = x, yend = 0), linetype = "dashed") +
  scale_x_continuous(breaks = x) +
  labs(x = "Número de veces que sale un 6", y = "Probabilidad") +
  theme_minimal()

FIGURA 1. Probabilidad de que salga un 6 exactamente \(x\) veces en 10 tiradas de un dado.

Ejercicio 2 - Usando la función binomial acumulada

Vamos a tirar un dado 10 veces y queremos saber cuál es la probabilidad de que salga un 6 al menos 4 veces.

Solución

  1. Número de ensayos: \(n = 10\).
  2. Probabilidad de éxito: \(p = 1/6\).
  3. Número de éxitos: \(x \ge 4\).
# Datos
n <- 10
p <- 1/6
x <- 3

# Probabilidad acumulada
prob_acum <- pbinom(x, n, p, lower.tail = FALSE)
prob_acum <- round(prob_acum, 3)

La probabilidad de que salga un 6 al menos 4 veces en 10 tiradas es de 0.07.

Ejercicio 3 - Probabilidad de una enfermedad genética en n familias de 3 hijos

La fibrosis cística (FC) es un desorden hereditario, caracterizado por acumulación de mucosidad en los pulmones. El gen que la determina es uno autosómico recesivo, por lo tanto si dos portadores heterocigotos tienen hijos, el riesgo de producir un bebé homocigoto con FC es 0.25 (25%). ¿Cuál será la probabilidad de que en una pareja portadora con tres hijo/as haya dos o más afectado por FC?

Solución

  1. Número de ensayos: \(n = 3\).
  2. Probabilidad de una ocurrencia: \(p = 0.25\).
  3. Número de éxitos: \(x \ge 2\).
# Datos
n <- 3
p <- 0.25
x <- 1

# Probabilidad acumulada
prob_acum_fc <- pbinom(x, n, p, lower.tail = FALSE)
prob_acum_fc <- round(prob_acum_fc, 3)

La probabilidad de que en una pareja portadora con tres hijos haya dos o más afectados por FC es de 0.156.

Ahora vamos a probar si encontrar 20 familias de entre 100 con 3 hijos y que 2 o más tengan FC, es un evento raro.

# Datos
n <- 100
p <- 0.15625
x <- 20

# Probabilidad
prob_xfam <- dbinom(x, n, p)
prob_xfam <- round(prob_xfam, 3)

La probabilidad de encontrar 20 familias de entre 100 con 3 hijos y que 2 o más tengan FC es de 0.05.

Gráfica en ggplot2

library(ggplot2)

# Datos
x <- 0:100
y <- dbinom(x, n, p)

# Gráfica con líneas verticales hasta los valores de y
ggplot(data.frame(x = x, y = y), aes(x = x, y = y)) +
  geom_point() +
  geom_segment(aes(xend = x, yend = 0), linetype = "solid") +
  scale_x_continuous(breaks = seq(0, 100, 10)) +
  labs(x = "Número de familias con 2 o más hijos con FC", y = "Probabilidad") +
  theme_minimal()

FIGURA 2. Probabilidad de encontrar \(x\) familias de entre 100 con 3 hijos y que 2 o más tengan FC.

Ejercicio 4 - Ajustando la distribución binomial a una normal

La distribución binomial se puede aproximar a una distribución normal cuando el número de ensayos es grande y np y n(1-p) son mayores o iguales a 5.

Un fabricante de bombillas afirma que el 95% de sus bombillas duran más de 1000 horas. Para comprobar esta afirmación, se toma una muestra de 100 bombillas y se observa que 90 de ellas duran más de 1000 horas. ¿Podemos aceptar la afirmación del fabricante al nivel de significación del 5%?

Solución

  1. Hipótesis nula: \(H_0: p = 0.95\).
  2. Hipótesis alternativa: \(H_1: p < 0.95\).
  3. Nivel de significación: \(\alpha = 0.05\).
  4. Estadístico de prueba: \(Z = \frac{\hat{p} - p}{\sqrt{\frac{p(1-p)}{n}}}\).
  5. Región crítica: \(Z < -Z_{\alpha}\).
  6. Decisión: Si \(Z < -Z_{\alpha}\), rechazamos \(H_0\).
# Datos
n <- 100
p <- 0.95
p_hat <- 90 / n
alpha <- 0.05

# Estadístico de prueba
Z <- (p_hat - p) / sqrt(p * (1 - p) / n)

# Región crítica
Z_alpha <- qnorm(alpha)

# Decisión
if (Z < Z_alpha) {
  decision <- "rechazamos"
} else {
  decision <- "no rechazamos"
}

# Resultados
Z <- round(Z, 3)
Z_alpha <- round(Z_alpha, 3)

Dado que \(Z = -2.294\) y \(Z_{\alpha} = -1.645\), rechazamos la afirmación del fabricante al nivel de significación del 5%.

Gráfica en ggplot2 mostrando la región crítica

library(ggplot2)

# Datos
x <- seq(-3, 3, 0.01)
y <- dnorm(x)

# Gráfica
ggplot(data.frame(x = x, y = y), aes(x = x, y = y)) +
  geom_line() +
  geom_vline(xintercept = Z_alpha, linetype = "dashed", color = "red") +
  geom_vline(xintercept = Z, color = "blue") +
  geom_area(data = subset(data.frame(x = x, y = y), x > Z_alpha), aes(x = x, y = y), fill = "red", alpha = 0.5) +
  labs(x = "Z", y = "f(Z)") +
  theme_minimal()

FIGURA 3. Distribución normal estándar con la región crítica en rojo y el estadístico de prueba en azul.