Skip to content

Metrics

polars_ts.metrics

Metrics dataclass

mae(actual_col='y', predicted_col='y_hat', id_col=None)

Mean Absolute Error. See :func:polars_ts.metrics.forecast.mae.

rmse(actual_col='y', predicted_col='y_hat', id_col=None)

Root Mean Squared Error. See :func:polars_ts.metrics.forecast.rmse.

mape(actual_col='y', predicted_col='y_hat', id_col=None)

Mean Absolute Percentage Error. See :func:polars_ts.metrics.forecast.mape.

smape(actual_col='y', predicted_col='y_hat', id_col=None)

Symmetric MAPE. See :func:polars_ts.metrics.forecast.smape.

mase(actual_col='y', predicted_col='y_hat', id_col='unique_id', time_col='ds', season_length=1)

Mean Absolute Scaled Error. See :func:polars_ts.metrics.forecast.mase.

crps(actual_col='y', quantile_cols=None, quantiles=None, id_col=None)

CRPS (quantile approximation). See :func:polars_ts.metrics.forecast.crps.

lag_features(lags, target_col='y', id_col='unique_id', time_col='ds')

Create lag features. See :func:polars_ts.features.lags.lag_features.

rolling_features(windows, aggs=None, target_col='y', id_col='unique_id', time_col='ds', center=False, min_samples=None)

Create rolling features. See :func:polars_ts.features.rolling.rolling_features.

calendar_features(features=None, time_col='ds')

Extract calendar features. See :func:polars_ts.features.calendar.calendar_features.

fourier_features(period, n_harmonics=1, time_col='ds', id_col='unique_id')

Generate Fourier features. See :func:polars_ts.features.fourier.fourier_features.

log_transform(target_col='y')

Apply log1p transform. See :func:polars_ts.transforms.log.log_transform.

inverse_log_transform(target_col='y')

Invert log transform. See :func:polars_ts.transforms.log.inverse_log_transform.

boxcox_transform(lam, target_col='y')

Apply Box-Cox transform. See :func:polars_ts.transforms.boxcox.boxcox_transform.

inverse_boxcox_transform(lam=None, target_col='y')

Invert Box-Cox transform. See :func:polars_ts.transforms.boxcox.inverse_boxcox_transform.

difference(order=1, period=1, target_col='y', id_col='unique_id', time_col='ds')

Apply differencing. See :func:polars_ts.transforms.differencing.difference.

undifference(order=1, period=1, target_col='y', id_col='unique_id', time_col='ds')

Invert differencing. See :func:polars_ts.transforms.differencing.undifference.

expanding_window_cv(n_splits=5, horizon=1, step=1, gap=0, id_col='unique_id', time_col='ds')

Expand-window CV. See :func:polars_ts.validation.splits.expanding_window_cv.

sliding_window_cv(n_splits=5, train_size=10, horizon=1, step=1, gap=0, id_col='unique_id', time_col='ds')

Slide-window CV. See :func:polars_ts.validation.splits.sliding_window_cv.

rolling_origin_cv(n_splits=5, initial_train_size=None, horizon=1, step=1, gap=0, fixed_train_size=None, id_col='unique_id', time_col='ds')

Roll-origin CV. See :func:polars_ts.validation.splits.rolling_origin_cv.

conformal_interval(cal_residuals, coverage=0.9, residual_col='residual', predicted_col='y_hat', id_col=None, symmetric=True)

Add conformal prediction intervals. See :func:polars_ts.probabilistic.conformal.conformal_interval.

crps(df, actual_col='y', quantile_cols=None, quantiles=None, id_col=None)

Continuous Ranked Probability Score (quantile approximation).

Approximates CRPS using a set of quantile forecasts via the pinball (quantile) loss, averaged across quantiles.

Parameters

df DataFrame with actual values and quantile forecast columns. actual_col Column name for actual values. quantile_cols List of column names containing quantile forecasts. If None, auto-detected as columns matching q_* pattern. quantiles List of quantile levels (e.g. [0.1, 0.5, 0.9]) corresponding to quantile_cols. If None, parsed from column names (e.g. "q_0.1"0.1). id_col If provided, compute CRPS per group.

Returns

pl.DataFrame | float

mae(df, actual_col='y', predicted_col='y_hat', id_col=None)

Mean Absolute Error.

Parameters

df DataFrame with actual and predicted columns. actual_col Column name for actual values. predicted_col Column name for predicted values. id_col If provided, compute MAE per group and return a DataFrame with columns [id_col, "mae"]. Otherwise return a single float.

Returns

pl.DataFrame | float

mape(df, actual_col='y', predicted_col='y_hat', id_col=None)

Mean Absolute Percentage Error.

Undefined when actual values are zero. Rows where actual == 0 are excluded from the computation.

Parameters

df DataFrame with actual and predicted columns. actual_col Column name for actual values. predicted_col Column name for predicted values. id_col If provided, compute MAPE per group.

Returns

pl.DataFrame | float MAPE as a fraction (not percentage). Multiply by 100 for percent.

mase(df, actual_col='y', predicted_col='y_hat', id_col='unique_id', time_col='ds', season_length=1)

Mean Absolute Scaled Error.

Scales the MAE by the in-sample naive forecast error. A MASE < 1 means the model outperforms the naive (seasonal) baseline.

Parameters

df DataFrame with actual, predicted, and time columns. actual_col Column name for actual values. predicted_col Column name for predicted values. id_col Column identifying each time series. time_col Column with timestamps for ordering. season_length Seasonal period for the naive baseline. Use 1 for non-seasonal data (equivalent to random walk baseline).

Returns

pl.DataFrame | float If multiple series exist (via id_col), returns a DataFrame with columns [id_col, "mase"]. If only one series, returns a float.

rmse(df, actual_col='y', predicted_col='y_hat', id_col=None)

Root Mean Squared Error.

Parameters

df DataFrame with actual and predicted columns. actual_col Column name for actual values. predicted_col Column name for predicted values. id_col If provided, compute RMSE per group.

Returns

pl.DataFrame | float

smape(df, actual_col='y', predicted_col='y_hat', id_col=None)

Symmetric Mean Absolute Percentage Error.

Uses the formula: mean(2 * |actual - predicted| / (|actual| + |predicted|)). Rows where both actual and predicted are zero are excluded.

Parameters

df DataFrame with actual and predicted columns. actual_col Column name for actual values. predicted_col Column name for predicted values. id_col If provided, compute sMAPE per group.

Returns

pl.DataFrame | float sMAPE as a fraction (0 to 2). Multiply by 100 for the 0–200 scale.