Distribución de Poisson

La distribución de Poisson es una distribución de probabilidad discreta que expresa, a partir de una frecuencia de ocurrencia media (\(\lambda\)), la probabilidad de que ocurra un determinado número de eventos durante cierto período de tiempo o espacio. Concretamente, se especializa en la probabilidad de que ocurra un número exacto de eventos en un intervalo fijo de tiempo o espacio.

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

\[P(X=k) = \frac{e^{-\lambda} \lambda^k}{k!}\]

donde:

Inferencias con Distribución de Poisson

Ejemplo con frecuencia de plántulas por parcela de 1 m²

En un bosque se colocaron 120 parcelas de 1 m² y se contaron el número de plántulas de una especie de árbol. Los datos obtenidos fueron:

plantulas <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
frecuencia <- c(35, 20, 50, 10, 3, 1, 0, 0, 0, 1, 0)

# crear una tabla gt con el nombre Cantidad de plántulas y Número de parcelas
library(gt)
tabla <- data.frame(Plantulas = plantulas, Frecuencia = frecuencia) %>%
  gt::gt() %>%
  gt::tab_header(title = "Tabla 1. Cantidad de parcelas de 1 m² con un número de plántulas de una especie de árbol")
tabla
Tabla 1. Cantidad de parcelas de 1 m² con un número de plántulas de una especie de árbol
Plantulas Frecuencia
0 35
1 20
2 50
3 10
4 3
5 1
6 0
7 0
8 0
9 1
10 0

Para ajustar una distribución de Poisson a estos datos, primero se calcula la media de la distribución de Poisson:

\[\lambda = \frac{\sum_{i=1}^{n} x_i f_i}{\sum_{i=1}^{n} f_i}\]

lambda <- sum(plantulas * frecuencia) / sum(frecuencia)

La media de la distribución de Poisson es \(\lambda = 1.4666667\).

Gráfica de los datos y de la distribución de Poisson ajustada

# Load necessary libraries
library(ggplot2)

# data frame for observed data
data_frame <- data.frame(Plantulas = 0:(length(frecuencia) - 1), Frecuencia = frecuencia)

# Create a data frame for the Poisson distribution
poisson_probs <- dpois(0:(length(frecuencia) - 1), lambda) * sum(frecuencia)
poisson_frame <- data.frame(counts = 0:(length(frecuencia) - 1), poisson = poisson_probs)

# Plot using ggplot2
ggplot(data_frame, aes(x = Plantulas, y = Frecuencia)) +
  geom_bar(stat = "identity", fill = "green", alpha = 0.5) +
  geom_line(data = poisson_frame, aes(x = counts, y = poisson), color = "red", linewidth = 1) +
  labs(x = "Cantidad de Plántulas",
       y = "Frecuencia") +
  scale_x_continuous(breaks = 0:(length(frecuencia) - 1)) +
  theme_minimal()

Figura 1. Frecuencia de cantidad de plántulas por parcela de 1 m² y distribución de Poisson ajustada.

Prueba de hipótesis con distribución de Poisson

Para probar si los datos de frecuencia siguen una distribución de Poisson, podemos utilizar la prueba de bondad de ajuste de chi-cuadrado.

La hipótesis nula es que los datos siguen una distribución de Poisson con media \(\lambda\).

# Calculate expected frequencies using the Poisson distribution
expected_counts <- dpois(0:(length(frecuencia) - 1), lambda) * sum(frecuencia)

# Perform the chi-squared goodness-of-fit test
chisq_test <- chisq.test(frecuencia, p = expected_counts, rescale.p = TRUE)

# Display the test result
print(chisq_test)
## 
##  Chi-squared test for given probabilities
## 
## data:  frecuencia
## X-squared = 444.67, df = 10, p-value < 2.2e-16

El valor-p de la prueba de bondad de ajuste de chi-cuadrado es suficientemente bajo para rechazar con seguridad la hipótesis nula de que los datos siguen una distribución de Poisson con media \(\lambda\).

Ejemplo con infección de bacteriófagos

En un experimento de laboratorio, se observó la infección de bacteriófagos en una bacteria. Según la literatura y el protocolo utilizado, el número medio de infecciones por hora es de 2. Queremos saber cuantas bacterias se infectarán con 3 o más bacteriófagos, asumiendo que la infección sigue un proceso de Poisson.

# Datos
lambda_bac <- 2
x <- 3

# Probabilidad acumulada
prob_acum <- ppois(x - 1, lambda_bac, lower.tail = FALSE)
prob_acum <- round(prob_acum, 3)

La probabilidad de que se infecten 3 o más bacterias es de 0.323.

Gráfica de la distribución de Poisson con la probabilidad acumulada

# Datos
x <- 0:10
y <- dpois(x, lambda_bac)

# Gráfica con líneas verticales hasta los valores de y
# red for x > 2 and blue for x < 3
ggplot(data.frame(x = x, y = y), aes(x = x, y = y)) +
  geom_point(aes(color = x < 3), size = 3, show.legend = FALSE) +
  geom_segment(aes(xend = x, yend = 0), linetype = "solid") +
  scale_x_continuous(breaks = seq(0, 10, 1)) +
  labs(x = "Número de bacteriófagos por bacteria", y = "Probabilidad") +
  theme_minimal()

Figura 2. Distribución de Poisson con \(\lambda = 2\). Los puntos rojos representan la probabilidad acumulada de infección con 3 o más bacteriofagos.