Saltar a contenido

Los luchadores

Nombre Modelo fpp3 ¿Default? Cuándo brilla
naive Repite el último valor 5.2 Benchmark obligatorio
snaive Naive estacional 5.2 Benchmark con estacionalidad
drift Extrapolación lineal 5.2 Benchmark con tendencia
theta Método Theta (ganador M3) Casi siempre; difícil de vencer
stlf STL + ETS 3.6 Estacionalidad estable, tendencia caprichosa
sarima auto_arima → SARIMA/SARIMAX 9, 10 Dinámica rica; el que usa exógenas
ets Suavizamiento exponencial 8 El clásico robusto
xgb STL + tendencia + boosting recursivo 3.6 Patrones no lineales
harmonic Fourier + ARIMA en errores 10.5, 12.1 con season_length=[m1,m2] Estacionalidad múltiple o de periodo largo
croston Croston / SBA no Demanda intermitente (muchos ceros)
Ensemble Combinación de todos Cuando ninguno domina

Tu propio luchador

Cualquier subclase de BaseForecaster entra a la pelea:

from forecast_arena import BaseForecaster

class MiModelo(BaseForecaster):
    name = "MiModelo"
    def _fit(self, y, X=None): ...
    def _predict(self, h, X_future=None): ...

Arena(models=["snaive", MiModelo()]).compete(y)

Opcionalmente implementa residuals() (habilita diagnóstico e intervalos por default) y predict_interval() (bandas con tu propia teoría).