19 · Proyecto final: un pronóstico de punta a punta
Junta todo el track: diagnostica la serie, ajusta un modelo, hazle backtest contra el baseline seasonal-naive y produce un pronóstico final hacia adelante — el flujo del mundo real de principio a fin.
Un proyecto real de forecasting es una pipeline, no una sola llamada a un modelo: diagnosticar (ADF para estacionariedad) → ajustar (Holt-Winters / ARIMA) → evaluar vs el baseline seasonal-naive con backtest → producir un pronóstico hacia adelante. Cada paso se gana su lugar.
Sin esto:
Sáltate los pasos de diagnosticar y comparar con baseline y ajustarás un modelo a ciegas, sin saber nunca si realmente supera a un pronóstico trivial o generaliza más allá de una rebanada.
Este es el proyecto final: cada pieza del track en un solo flujo, los mismos cuatro movimientos que correrías sobre un CSV real.
- Diagnosticar. Visualiza mentalmente y corre la prueba Augmented Dickey-Fuller (ADF) de estacionariedad. Un p-valor pequeño (< 0.05) significa estacionaria; uno grande significa que hay una tendencia/raíz unitaria que manejar (diferénciala, o deja que un modelo consciente de la tendencia la absorba). Anota el período estacional.
- Ajustar. Para una serie con tendencia clara y estacionalidad, Holt-Winters (suavizado exponencial con componentes de tendencia + estacional) es una opción fuerte, rápida e interpretable. ARIMA/SARIMA es la alternativa cuando la estructura de autocorrelación es la historia.
- Evaluar vs baseline. Un backtest rolling-origin del modelo y del baseline seasonal-naive. El modelo solo se gana el despliegue si su error de backtest es significativamente menor.
- Pronosticar. Reajusta sobre toda la data y proyecta el horizonte que realmente necesitas.
La celda de abajo hace los cuatro de punta a punta sobre una serie estacional sintética: p-valor ADF → ajuste Holt-Winters → MAE de backtest del modelo vs seasonal-naive → un pronóstico final hacia adelante de 14 días. Lee la comparación impresa — esa única línea de "el modelo supera al baseline por X%" es el entregable que le importa a un stakeholder.
Python (in browser)
De punta a punta: diagnóstico ADF → ajuste Holt-Winters → backtest rolling-origin vs seasonal-naive → un pronóstico de 14 meses hacia adelante. La línea 'supera al baseline por X%' es el entregable.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
A dónde ir después. Ahora dominas el toolkit clásico de forecasting — descomposición, estacionariedad, ARIMA/SARIMA, suavizado exponencial, features de retardo, pronosticadores de ML/DL y evaluación honesta. El ecosistema construye directamente sobre estos cimientos:
- Prophet (Meta) — un modelo aditivo de tendencia + estacionalidad + feriados, robusto a data faltante y outliers, genial cuando quieres pronósticos rápidos e interpretables con ajuste mínimo.
- NeuralProphet — las ideas de Prophet reimplementadas sobre PyTorch, agregando autorregresión y componentes neuronales para más flexibilidad.
- sktime — el scikit-learn de las series temporales: una API unificada para forecasting, clasificación y los splitters de ventana con los que hiciste backtest a mano.
- Darts — una sola API ordenada que abarca desde baselines naive y ARIMA hasta N-BEATS, TFT y otros modelos profundos, con backtesting integrado.
Cada una de estas todavía espera que diagnostiques, compares con baseline y hagas backtest. Las herramientas cambian; el flujo que acabas de correr, no.
Para leer: el flujo exacto diagnosticar → backtest-vs-baseline → pronosticar que corriste a mano, expresado en la API unificada de sktime. Los conceptos se trasladan uno a uno.
En el flujo del proyecto final, ¿por qué haces backtest del baseline seasonal-naive junto a Holt-Winters en vez de solo reportar el error del modelo?
- Un proyecto de forecasting es una pipeline: diagnosticar (ADF) → ajustar (Holt-Winters/ARIMA) → backtest vs baseline → pronóstico hacia adelante.
- Siempre haz backtest del modelo Y del baseline seasonal-naive con los mismos folds; despliega solo si el modelo lo supera significativamente.
- El flujo clásico se traslada directamente a Prophet, NeuralProphet, sktime y Darts — las herramientas cambian, el loop no.
Este loop exacto de diagnosticar → ajustar → backtest-vs-baseline → pronosticar es lo que los sistemas de planificación de demanda y pronóstico de capacidad en producción corren de forma programada.
Si lo quitas: Quita cualquier paso — sáltate el diagnóstico ADF, el baseline o el backtest — y despliegas un pronóstico que no puedes ni confiar ni defender.