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).