8 · ARIMA
ARIMA(p,d,q) une AR, diferenciación (I) y MA en un solo modelo. El ciclo Box-Jenkins — identificar, estimar, verificar — es cómo eliges los órdenes y confías en el resultado.
ARIMA(p,d,q) = AR(p) + d rondas de diferenciación (la parte Integrada, para remover tendencia) + MA(q). Eliges los órdenes con el ciclo Box-Jenkins: identificar órdenes candidatos desde ACF/PACF y estacionariedad, estimar por máxima verosimilitud, y luego verificar residuos y comparar AIC.
Sin esto:
Sin la I (diferenciación) no puedes modelar series con tendencia, y sin el ciclo identificar→estimar→verificar adivinarías órdenes al azar y sobreajustarías o subajustarías en silencio.
ARIMA(p, d, q) cose la lección anterior con una pieza nueva:
- AR(p) — el orden autorregresivo (valores retardados).
- I(d) — Integrada: diferenciar la serie
dveces para remover tendencia y hacerla estacionaria (Capítulo 2).d=1modela el cambio día a día;d=2modela el cambio del cambio. - MA(q) — el orden de media móvil (errores retardados).
Así, una caminata aleatoria con deriva es ARIMA(0,1,0); una serie con tendencia cuyos cambios están autocorrelacionados podría ser ARIMA(1,1,1). La d es lo que permite a ARIMA manejar data no estacionaria con tendencia que AR/MA puros no pueden.
El método Box-Jenkins es la receta disciplinada para elegir (p,d,q):
- Identificar. Elige
ddiferenciando hasta que una prueba ADF diga que la serie es estacionaria. Luego lee candidatospyqdesde la PACF (se corta tras el lag p en un proceso AR) y la ACF (se corta tras el lag q en un proceso MA). - Estimar. Ajusta el modelo candidato por máxima verosimilitud;
statsmodelsdevuelve los coeficientes y el AIC (Criterio de Información de Akaike — ajuste penalizado por número de parámetros; menor es mejor). - Verificar. Inspecciona los residuos: deben parecer ruido blanco (sin autocorrelación sobrante). Si no, revisa los órdenes y repite. Entre los modelos que pasan, prefiere el de menor AIC.
Abajo dividimos una serie sintética con tendencia por tiempo, ajustamos ARIMA(1,1,1) en la porción de entrenamiento, pronosticamos el horizonte reservado y reportamos pronóstico-vs-real, una métrica de error y el AIC.
Python (in browser)
Una división train/test que respeta el tiempo, un ARIMA(1,1,1) ajustado en la porción de entrenamiento, y luego un pronóstico multi-paso comparado con los reales reservados, con MAE/RMSE y el AIC del modelo.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
En ARIMA(p, d, q), ¿qué representa el término del medio d?
- ARIMA(p,d,q) = AR(p) + d diferenciaciones (Integrada, remueve tendencia) + MA(q); la d es lo que maneja data no estacionaria con tendencia.
- Ciclo Box-Jenkins: identificar órdenes (ADF para d, ACF/PACF para p,q) → estimar por MLE → verificar que los residuos sean ruido blanco → comparar AIC.
- Siempre divide train/test por tiempo, pronostica el horizonte futuro y juzga con una métrica de error (MAE/RMSE) más AIC para selección de modelo.
ARIMA es el baseline clásico por defecto para forecasting univariado — demanda, inventario, tráfico web — y la base que las herramientas auto-ARIMA (pmdarima) automatizan.
Si lo quitas: Sin ARIMA no tienes un baseline interpretable, rápido y bien entendido que superar antes de recurrir a modelos ML/DL más pesados.