MADRIDAire

Parte técnica

Aquí se documentan fuentes, preparación, validación y límites. Es la capa para comprobar trazabilidad, no la puerta de entrada pública al producto.

Parte técnica

Metodología y trazabilidad

Aquí explicamos de dónde salen los datos, cómo se preparan y qué límites tiene el sistema antes de convertirlos en previsiones.

Modelo de previsión

Modelo NO2 v1

+5,6% vs. referencia

Horizonte

24h

28 estaciones · 12 contaminantes

Ventana de entrenamiento

2025-01-08 → 2025-12-31

358 días de entrenamiento

Ventana de test

2026-01-01 → 2026-04-29

119 días de validación

Lectura operativa actual

Qué está gobernando el sistema ahora

Cloudflare D1 + ingestión

Cloudflare D1 responde, pero la señal llega con retraso

La API ya está leyendo desde Cloudflare D1, aunque la última observación válida sigue en 28 sept 2026, 2:00. El punto a revisar ahora es el ciclo de ingestión protegido, no la conexión a la base.

Entorno

producción

lectura declarada por la API

Fuente observacional

Cloudflare D1

ruta activa de lectura

Última observación válida

28 sept 2026, 2:00

más de 12 h

Ingestión remota

cron configurado

D1 sí · jobs sí

Antes del detalle técnico

Si solo quieres interpretar la situación actual, empieza por el resumen, el mapa o la previsión. Esta página entra en el proceso completo: datos, preparación, validación y límites.

Volver a la guía

Fuentes

Comunidad de Madrid: históricos oficiales 2025 y 2026 para calidad del aire.

Cloudflare D1 sirve la señal observacional reciente ya normalizada; los CSV oficiales diarios siguen siendo la materia prima y el respaldo verificable del flujo.

Metadatos oficiales de estación para municipio, dirección, zona y coordenadas.

Las variables meteorológicas siguen documentadas para iteraciones futuras, pero todavía no forman parte del modelo v1 publicado.

ETL

Lectura flexible de CSV oficiales con pandas.

Normalización wide-to-long a observaciones por estación, contaminante y hora.

Consolidación de snapshots `.normalized.csv` con deduplicación por timestamp antes de publicar la señal operativa.

Asignación conservadora de `risk_level` y descarte explícito de valores inválidos.

Validación

Cobertura observacional actual: 28 estaciones y 12 contaminantes activos.

Sin estaciones sintéticas, sin coordenadas inventadas y sin previsión calculada en el frontend.

Chequeos de frescura y consistencia antes de exponer `/api/latest`, `/api/summary` y `/api/system-status`.

Artefactos ML publicados solo tras split temporal honesto y métricas comparadas contra una referencia simple.

Ingeniería de variables

Variables temporales: hora, día de la semana, mes e indicador de fin de semana.

Codificación de estación para capturar diferencias estructurales entre nodos oficiales.

Lags de 1h, 3h, 6h, 24h y 168h sobre la señal de NO2.

Rolling means de 3h, 6h y 24h calculadas por estación sin fuga temporal.

Separación temporal

La validación actual usa train 2025 / test 2026; todavía no existe una ventana intermedia persistida entre ambos bloques.

Ventana de entrenamiento

2025-01-08 → 2025-12-31

Ventana de test

2026-01-01 → 2026-04-29

Evaluación

Comparativa real entre el predictor seleccionado y las referencias simples sobre la ventana de test.

persistence

n=78077

MAE8.32
RMSE14.07
R²0.205

same_hour_yesterday

n=78077

MAE9.92
RMSE16.26
R²-0.062

hist_gradient_boosting_v1

n=78077

MAE7.85
RMSE11.96
R²0.426

Limitaciones

La API pública todavía no expone error por estación aunque el artefacto sí lo calcula.

La lectura observacional ya sale de Cloudflare D1, pero la frescura sigue dependiendo de que el ciclo protegido complete la ingestión a tiempo.

No hay features meteorológicas en el modelo v1 actual.

Las previsiones y métricas siguen publicándose como artefactos versionados; todavía no existe persistencia longitudinal semanal para informes históricos.