EpiForecast-MX · IMSS × Tec de Monterrey
Maestría en Inteligencia Artificial Aplicada • Febrero 2026
Qué es EpiForecast-MX y por qué existe
EpiForecast-MX es una plataforma de inteligencia epidemiológica desarrollada en colaboración con el Instituto Mexicano del Seguro Social (IMSS) como proyecto Capstone de la Maestría en Inteligencia Artificial Aplicada del Tecnológico de Monterrey. Predice la incidencia semanal de tres padecimientos neurológicos y de salud mental a nivel estatal en México:
Los datos provienen del SINAVE (Sistema Nacional de Vigilancia Epidemiológica), con registros semanales desde 2014 hasta 2026 extraídos de más de 633 boletines epidemiológicos en PDF. Los modelos trabajan con tasas por 100,000 habitantes normalizadas con datos demográficos del INEGI, generando proyecciones a 52 semanas para las 32 entidades federativas, segmentadas por sexo.
De PDFs crudos a un dataset estructurado
Tablas extraídas de boletines PDF del SINAVE con keywords F32, G20, G30. Pipeline automatizado con Ghostscript y merge incremental.
Estandarización de nombres de estados (variaciones en acentos, abreviaturas, errores tipográficos) para garantizar consistencia en las 32 entidades.
Manejo especial de años con 53 semanas epidemiológicas. Detección y tratamiento de duplicados en semanas de transición entre años.
Identificación sistemática de valores atípicos con método IQR parametrizado. Muchos outliers coinciden con períodos de captura irregular del SINAVE.
Transformaciones que elevan la calidad predictiva
Normalización de conteos absolutos a tasas per capita usando población INEGI. Permite comparar estados de tamaños radicalmente diferentes (CDMX vs BCS).
Agrupación de las 32 entidades en 4 regiones: Urbana media, Sur-Sureste vulnerable, Metropolitana alta y Rural / dispersa.
Integración de población total, superficie, densidad poblacional y clasificación de regiones vía PxWeb API del INEGI.
Scraping diario de nuevos boletines SINAVE (GitHub Actions + Selenium), extracción automática y merge incremental al dataset principal.
y = log(1 + tasa) estabiliza la varianza en series volátiles,
especialmente Depresión. Al predecir se revierte con exp(y) - 1 para obtener conteos interpretables.
Matriz 3 padecimientos x 33 niveles x 3 sexos
4 folds con ventanas deslizantes que respetan la temporalidad. Pesos progresivos [0.5, 0.75, 1.0, 1.25] que priorizan períodos recientes sobre post-COVID.
Pandemia marcada como período atípico (2020-03-23, ventana 913 días). Prophet captura los changepoints automáticamente sin intervención manual.
Después de CV, el modelo final (.pkl) se entrena con toda la serie, no solo el split de entrenamiento. CV evalúa; el .pkl aprovecha todos los datos.
De baseline a producción: anti-Newton, MASE y modo híbrido
3 capas: sort descendente por cp, timeout 35s por fold, y threshold Newton-prone. Chihuahua-Depresión de 39 min a 4 min.
Optimizados con datos de 297 modelos v4. Cada padecimiento tiene su propio grid de hiperparámetros ajustado a su comportamiento epidemiológico.
MASE = MAE / MAE_naive(lag-52). MASE < 1 significa que el modelo supera al baseline naive estacional. Media v6: 0.76.
41 series insuficientes ahora usan fallback regional: modelos regionales de respaldo con desnormalización por población estatal individual. 100% cobertura.
Cobertura estatal, modelos insuficientes y MASE medio
1,548 trials para validar Prophet como modelo de producción
| Modelo | Tipo | Victorias | % | MASE mediana |
|---|---|---|---|---|
| Prophet | Estadístico | 67 | 26.0% | 0.745 |
| LightGBM+LSTM | Híbrido ML/DL | 52 | 20.2% | 0.748 |
| TFT | Deep Learning | 45 | 17.4% | 0.773 |
| DeepAR | Deep Learning | 44 | 17.1% | 0.748 |
| XGBoost | Machine Learning | 28 | 10.9% | 0.832 |
| Ridge | Machine Learning | 22 | 8.5% | 0.822 |
258 series evalúadas — 6 modelos
Desglose por Alzheimer, Depresión y Parkinson
Gana pluralidad en cada padecimiento, pero los márgenes son estrechos. El 77% de las veces que pierde, está a menos del 10% del ganador.
DeepAR + LightGBM+LSTM + TFT ganan el 54.7% de las series combinados. Sin embargo, ningún modelo individual supera a Prophet.
TFT domina Parkinson general (Prophet solo 2/33 wins) pero Prophet recupera competitividad (~30%) en desagregaciones por sexo.
Visualización interactiva para tomadores de decisiones
Mapa coroplético, series de tiempo, tablas de ranking, distribución por sexo, comparación regional, métricas del modelo, intervalos de confianza y tendencias.
Script build_tableau genera un dataset único consolidado desde all_forecast.csv con métricas, clasificación de confianza y metadatos para Tableau.
Cada punto en Tableau muestra RMSE, MAE, MAPE, MASE, tipo de modelo (propio/fallback) y nivel de confianza. Información completa sin salir del dashboard.
Paleta cromática institucional del IMSS aplicada: teal, burgundy, gold y cream. Coherencia visual entre dashboard, reportes HTML y presentaciones.
Descubrimientos más importantes del proyecto
Todos los modelos Prophet superan al baseline naive estacional (lag-52 semanas). Alzheimer 0.74 Parkinson 0.75 Depresión 0.80
Las 41 series insuficientes (36 Alzheimer, 5 Parkinson) ahora tienen predicción informada vía fallback regional. Paso de 87% a 100% de cobertura.
Algunos estados presentan series limpias y predecibles (MASE < 0.7), mientras otros son desafiantes. Las diferencias reflejan la infraestructura de captura más que la dinámica epidemiológica.
El benchmark SageMaker confirma que Prophet es competitivo (26% wins), pero deep learning colectivamente gana 54.7%. Un ensemble futuro podría mejorar las predicciones.
La pandemia generó un quiebre estructural de 2.5 años (913 días). Prophet captura los changepoints automáticamente, validando su idoneidad para eventos no anticipados.
MAPE 36.6% vs 25.9% general. La subnotificación de salud mental masculina genera patrones más erráticos y reduce la predictibilidad del modelo.
log(1 + tasa) estabiliza la varianza en series volátiles. Especialmente efectivo para Depresión, donde la varianza crece con la media.
Protección de 3 capas redujo Chihuahua-Depresión de 39 a 4 minutos. El pipeline completo de 297 modelos se entrena en ~45 minutos con paralelismo.
Mean Absolute Scaled Error — por qué elegimos esta métrica y qué revela
El MASE (Hyndman & Koehler, 2006) compara el error absoluto del modelo contra un baseline naive estacional (lag-52 semanas). A diferencia del MAPE, el MASE es escala-independiente: no se distorsiona con tasas bajas (Alzheimer, Parkinson) donde el denominador pequeño infla artificialmente el porcentaje de error.
Mejor modelo por serie — benchmark SageMaker v5-full
Todos los trials — solo Parkinson y Alzheimer < 1.0 en todos los modelos
| Padecimiento x Sexo | MAPE (%) | MASE | % series MASE < 1.0 |
|---|---|---|---|
| Depresión general | 25.9 | 0.810 | 79.8% |
| Depresión hombres | 36.6 | 0.858 | ~75% |
| Depresión mujeres | 27.9 | 0.782 | ~83% |
| Parkinson general | 52.0 | 0.693 | 86.3% |
| Parkinson hombres | 54.1 | 0.737 | ~84% |
| Parkinson mujeres | 51.5 | 0.714 | ~87% |
| Alzheimer general | 46.4 | 0.689 | 90.6% |
| Alzheimer hombres | 46.4 | 0.690 | ~91% |
| Alzheimer mujeres | 48.9 | 0.698 | ~90% |
Qué queda pendiente y cómo continuar
RMSE 0.39 (peor modelo). Cambio de régimen en 2018 no absorbido completamente por Prophet. Candidato a modelo alternativo o intervención manual.
Series con incidencia < 0.5/semana (todas Alzheimer + 4 Parkinson) no se evaluaron en SageMaker. Su comportamiento con otros modelos es desconocido.
Para las ~21 series con gap > 20% vs el ganador, un modelo híbrido Prophet + TFT/DeepAR podría mejorar significativamente las predicciones.
Sistema de reevaluación periódica de métricas para detectar degradación del modelo. Alertas automáticas cuando MASE suba por encima de 1.0.
Incorporar datos internos del IMSS (consultas, prescripciones, personal médico) como regresores adicionales en Prophet para mejorar precisión estatal.
El pipeline es parametrizado y puede adaptarse a otros códigos CIE-10. La arquitectura soporta expansión sin cambios estructurales.
Aprendizajes colectivos sobre interdisciplinariedad y pipeline
Un pipeline sólido no solo prepara datos para modelar, sino que funciona como herramienta de validación continua. Cada etapa confirma visualmente patrones, tendencias y posibles errores.
El diseño del pipeline considera la detección de nuevos boletines y la actualización progresiva del dataset, reduciendo la dependencia de procesos manuales y garantizando resultados actualizados.
Un baseline no es un modelo “malo” que se descarta: es la referencia objetiva que da sentido a toda optimización posterior. Sin él, cualquier mejora sería anecdótica.
La comunicación visual de resultados es tan importante como los resultados mismos, especialmente cuando los stakeholders son médicos, no ingenieros.
Prophet captura las dinámicas temporales de Depresión, Parkinson y Alzheimer. Cada padecimiento tiene comportamiento epidemiológico distinto que justifica modelos separados.
El sistema de pronóstico debe ser robusto ante las imperfecciones reales de los datos epidemiológicos: captura irregular, subnotificación, cambios de régimen no anticipados.
La voz de cada integrante sobre el proyecto completo
Este proyecto transformó mi manera de pensar la ingeniería de datos. Desde la primera entrega, enfocarnos en la reproducibilidad y trazabilidad del procesamiento nos dio una base sólida que resultó más valiosa que cualquier modelo sofisticado. Diseñar y ejecutar 297 modelos baseline me obligó a pensar en escalabilidad real: funciones reutilizables, pipelines parametrizados y visualizaciones automáticas para cualquier combinación de padecimiento, estado y sexo. El aprendizaje más profundo fue entender que un baseline no es un modelo “malo” — es la referencia objetiva que da sentido a toda optimización. Sin los 297 modelos v4, las mejoras del v5 y v6 no tendrían fundamento. Construir el dashboard ejecutivo y las visualizaciones para el IMSS me enseñó que la comunicación visual de resultados es tan importante como los resultados mismos, especialmente cuando los stakeholders son médicos, no ingenieros.
Como profesional de TI en el IMSS, este proyecto tiene un significado particular: estamos construyendo herramientas que podrían integrarse directamente en los procesos de planificación institucional. Desde el EDA inicial aprendí que no basta con cargar datos y correr análisis automáticos; es necesario entender qué representan y dónde pueden engañar. La validación cruzada temporal me mostró la importancia de evaluar modelos con ventanas deslizantes que simulan el escenario real de pronóstico. La detección de outliers fue reveladora: muchos valores atípicos coinciden con períodos de captura irregular que conozco de primera mano. El pipeline completo — desde la extracción de PDFs hasta el benchmark SageMaker — demostró que un sistema de pronóstico epidemiológico robusto es viable con datos reales e imperfectos del SINAVE.
Mi experiencia en ingeniería de controles en Tesla me dio una perspectiva particular sobre sistemas dinámicos, y las series de tiempo epidemiológicas comparten más de lo esperado con los sistemas que modelo profesionalmente: tendencias, estacionalidades, perturbaciones externas y la necesidad de intervalos de confianza para la toma de decisiones. Integrar datos del INEGI con el SINAVE y construir la capa de visualización en Tableau evidenció la importancia de traducir resultados técnicos a formatos consumibles por tomadores de decisiones. Lo que más me impactó fue la heterogeneidad entre estados: mientras algunos presentan series limpias y predecibles, otros son prácticamente impredecibles — lo cual apunta a diferencias en la infraestructura de captura, no en la dinámica epidemiológica. El benchmark SageMaker con 1,548 trials fue la prueba de fuego que validó nuestras decisiones de modelado.
A quienes hicieron posible este proyecto
Este proyecto no habría sido posible sin la guía y el apoyo de nuestras asesoras académicas e institucionales, quienes nos orientaron en cada etapa con retroalimentación experta y vision estratégica.
Resumen ejecutivo del stack, métricas y archivos del proyecto
| Componente | Detalle |
|---|---|
| Lenguaje | Python 3.12 |
| Modelo principal | Prophet 1.3 (cmdstanpy) |
| Benchmark | Prophet, XGBoost, Ridge, TFT, DeepAR, LightGBM+LSTM |
| Cloud | AWS S3 (DVC) + SageMaker (ml.m5.xlarge) |
| CI/CD | GitHub Actions + Selenium (scraping diario) |
| Visualización | Tableau, matplotlib, seaborn, plotly, Chart.js |
| Modelos entrenados | 297 estatales + 15 regionales = 312 total |
| Trials benchmark | 1,548 (258 series x 6 modelos) |
| MASE medio (v6) | Alzheimer 0.74 | Parkinson 0.75 | Depresión 0.80 |
| Cobertura | 100% (32 entidades x 3 padecimientos x 3 sexos) |
| Horizonte | 52 semanas a futuro |
| Período datos | 2014 – 2026 (633 boletines SINAVE) |
| Costo benchmark | ~$9.80 USD (9.8 horas ml.m5.xlarge) |
| Tiempo entrenamiento | ~45 min (n_jobs=-2, joblib loky) |
| Archivo | Descripción |
|---|---|
| forecast/all_forecast.csv | Predicciones consolidadas (~180 MB) |
| forecast/reporte_resultados.html | Reporte interactivo de resultados |
| forecast/bitacora_modelado.html | Bitácora v1-v6 del modelado |
| forecast/comparacion_modelos.html | Benchmark SageMaker (1,548 trials) |
| forecast/index.html | Galería de 312 PNGs de pronóstico |
| models/*.pkl | 312 modelos Prophet entrenados (~109 MB) |
| data/processed/ | Dataset final procesado |
| EpiDashboard.html | Dashboard Tableau embebido |