Calidad del Aire¶
NotebookLM fuente: https://notebooklm.google.com/notebook/96050780-400c-4522-945a-211c406dc516 Última sincronización: 2026-07-25 Responsable de la ficha: Dan Méndez Bloque: B (transversal temática) — Alimenta: gestión de riesgo, sistemas de información ambiental
Resumen ejecutivo¶
El notebook es una colección de estudios científicos sobre monitoreo, predicción y gestión de calidad del aire con foco en PM2.5. Cubre el ciclo completo: desde preprocesamiento de redes de sensores defectuosos hasta arquitecturas avanzadas de deep learning para pronóstico espacio-temporal, pasando por integración de datos satelitales AOD y sistemas de alerta temprana IoT.
El enfoque dominante es la transición de modelos estadísticos clásicos (ARIMA, regresión) hacia híbridos neuronales, con validación rigurosa por RMSE, MAE, R² y métricas específicas de dominio.
Objetivos¶
- Monitorear concentraciones de PM2.5, PM10, O3, NO2, CO y SO2 en redes de sensores.
- Predecir episodios de contaminación con anticipación suficiente para alertas tempranas.
- Estimar concentraciones en zonas sin estaciones mediante interpolación satelital y espacial.
- Cuantificar impacto en salud pública y apoyar cumplimiento de normas ambientales.
Variables ambientales clave¶
| Variable | Unidad | Rango típico | Frecuencia | Fuente habitual |
|---|---|---|---|---|
| PM2.5 | µg/m³ | 0–500 | Horaria / diaria | RMCAB, SIATA, EPA |
| PM10 | µg/m³ | 0–600 | Horaria / diaria | Mismas redes |
| O3 | µg/m³ | 0–600 | Horaria | Estaciones fijas |
| NO2 | µg/m³ | 0–400 | Horaria | Estaciones fijas |
| CO | mg/m³ | 0–50 | Horaria | Estaciones fijas |
| SO2 | µg/m³ | 0–500 | Horaria | Estaciones fijas |
| AOD | adim. | 0–2 | Diaria | MODIS, MISR (satélite) |
| AQI / ICA | índice | 0–500 | Horaria | Calculado |
| Temperatura | °C | –5 a 40 | Horaria | Meteorología |
| Humedad relativa | % | 0–100 | Horaria | Meteorología |
| Velocidad viento | m/s | 0–15 | Horaria | Meteorología |
| Precipitación | mm | 0–100 | Horaria | Meteorología |
| Presión | hPa | 700–1013 | Horaria | Meteorología |
Datos y fuentes¶
- Colombia: RMCAB (Bogotá), SIATA (Antioquia), AMVA, DAGMA (Cali), IDEAM/SISAIRE.
- Global: OpenAQ (https://openaq.org) — datos horarios en JSON/CSV.
- Satélite: NASA Giovanni (MODIS/MISR), Copernicus CAMS.
- Modelos de transporte químico: CMAQ, GEOS-Chem (covariables regionales).
- Sensores de bajo costo: PurpleAir, SDS011 — requieren calibración contra referencia.
Indicadores y métricas oficiales¶
ICA Colombia — Resolución 2254/2017 (concentraciones reales en µg/m³)¶
⚠️ Error frecuente: el ICA colombiano opera en concentraciones de contaminante (µg/m³), no en la escala adimensional AQI 0–500 de EPA/US. Los umbrales de abajo son los que usa
exceedance_report()yhit_rate_ica()en el repositorio.
| Categoría | PM2.5 (µg/m³) | Color oficial |
|---|---|---|
| Buena | 0 – 12 | #00E400 verde |
| Aceptable | 12 – 37 | #FFFF00 amarillo — umbral norma 24h |
| Dañina sensibles | 37 – 55 | #FF7E00 naranja |
| Dañina | 55 – 150 | #FF0000 rojo |
| Muy dañina | 150 – 250 | #8F3F97 morado |
| Peligrosa | 250 – 500 | #7E0023 marrón |
Los colores son obligatorios en reportes a entidades regulatorias (CAR, MinAmbiente).
Para PM10, O3, NO2, SO2 y CO los breakpoints están en config.py → NORMA_CO y en
preprocessing/air_quality.py → _ICA_BREAKPOINTS.
- Resolución 2254/2017: PM2.5 anual = 25 µg/m³; PM2.5 24h = 37 µg/m³.
- Guías OMS 2021: PM2.5 anual = 5 µg/m³; PM2.5 24h = 15 µg/m³ (más estrictas).
Normativa aplicable (Colombia)¶
- Resolución 2254/2017 — MinAmbiente: Norma nacional de calidad del aire.
- Decreto 948/1995: Prevención y control de la contaminación atmosférica.
- Ley 99/1993 art. 73: Criterios de calidad ambiental.
- Protocolo de Monitoreo IDEAM (2010): Operación de redes y reportes.
Preguntas analíticas típicas¶
- ¿Cuántos días al año supera la norma de 24h (37 µg/m³) o la guía OMS (15 µg/m³)?
- ¿Cuál es la tendencia interanual de PM2.5? (Mann-Kendall + Sen's slope)
- ¿Qué variables meteorológicas tienen mayor correlación con PM2.5?
- ¿Es la serie estacionaria? (ADF + KPSS — ADR-004)
- ¿Qué episodios son contaminación extrema vs. errores de sensor?
- ¿Hay diferencia significativa entre estaciones o períodos? (t-test / Mann-Whitney)
- ¿Con qué modelo se puede pronosticar PM2.5 con menor RMSE para 24–72h?
Métodos estadísticos sugeridos¶
Descriptiva / inferencial:
- Distribución: lognormal o gamma (cola derecha pesada).
- Estacionariedad: ADF + KPSS obligatorio antes de ARIMA.
- Tendencia: Mann-Kendall + Sen's slope.
- Punto de cambio: Pettitt.
- Excedencias: inference/intervals.py → exceedance_probability().
- Correlación con meteorología: Spearman.
Imputación de faltantes (por complejidad): 1. Interpolación lineal — gaps ≤ 3h. 2. Rolling mean (ventana 24h) — gaps medianos. 3. MICE — gaps largos con otras variables disponibles. 4. BRITS / SAITS / GAIN — gaps extremos (>40%).
Predictiva — jerarquía empírica para PM2.5 horario (validada con datos SISAIRE CAR 2016-2026):
| Modelo | RMSE típico | HitRate ICA | Rol recomendado |
|---|---|---|---|
| RF / XGBoost / LGB | ~3.7 µg/m³ | ~88% | Producción — 32 lag/calendar features |
| AR(1) doble-escala | — | — | Pronóstico con bandas P10/P50/P90 sin reentrenar el RF |
| SARIMAX | ~4.5 µg/m³ | ~75% | Con covariables meteorológicas horarias disponibles |
| SARIMA | ~5.9 µg/m³ | ~69% | Solo como benchmark estadístico — no para producción |
| Prophet | variable | — | Estacionalidades múltiples o eventos especiales; NO para series horarias |
| LSTM / GRU | ~10 µg/m³ | ~63% | Necesita >5 años + GPU; última opción |
Hallazgo clave (pipeline CAR 2026): SARIMA es el modelo más débil para PM2.5 horario — no captura la autocorrelación diaria (ACF significativo hasta lag 48–72h) y es computacionalmente prohibitivo en producción. XGBoost con lag features es el benchmark real. SARIMAX solo compite cuando se tienen covariables meteorológicas horarias completas y sin gaps.
Nota metodológica — walk-forward con gap para series horarias:
# OBLIGATORIO para PM2.5 horario (ACF≈0.97 en lag-1h):
walk_forward(model, y, gap=24, n_splits=4)
# Sin gap, R² se infla 8-40 puntos porcentuales por leakage de autocorrelación.
Espacial: - Kriging ordinario / universal. - IDW (más rápido). - LUR (Land Use Regression) para exposición urbana. - I de Moran antes de modelos espaciales.
Métodos identificados en el NotebookLM¶
Imputación¶
Media, mediana, moda; Forward/Backward Fill; interpolación lineal; KNN; MICE; Regresión; MissForest; BRITS; SAITS; GRIN; DynamicSeq2SeqXGB; GAIN/DEGAIN.
Series de tiempo¶
VAR, ARIMA, SARIMA, SARIMAX, Prophet, NeuralProphet, STL+ARIMA.
ML / DL forecasting¶
RF, XGBoost, LightGBM, Extra Trees, ANN/MLP, ELM, RNN, LSTM, GRU, Bi-LSTM, Bi-GRU, CNN-LSTM, CNN-GRU, GC-LSTM (espacio-temporal).
Estadística espacial¶
GWR, LUR, Kriging universal, Mixed-Effect Models (calibración AOD).
Métodos complementarios¶
Descomposición: EMD, EEMD, CEEMDAN, Wavelet. PCA. Fuzzy Logic. SHAP / LIME (interpretabilidad). Wasserstein Distance. TOST. Diebold-Mariano.
Métricas de evaluación¶
RMSE, MAE, R², MAPE, PBIAS, MSE, NSE, Willmott Index, a20-index, TIC, CRPS.
Actores institucionales¶
| Actor | Rol |
|---|---|
| IDEAM | Norma, SISAIRE, datos históricos nacionales |
| SDA Bogotá | Operación RMCAB |
| SIATA | Red Antioquia-Valle de Aburrá, alertas tempranas |
| MinAmbiente | Regulación (Res. 2254/2017) |
| Alcaldías | Planes de descontaminación |
Riesgos y sesgos en los datos¶
- Congelamiento de sensor: detectar con
eda/quality.py → FreezeInfo. - Deriva del sensor: especialmente en sensores de bajo costo sin mantenimiento.
- Gaps por mantenimiento: patrón MAR — imputar con MICE o rolling mean.
- PM2.5 > PM10: error físico imposible — detectar con
io/validators.pycross-checks. - Episodios reales vs. errores: incendios, festivos, Semana Santa — NO eliminar (ADR-002).
- Escasez rural: redes urbanas sobrerepresentadas; usar Kriging para zonas sin cobertura.
Glosario mínimo¶
- PM2.5: Partículas ≤ 2.5 µm. Penetran alvéolos pulmonares.
- AOD: Aerosol Optical Depth — medida satelital de partículas en columna atmosférica.
- AQI / ICA: Índice de Calidad del Aire — escala 0–500.
- CMAQ: Community Multiscale Air Quality — modelo de transporte químico EPA.
- RMCAB: Red de Monitoreo de Calidad del Aire de Bogotá.
- SIATA: Sistema de Alerta Temprana de Medellín y el Valle de Aburrá.
- LUR: Land Use Regression — modelo de exposición urbana.
- MAR: Missing At Random — faltantes relacionados con otras variables observadas.
- MNAR: Missing Not At Random — faltantes relacionados con el propio valor.
Buenas prácticas metodológicas (lecciones del pipeline SISAIRE CAR 2016-2026)¶
Estas lecciones surgieron del análisis de 34 estaciones y ~1.350.000 registros horarios de PM2.5 en Cundinamarca. Son transferibles a cualquier red de monitoreo de calidad del aire.
BP-1 — Walk-forward con gap obligatorio para series horarias¶
Series con ACF alta (ACF≈0.97 en lag-1h para PM2.5) producen R² inflado si el set de
entrenamiento termina en t y el test comienza en t+1. Usar gap=24h como mínimo:
walk_forward(model, y, horizon=8760, n_splits=4, gap=24)
# Evidencia: LC gap bajó de 0.38 a 0.048 al implementar gap=24h en RF.
BP-2 — Corrección de sesgo por quarter (no por mes) para régimen andino bimodal¶
Colombia (zona andina) tiene dos ciclos secos y dos lluviosos. La corrección mensual sobreajusta. Usar corrección por trimestre calibrada sobre residuos del backtesting:
BIAS_QUARTER = {1: +0.03, 2: -0.15, 3: -0.23, 4: -0.07} # µg/m³, Cundinamarca 2025
pred["predicho_corr"] = pred.apply(
lambda r: r["predicho"] + BIAS_QUARTER.get(r["quarter"], 0), axis=1)
BP-3 — Criterio de ranking multi-métrica para calidad del aire¶
El RMSE global mezcla estaciones con escalas distintas (media 8–25 µg/m³ por estación). Score validado en 34 estaciones SISAIRE:
score = 0.30 × RMSE_normalizado # RMSE / media_estación
+ 0.10 × NRMSE # escala-invariante
+ 0.25 × HitRate_ICA # % días en categoría correcta
+ 0.20 × F1_weighted # F1 multi-clase ICA
+ 0.15 × Recall_gt55 # recall episodios críticos >55 µg/m³
El 15% en Recall_gt55 es el diferenciador crítico para alertas tempranas:
XGBoost detectó 15.5% de episodios >55 µg/m³ vs. 0% de SARIMA.
BP-4 — Outliers vs. episodios críticos: validación espacial¶
Un pico IQR×3.0 sostenido ≥4h con ≥1 estación vecina (dentro de 50km) también elevada
→ episodio real: PRESERVAR con flag='episodio_critico'.
Sin confirmación espacial → error de sensor: reemplazar con mediana local limpia.
Ratio estimado en SISAIRE 2016-2026: ~15% de outliers IQR×3 son episodios reales (ADR-002).
BP-5 — Criterio de exclusión por cobertura en entrenamiento¶
Si flag_imputacion != 'original' > 30% del período → excluir la estación del entrenamiento.
Los datos siguen disponibles para análisis descriptivo y reportes de cobertura.
KNN con >30% de gaps introduce patrones sintéticos que sesgan el modelo.
BP-6 — Renombres y discontinuidades históricas en ETL¶
Aplicar dict de normalización de nombres de estaciones antes de cualquier join/merge.
En SISAIRE/CAR se encontraron 3 renombres confirmados (2026):
- TAUSA - ESCUELA → TAUSA - URBANO
- FUNZA - COLEGIO → MOSQUERA - URBANO
- NEMOCÓN - PATIO BONITO → excluir (falla de sensor documentada)
Este patrón aplica igualmente a redes de caudales (IDEAM/DHIME) y estaciones meteorológicas.
BP-7 — Período de retorno de excedencias como métrica de gestión¶
Complementa exceedance_report() con una métrica intuitiva para gestores:
def exceedance_return_period(series_daily, threshold=37):
"""Período de retorno de un día con PM2.5 > umbral (en días)."""
pct = (series_daily > threshold).mean()
return round(1 / pct, 1) if pct > 0 else float('inf')
# Ejemplo: 8.3% días > norma → T_retorno ≈ 12 días
Preguntas abiertas / oportunidades¶
- Calibración automática de sensores de bajo costo vs. estaciones de referencia.
- Modelos bayesianos jerárquicos multi-estación para incertidumbre espacial.
- ENSO/ONI como covariables en SARIMAX (vía
features/climate.py). - Nowcasting con datos satelitales en tiempo real para zonas sin cobertura.
- Sistemas de alerta temprana con threshold dinámico adaptado a meteorología.
- Source apportionment con PMF o análisis factorial.
Referencias¶
- Resolución 2254/2017 — Ministerio de Ambiente y Desarrollo Sostenible, Colombia.
- WHO Air Quality Guidelines 2021 — World Health Organization.
- IDEAM. Protocolo para el Monitoreo y Seguimiento de la Calidad del Aire, 2010.
- Ver NotebookLM fuente para referencias científicas completas.
Componente normativo auditado¶
Auditoría NotebookLM 2026-07-25: ver informe consolidado en el vault (
03_Resources/Ambiental/Normativa/_Auditorias/2026-07-25 Auditoria normativa NotebookLM.md).
Incidencia técnica: la consulta normativa no obtuvo una respuesta directa; el cuaderno respondió sugiriendo reformular la pregunta hacia temas más hiperlocales (Cundinamarca, CARs, ladrilleras de Mochuelo), en vez de listar normas citadas. Sí confirmó, como dato lateral, que las fuentes cargadas no mencionan estructura institucional de CARs en Cundinamarca ni normativa administrativa específica; solo estudios técnicos sobre monitoreo y modelación (SDAS Bogotá, DAGMA Cali, AERMOD, lógica difusa para ICA). Pendiente un sondeo dirigido más corto en el próximo ciclo.