La regresión de Poisson es un modelo lineal generalizado (GLM)
diseñado para analizar variables de conteo bajo el supuesto de
equidispersión (media igual a varianza). En este
proyecto se explica su fundamento matemático y se aplica al conjunto de
datos “Salud Ecológica”, conjunto de datos diseñado
para la clasificación de la salud ecológica en entornos urbanos.
Se presenta paso a paso el proceso en R, incluyendo la
carga de datos, ajuste del modelo, diagnóstico de sobredispersión
(dispersión ≈ 0.9964).
Los resultados evidencian efectos significativos en las concentraciones de partículas finas (PM2.5) (β = 4.578e-05, p < 0.010), la temperatura (β = 6.255e-04, p < 0.014) y la humedad del suelo con un efecto marginal (β = -1.436e-04, p < 0.0718).
Se concluye que la regresión de Poisson es una herramienta adecuada para modelar datos discretos, siempre que se verifique el supuesto de equidispersión.
Palabras clave: regresión de Poisson, sobredispersión, GLM, datos de conteo, análisis estadístico.
El modelo de regresión de Poisson forma parte de los Modelos
Lineales Generalizados (GLM) y se utiliza para modelar
variables dependientes de tipo conteo, es decir,
aquellas que representan el número de veces que ocurre un evento en un
intervalo de tiempo o espacio determinado (Cameron & Trivedi,
2013).
A diferencia de la regresión lineal, este modelo no asume normalidad ni
homocedasticidad, sino que sigue una distribución de Poisson, en la que
la media es igual a la varianza
(equidispersión).
Su aplicación es común en ciencias sociales, epidemiología y economía, especialmente en el estudio de eventos discretos como accidentes, llamadas telefónicas o, como en este caso, analizar qué afecta la biodiversidad.
Explicar teórica y prácticamente el modelo de regresión de Poisson, aplicándolo a un conjunto de datos de “Salud Ecológica”
La regresión de Poisson se emplea para modelar variables de conteo bajo el supuesto de equidispersión, es decir, igualdad entre media y varianza (OARC Stats, s.f.; Cameron & Trivedi, 2013). La sobredispersión, donde la varianza supera la media, surge por heterogeneidad no observada o agrupamiento, requiriendo ajustes como el modelo quasi-Poisson, que escala los errores estándar (Stack Exchange, 2016). Los gráficos diagnósticos, como residuos vs. valores ajustados, son esenciales para verificar asunciones (OARC Stats, s.f.).
En síntesis, la literatura demuestra que la regresión de Poisson es una herramienta robusta para analizar eventos discretos, aunque requiere especial atención a la sobredispersión y su impacto en la inferencia estadística.
Sea \(Y_i\) una variable aleatoria que representa el número de ocurrencias de un evento para la observación \(i\), con distribución:
\[ Y_i \sim \text{Poisson}(\lambda_i) \]
La función de probabilidad es:
\[ P(Y_i = y_i) = \frac{e^{-\lambda_i}\lambda_i^{y_i}}{y_i!}, \quad y_i = 0, 1, 2, \ldots \]
La media y la varianza son iguales:
\[ E(Y_i) = Var(Y_i) = \lambda_i \]
Para incluir variables explicativas \(X_{1i}, X_{2i}, \ldots, X_{ki}\), se utiliza una función de enlace logarítmica:
\[ \log(\lambda_i) = \beta_0 + \beta_1 X_{1i} + \cdots + \beta_k X_{ki} \] o equivalentemente: \[ \lambda_i = e^{\beta_0 + \beta_1 X_{1i} + \cdots + \beta_k X_{ki}} \]
La función de verosimilitud para el conjunto de datos \(\{(y_i, X_i)\}_{i=1}^n\) es:
\[ L(\beta) = \prod_{i=1}^{n} \frac{e^{-\lambda_i} \lambda_i^{y_i}}{y_i!} \]
Su logaritmo (log-verosimilitud) es:
\[ \ell(\beta) = \sum_{i=1}^n \left[ y_i \log(\lambda_i) - \lambda_i - \log(y_i!) \right] \]
Sustituyendo \(\lambda_i = e^{X_i^\top \beta}\):
\[ \ell(\beta) = \sum_{i=1}^n \left[ y_i X_i^\top \beta - e^{X_i^\top \beta} - \log(y_i!) \right] \]
El vector de parámetros \(\beta\) se
estima maximizando esta función mediante el algoritmo
Iteratively Reweighted Least Squares (IRLS),
implementado en R con la función glm()
.
Cada parámetro \(\beta_j\)
representa el efecto multiplicativo de la variable \(X_j\) sobre la media esperada \(\lambda_i\).
El valor \(e^{\beta_j}\) se interpreta
como una razón de tasas de incidencia (Incidence Rate Ratio,
IRR).
Por ejemplo, si \(e^{\beta_1} = 1.2\),
implica que un aumento de una unidad en \(X_1\) incrementa en un 20%
la tasa esperada del evento.
Este conjunto de datos está diseñado para la clasificación de la salud ecológica en entornos urbanos. Consiste en datos horarios generados desde el 1 de enero de 2018 hasta el 31 de diciembre de 2024, simulando diversos parámetros ambientales que afectan la salud ecológica. El conjunto de datos incluye puntos de datos para representar indicadores clave de bienestar ecológico. es entender qué factores ambientales afectan la biodiversidad, lo que convierte la variable “Biodiversity_Index” en una variable de conteo (número de eventos en un periodo determinado).
# Instalación y librerías
library(MASS)
## Warning: package 'MASS' was built under R version 4.4.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Adjuntando el paquete: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
# Exploración inicial de los datos
datos <- read_excel("C:/Users/LUIS PINO/Documents/dataset5.xlsx")
head(datos)
## # A tibble: 6 × 16
## Timestamp PM2.5 Temperature Humidity Soil_Moisture
## <dttm> <dbl> <dbl> <dbl> <dbl>
## 1 2018-01-01 00:00:00 120. 21.9 54.0 22.5
## 2 2018-01-01 01:00:00 74.7 19.8 54.3 24.0
## 3 2018-01-01 02:00:00 69.1 26.7 99.0 11.6
## 4 2018-01-01 03:00:00 69.1 20.2 36.4 36.1
## 5 2018-01-01 04:00:00 232. 21.9 79.4 43.5
## 6 2018-01-01 05:00:00 143. 15.2 96.3 37.9
## # ℹ 11 more variables: Biodiversity_Index <dbl>, Nutrient_Level <dbl>,
## # Water_Quality <dbl>, Air_Quality_Index <dbl>, Pollution_Level <chr>,
## # Soil_pH <dbl>, Dissolved_Oxygen <dbl>, Chemical_Oxygen_Demand <dbl>,
## # Biochemical_Oxygen_Demand <dbl>, Total_Dissolved_Solids <dbl>,
## # Ecological_Health_Label <chr>
summary(datos)
## Timestamp PM2.5 Temperature Humidity
## Min. :2018-01-01 Min. : 0.2762 Min. : 0.277 Min. : 30.10
## 1st Qu.:2019-10-02 1st Qu.: 47.9841 1st Qu.:16.704 1st Qu.: 47.74
## Median :2021-07-02 Median : 83.9454 Median :20.111 Median : 65.23
## Mean :2021-07-02 Mean :100.1630 Mean :20.082 Mean : 65.18
## 3rd Qu.:2023-04-02 3rd Qu.:134.9439 3rd Qu.:23.439 3rd Qu.: 82.63
## Max. :2024-12-31 Max. :755.2852 Max. :41.491 Max. :100.00
## Soil_Moisture Biodiversity_Index Nutrient_Level Water_Quality
## Min. : 0.1116 Min. : 0 Min. : 0.00 Min. :0.0000
## 1st Qu.:16.2562 1st Qu.: 8 1st Qu.: 0.00 1st Qu.:0.0000
## Median :26.6645 Median :10 Median : 0.00 Median :0.0000
## Mean :28.7161 Mean :10 Mean : 37.91 Mean :0.6049
## 3rd Qu.:39.1588 3rd Qu.:12 3rd Qu.: 50.00 3rd Qu.:1.0000
## Max. :93.4350 Max. :26 Max. :200.00 Max. :3.0000
## Air_Quality_Index Pollution_Level Soil_pH Dissolved_Oxygen
## Min. : 13.61 Length:61345 Min. :5.100 Min. : 0.1175
## 1st Qu.: 86.71 Class :character 1st Qu.:5.883 1st Qu.: 5.6696
## Median :100.25 Mode :character Median :6.772 Median : 6.9940
## Mean :100.16 Mean :6.806 Mean : 7.0446
## 3rd Qu.:113.63 3rd Qu.:7.669 3rd Qu.: 8.4241
## Max. :185.80 Max. :8.999 Max. :14.8701
## Chemical_Oxygen_Demand Biochemical_Oxygen_Demand Total_Dissolved_Solids
## Min. : 0.1015 Min. : 0.1028 Min. : 0.1038
## 1st Qu.: 74.7722 1st Qu.: 49.7195 1st Qu.:124.6432
## Median :149.7998 Median : 99.4040 Median :250.1045
## Mean :149.9476 Mean : 99.8373 Mean :249.6707
## 3rd Qu.:224.8278 3rd Qu.:149.8333 3rd Qu.:374.2540
## Max. :299.9976 Max. :199.9973 Max. :499.9846
## Ecological_Health_Label
## Length:61345
## Class :character
## Mode :character
##
##
##
# Cálculo del ratio varianza/media
var(datos$Biodiversity_Index) / mean(datos$Biodiversity_Index)
## [1] 0.9967005
Biodiversity_Index cumple perfectamente con el supuesto de igualdad entre media y varianza, por lo que el modelo Poisson es adecuado. No hay evidencia de sobredispersión ni subdispersión.
# Histograma de la variable Biodiversity_Index
ggplot(datos, aes(x = Biodiversity_Index)) +
geom_histogram(binwidth = 1, fill = "mediumseagreen", color = "white") +
labs(title = "Distribución del Índice de Biodiversidad",
x = "Biodiversity Index",
y = "Frecuencia") +
theme_minimal(base_size = 14)
La variable Biodiversity_Index presenta una distribución de conteos
positiva con forma aproximadamente Poisson, concentrada alrededor de
valores medios (~10). Esto confirma que el uso del modelo de regresión
Poisson es estadísticamente apropiado para modelar esta variable.
Ahora se ajusta un modelo de regresión de Poisson usando la función glm() de R. Porque este modelo asume que la media y la varianza son iguales, permitiendo modelar la medida de biodiversidad en el área, permitiendo identificar el efecto de las variables ambientales que afectan la biodiversidad en el área.
# Ajuste del modelo Poisson estándar
modelo_poisson <- glm(Biodiversity_Index ~ PM2.5 + Temperature + Soil_Moisture,
family = poisson(link = "log"),
data = datos
)
summary(modelo_poisson)
##
## Call:
## glm(formula = Biodiversity_Index ~ PM2.5 + Temperature + Soil_Moisture,
## family = poisson(link = "log"), data = datos)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.290e+00 6.049e-03 378.506 <2e-16 ***
## PM2.5 4.578e-05 1.795e-05 2.551 0.0108 *
## Temperature 6.255e-04 2.557e-04 2.447 0.0144 *
## Soil_Moisture -1.436e-04 7.980e-05 -1.800 0.0718 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 62146 on 61344 degrees of freedom
## Residual deviance: 62130 on 61341 degrees of freedom
## AIC: 313924
##
## Number of Fisher Scoring iterations: 4
#Los coeficientes estimados indican que:
Se evalúa formalmente si la varianza excede la media utilizando la prueba dispersiontest().
# Cálculo del parámetro de sobredispersión φ
dispersion <- sum(residuals(modelo_poisson, type = "pearson")^2) / modelo_poisson$df.residual
dispersion
## [1] 0.9964255
φ ≈ 0.996 indica que la varianza es igual la media. No existe evidencia de sobredispersión en los datos. El modelo de Poisson es adecuado y no se requiere ajustar un modelo alternativo como el Quasi-Poisson o Binomial Negativo.
# Cálculo de razones de tasas de incidencia
exp(coef(modelo_poisson))
## (Intercept) PM2.5 Temperature Soil_Moisture
## 9.8704168 1.0000458 1.0006257 0.9998564
PM2.5 ≈ 1.0000458: Un aumento de 1 unidad en PM2.5 se asocia con un incremento de 0.0046% en el índice de biodiversidad, manteniendo las demás variables constantes.
Temperature ≈ 1.0006256: Un aumento de 1 grado en la temperatura se asocia con un incremento de 0.0625% en la media del índice de biodiversidad.
Soil_Moisture ≈ 0.9998564: Un aumento de 1 unidad en la humedad del suelo se asocia con una disminución de 0.014% en el índice de biodiversidad.
Finalmente, se analizan los residuos y las predicciones del modelo para evaluar visualmente su ajuste.
library(ggplot2)
# Crear un data frame con observados y predichos
pred_df <- data.frame(
Observado = datos$Biodiversity_Index,
Predicho = fitted(modelo_poisson)
)
# Gráfico con ggplot2
ggplot(pred_df, aes(x = Observado, y = Predicho)) +
geom_point(alpha = 0.4, color = "#1B9E77", size = 1.5) +
geom_abline(intercept = 0, slope = 1, color = "red", linetype = "dashed", size = 1) +
labs(
title = "Figura 1: Valores Observados vs. Predichos",
x = "Valores Observados (Biodiversity_Index)",
y = "Valores Predichos por el Modelo"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold"),
panel.grid.minor = element_blank()
)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
El gráfico de dispersión entre los valores observados y predichos del índice de biodiversidad muestra que el modelo de regresión de Poisson reproduce adecuadamente la media de la variable, pero las predicciones presentan baja variabilidad. Los puntos se concentran alrededor de un valor constante, lo que sugiere que las covariables incluidas (PM2.5, Temperatura y Humedad del Suelo) explican parcialmente la variación observada. La cercanía general a la línea de identidad indica que el modelo no presenta sesgos sistemáticos importantes, aunque podría mejorarse su capacidad predictiva incluyendo efectos no lineales o interacciones
# Residuos
plot(modelo_poisson, which = 1, main = "Figura 2: Residuos vs. Valores Ajustados")
# Este gráfico es un diagnóstico de ajuste del modelo.
La figura de residuos de Pearson frente a los valores ajustados muestra una distribución aleatoria alrededor de cero, sin patrones sistemáticos evidentes, lo que indica que el modelo de Poisson se ajusta adecuadamente a los datos. La concentración de los valores ajustados en un rango estrecho sugiere que las predicciones del modelo presentan baja variabilidad. Este comportamiento puede deberse a la naturaleza discreta y con baja dispersión del índice de biodiversidad o a efectos modestos de las covariables incluidas (PM2.5, temperatura y humedad del suelo). En conjunto, no se observan indicios de sobre-dispersión ni heterocedasticidad relevantes.
El modelo de regresión de Poisson mostró efectos estadísticamente significativos para la mayoría de las variables predictoras (véase Tabla 1). En particular, PM2.5 (β = 4.58e−05, SE = 1.80e−05, z = 2.55, p = .0108) y Temperatura (β = 6.26e−04, SE = 2.56e−04, z = 2.45, p = .0144) presentan efectos positivos y significativos sobre el índice de biodiversidad, mientras que Humedad del suelo muestra un efecto negativo marginalmente significativo (β = −1.44e−04, SE = 7.98e−05, z = −1.80, p = .0718).
El supuesto de equidispersión (𝜙 = 0.996) no evidenció desviaciones significativas, por lo que el uso del modelo de Poisson es apropiado y no se requiere un ajuste quasi-Poisson o negativo binomial.
Las razones de incidencia (IRR) confirman la magnitud de los efectos:
un incremento de una unidad en PM2.5 aumenta la tasa esperada del índice de biodiversidad en un 0.0046% (IRR = 1.0000458),
un aumento de un grado en Temperatura incrementa la tasa esperada en un 0.0626% (IRR = 1.0006255),
mientras que un aumento unitario en Humedad del suelo reduce la tasa esperada en un 0.0143% (IRR = 0.999856), manteniendo las demás variables constantes.
## Estimate Std. Error z value Pr(>|z|) IRR
## (Intercept) 2.289542 0.006049 378.506306 0.000000 9.870417
## PM2.5 0.000046 0.000018 2.550607 0.010754 1.000046
## Temperature 0.000626 0.000256 2.446549 0.014423 1.000626
## Soil_Moisture -0.000144 0.000080 -1.800145 0.071838 0.999856
Nota. Nota. Estimaciones basadas en 61,345 observaciones. Modelo:
\[ \log(E[Y]) = \beta_0 + \beta_1(\text{PM}_{2.5}) + \beta_2(\text{Temperatura}) + \beta_3(\text{Humedad}) \]
Figura 1: Observados vs. Predichos.
El gráfico muestra una correspondencia razonable entre los valores
observados y los valores predichos por el modelo de Poisson. Los puntos
se agrupan cerca de la línea de tendencia, aunque se observa una ligera
subestimación de los valores altos de biodiversidad. En
general, el modelo logra capturar adecuadamente la estructura promedio
del fenómeno.
Figura 2: Residuos vs. Valores Ajustados.
Los residuos de Pearson se distribuyen de manera aleatoria alrededor de
cero, sin evidencias de patrones sistemáticos ni heterocedasticidad.
Estos resultados son consistentes con la prueba de equidispersión (𝜙≈
1), lo que confirma un ajuste adecuado y estadísticamente
válido bajo la familia de Poisson.
Los resultados sugieren que la calidad del aire y las condiciones ambientales locales influyen significativamente sobre la biodiversidad. El efecto positivo de PM2.5 podría estar relacionado con áreas urbanas donde existe mayor actividad de monitoreo o diversidad microambiental. La temperatura muestra un efecto positivo, indicando que climas más cálidos favorecen la presencia de especies. La humedad del suelo, aunque marginalmente significativa, presenta una tendencia negativa posiblemente vinculada a condiciones de saturación que limitan la oxigenación del suelo.
En conjunto, el modelo de Poisson mostró un ajuste adecuado sin sobre-dispersión, y coeficientes coherentes con la teoría ecológica. Futuras extensiones podrían considerar variables como cobertura vegetal, tipo de suelo o altitud, o incorporar un modelo Poisson con efectos aleatorios para capturar heterogeneidad espacial.
El modelo de Poisson se ajusta adecuadamente a los datos del índice de biodiversidad, cumpliendo el supuesto de equidispersión. Las variables PM2.5 y Temperatura mostraron efectos positivos y significativos, mientras que Humedad del suelo presentó un efecto negativo marginal. Estos resultados resaltan la sensibilidad de la biodiversidad a las condiciones ambientales locales, ofreciendo evidencia empírica útil para la gestión ecológica.
En síntesis, la regresión de Poisson constituye una herramienta válida para el análisis de conteos ecológicos, siempre que se verifique la ausencia de sobre-dispersión.
Cameron, A. C., & Trivedi, P. K. (2013). Regression analysis
of count data (2nd ed.). Cambridge University Press.
Dataquest. (2019, February 27). Learn to use Poisson regression in
R. https://www.dataquest.io/blog/tutorial-poisson-regression-in-r/
OARC Stats. (n.d.). Poisson regression | R data analysis
examples. UCLA Institute for Digital Research and Education. https://stats.oarc.ucla.edu/r/dae/poisson-regression/
Stack Exchange. (2016, March 15). How to deal with overdispersion in
Poisson regression. https://stats.stackexchange.com/questions/201903/how-to-deal-with-overdispersion-in-poisson-regression-quasi-likelihood-negative
https://www.kaggle.com/datasets/datasetengineer/ecological-health-dataset