Ajustant l'ordre ARIMA amb auto_arima
Ajustar a mà diversos models ARIMA és didàctic, però en un projecte real amb moltes sèries es torna lent. La llibreria pmdarima automatitza la cerca del millor ordre utilitzant AIC com a criteri.
Instal·lació
pip install pmdarima
pmdarima inclou la funció auto_arima, que prova combinacions de p, d, q i es queda amb la que minimitzi el criteri triat.
Ús bàsic
from pmdarima.arima import auto_arima
# Dividim en train/test
train = serie.iloc[:-12]
test = serie.iloc[-12:]
# Cerca automàtica
model_auto = auto_arima(
train,
seasonal=False,
d=None, # Deixa que auto_arima determini d
max_p=3,
max_q=3,
information_criterion='aic',
trace=True,
error_action='ignore',
suppress_warnings=True,
stepwise=True
)
print(model_auto.summary())
Amb trace=True veuràs a la consola cada model provat i el seu AIC. stepwise=True accelera la cerca evitant provar totes les combinacions possibles.
Interpretar el resultat
El resum et dirà alguna cosa així:
Best model: ARIMA(1,1,1)
AIC: 482.34
Això significa que, de totes les combinacions provades, ARIMA(1,1,1) va ser la que va trobar millor equilibri entre ajust i complexitat segons l’AIC.
Un cop triat el model, generes el pronòstic igual que abans:
prediccio = model_auto.predict(n_periods=12)
plt.figure(figsize=(12, 5))
plt.plot(train.index, train, label="Train", color="#1a1a1a")
plt.plot(test.index, test, label="Test", color="#a8e6cf")
plt.plot(test.index, prediccio, label="Predicció auto_arima", color="#ffcc00")
plt.legend()
plt.title("Pronòstic amb auto_arima")
plt.grid(True, alpha=0.3)
plt.show()
AIC vs BIC
auto_arima usa AIC per defecte, però pots canviar a BIC:
model_bic = auto_arima(train, information_criterion='bic', seasonal=False)
| Criteri | Tendència | Quan usar-lo |
|---|---|---|
| AIC | Prefereix models més complexos | Quan busques el millor ajust predictiu |
| BIC | Penalitza més la complexitat | Quan prefereixes models més simples i interpretables |
Limitacions d’auto_arima
- No sempre troba el model òptim global perquè
stepwiseés una cerca guiada. - Amb estacionalitat forta necessites activar
seasonal=Truei especificarm(període estacional). - No substitueix el judici de l’analista: has de seguir revisant residus i mètriques.
model_sarima = auto_arima(train, seasonal=True, m=12, max_p=3, max_q=3)
Resum
auto_arima és una excel·lent eina per accelerar l’experimentació. Et dóna un punt de partida sòlid, però recorda que el model final ha de validar-se amb test set, residus i coneixement del domini. No és màgia: és automatització amb criteris estadístics.