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.