Saltar al contingut principal
Capítol 2.2 intermedi arima pmdarima auto-arima aic

Ajustant l'ordre ARIMA amb auto_arima

2 min lectura
Automatitza la cerca dels millors paràmetres p, d i q utilitzant pmdarima i compara models amb AIC i BIC.

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)
CriteriTendènciaQuan usar-lo
AICPrefereix models més complexosQuan busques el millor ajust predictiu
BICPenalitza més la complexitatQuan 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=True i especificar m (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.