Saltar a contenido

Referencia de API

Arena

Arena(
    models=None,                 # lista de nombres y/o instancias BaseForecaster
    season_length="auto",        # int, [m1, m2] o "auto"
    include_ensemble=True,
    metric="MAE",                # criterio para coronar: MAE/RMSE/MASE/...
    handle_outliers=False,       # winsoriza si generalized ESD detecta anomalías
    transform="auto",            # "auto" | "boxcox" | "log" | None
    ensemble_weights="uniform",  # "uniform" | "inverse_error"
    bias_adjust=False,           # media (no mediana) al destransformar Box-Cox
    changepoints="report",       # None | "report" | "trim" | "dummy"
    impute="interpolate",        # None exige serie completa
    n_jobs=1,
    random_state=123,
    verbose=False,
)

Arena.compete

arena.compete(
    y,                    # pd.Series (índice de fechas recomendado)
    test_size=3,          # obs. apartadas por ventana de evaluación
    h=3,                  # horizonte del pronóstico final
    n_windows=1,          # ventanas rolling-origin
    X=None,               # exógenas históricas (alineadas con y)
    X_future=None,        # valores futuros CONOCIDOS (h filas)
    forecast_X=False,     # pronosticar en cascada las columnas no conocidas
    levels=(80, 95),      # niveles de los intervalos
) -> CompetitionResult

Arena.compete_many / Arena.summarize

resultados = arena.compete_many({"nombre": serie, ...}, test_size=6, h=6)
Arena.summarize(resultados)   # DataFrame: campeón y métricas por serie

CompetitionResult

Atributo Contenido
leaderboard métricas por modelo, ordenadas
champion nombre del ganador
forecast pronóstico puntual del campeón
forecast_intervals forecast + lower/upper por nivel
interval_report cobertura empírica y Winkler por modelo
residual_diagnostics Ljung-Box, sesgo y veredicto
changepoints quiebres detectados (pos, fecha, tipo, cambio)
transformation / season_length / season_source qué se detectó y por qué
exog_report / X_future_used detalle de la cascada de exógenas
profile fuerzas de tendencia/estacionalidad (SeriesProfile)
history la serie usada (para plot)

Métodos: plot(last=None), save(path); módulo: load(path).

Funciones sueltas

detect_changepoints(y, season_length="auto", penalty_scale=1.0)
forecast_hierarchy(df_hojas, tree, test_size, h, method="ols")
calendar_features(index)        # month, quarter, trading_days, is_easter...
fourier_terms(index, period, K)
strength_trend(y, m) / strength_seasonal(y, m) / SeriesProfile.from_series(y)
residual_diagnostics(resid, season_length)
interval_coverage(y, lo, up) / winkler_score(y, lo, up, level)
rolling_origin_splits(y, test_size, n_windows)
BoxCoxTransformer(lam=None, period=None) / winsorize_outliers(y)

Modelos

Todos comparten la interfaz fit(y, X=None) → self, predict(h, X_future=None) → pd.Series, predict_interval(h, levels=(80,95)), residuals():

NaiveForecaster, SeasonalNaiveForecaster, DriftForecaster, ThetaForecaster, StlEtsForecaster, SarimaForecaster, EtsForecaster, HybridStlBoostForecaster, HarmonicRegressionForecaster, CrostonForecaster, y la clase base BaseForecaster para los tuyos.