StatsForecast (Nixtla)¶
Os modelos automáticos do StatsForecast
entram como modelos-base opcionais, com nomes próprios (prefixo sf_) para não se
confundirem com o arima do statsmodels.
Instalação¶
python -m pip install "autohybts[nixtla-stats]==1.0.0rc4"
As versões atuais do StatsForecast (2.1) exigem pandas<3: o extra instala o pandas
2.x, que a AutoHybTS suporta (piso 2.1). Num ambiente com pandas 3, mantenha um segundo
ambiente virtual para esses modelos. Sem o extra, uma candidata com eles fica
SKIPPED e o motivo diz o que instalar.
Modelos¶
Nome |
Classe |
O que escolhe sozinho |
|---|---|---|
|
|
ordem (p, d, q) e, com |
|
|
erro, tendência e sazonalidade ( |
|
|
variante do método Theta e decomposição sazonal |
|
|
suavização exponencial complexa, com ou sem sazonalidade |
Parâmetros: season_length e model_params (repassados à classe do StatsForecast).
Na busca, season_length vem do período sazonal do experimento; em create_model,
passe-o explicitamente:
exp.create_model("sf_auto_ets", season_length=7)
exp.create_model("sf_auto_arima", season_length=7,
model_params={"seasonal": True, "max_D": 1})
exp.create_hybrid("sf_auto_theta", "mlp", base_params={"season_length": 7})
Parâmetros congelados e variantes A/B¶
Cada modelo é ajustado no vetor de treino da origem e depois congelado. A previsão chama
forward(y=contexto, h) do StatsForecast, que aplica o modelo ajustado (ordens,
coeficientes, constantes de suavização) ao contexto observado sem reestimá-lo: no próprio
treino ela reproduz predict; num contexto mais longo só os estados mudam. Por isso os
modelos funcionam na variante B, como bases de híbridos (os resíduos fora da amostra vêm
da mesma atualização) e passam nos testes de contrato e de causalidade da biblioteca.
Custo¶
O AutoARIMA testa várias ordens a cada ajuste (alguns segundos numa série diária de
algumas centenas de pontos); AutoETS, AutoTheta e AutoCES são bem mais
rápidos. Um híbrido ajusta a base duas vezes por origem (treino e prefixo dos resíduos).
Paridade com o projeto de replicação¶
Os sete híbridos do projeto de replicação são reproduzidos exatamente pelas
especificações da AutoHybTS (teste tests/regression/test_legacy_parity.py): quatro com
corretor KNN e três estatístico-ANN. Um ETS–ANN, por exemplo:
exp.create_hybrid(
"sf_auto_ets", "mlp", window=7,
base_params={"season_length": 7, "model_params": {"model": "ZZZ"}},
corrector_params={
"scale": "minmax", "feature_order": "lag", "random_state": 42,
"estimator_params": {"hidden_layer_sizes": [5], "activation": "logistic",
"solver": "lbfgs", "max_iter": 2000},
},
)
scale="minmax" (escala por coluna como o MinMaxScaler) e feature_order="lag"
(colunas da janela da defasagem 1 em diante) existem para essa paridade; o padrão da
biblioteca continua scale=True e ordem cronológica. A cauda de resíduos fixa do projeto
(residual_tail) corresponde a ResidualSettings(max_tail=...) ao montar o modelo
(strategies.base.build_model); o experimento usa a cauda padrão (metade do treino).
Limites¶
Só modelos locais e pontuais: intervalos de previsão do StatsForecast não são usados.
MLForecast e NeuralForecast não estão integrados.
Sem covariáveis (
target_mode="univariate").
Ver também
Tutoriais: 15. Modelos automáticos do StatsForecast.