Lag features

Untitled

Window features

Untitled

Rolling window

Edge case 1: drop NaN

Edge case 1

Edge case 1

Edge case 2: smaller window size

Edge case 2

Edge case 2

How to pick window size?

How to pick statistics?

Implementation

Pandas

df['y'].rolling(window=3).agg(["mean","min"]).shift(periods=1)
df['y'].rolling(window=3, min_periods=1).agg(["mean","min"]).shift(periods=1)

Feature-engine

from feature_engine.timeseries.forecasting import WindowFeatures

transformer = WindowFeatures(
    variables = ['y'],
    functions = ['mean', 'std'],    # statistic
    window = [1, 3, 6],    # window size
    freq = '1MS')
transformer.fit_transform(df)

Untitled

sktime