Skip to content

check_forecasting_horizon_validation

yohou.testing.forecaster.check_forecasting_horizon_validation(forecaster, y, X_actual=None, X_future=None, X_forecast=None)

Check forecasting_horizon < 1 raises ValueError.

Parameters

Name Type Description Default
forecaster BaseForecaster

Unfitted forecaster instance

required
y DataFrame

Training target data

required
X_actual DataFrame

Training features

None

Raises

Type Description
AssertionError

If invalid horizon doesn't raise ValueError

Source Code

Show/Hide source
def check_forecasting_horizon_validation(
    forecaster,
    y: pl.DataFrame,
    X_actual: pl.DataFrame | None = None,
    X_future: pl.DataFrame | None = None,
    X_forecast: pl.DataFrame | None = None,
) -> None:
    """Check forecasting_horizon < 1 raises ValueError.

    Parameters
    ----------
    forecaster : BaseForecaster
        Unfitted forecaster instance
    y : pl.DataFrame
        Training target data
    X_actual : pl.DataFrame, optional
        Training features

    Raises
    ------
    AssertionError
        If invalid horizon doesn't raise ValueError

    """
    forecaster_clone = clone(forecaster)

    # Test horizon = 0
    try:
        forecaster_clone.fit(y, X_actual, forecasting_horizon=0, X_future=X_future, X_forecast=X_forecast)
        raise AssertionError(f"{forecaster_clone.__class__.__name__} should raise ValueError for forecasting_horizon=0")
    except ValueError as e:
        assert "forecasting_horizon" in str(e).lower() or "positive" in str(e).lower(), (
            f"ValueError should mention forecasting_horizon, got: {e}"
        )

    # Test negative horizon
    forecaster_clone = clone(forecaster)
    try:
        forecaster_clone.fit(y, X_actual, forecasting_horizon=-1, X_future=X_future, X_forecast=X_forecast)
        raise AssertionError(
            f"{forecaster_clone.__class__.__name__} should raise ValueError for forecasting_horizon=-1"
        )
    except ValueError as e:
        assert "forecasting_horizon" in str(e).lower() or "positive" in str(e).lower(), (
            f"ValueError should mention forecasting_horizon, got: {e}"
        )