prophet翻译(六)-- 乘积季节模型

发布时间 2023-05-25 16:12:57作者: 明天OoO你好

乘积季节模型

默认情况下,Prophet采用加法季节性拟合,就是说季节性效应被添加到趋势中以进行预测。但下面这个描述乘客数量的时序例子,则不适合使用加法季节性算法:

# Python
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_air_passengers.csv')
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(50, freq='MS')
forecast = m.predict(future)
fig = m.plot(forecast)

image
这个时间序列具有明显的年度周期,但预测中的季节性在时间序列的开始处过大,在末尾处过小。在这个时间序列中,季节性不是Prophet所假设的恒定加法因子,而是随着趋势增长而增长的乘法季节性。

Prophet可以通过在输入参数中设置seasonality_mode='multiplicative'来建模乘法季节性:

# Python
m = Prophet(seasonality_mode='multiplicative')
m.fit(df)
forecast = m.predict(future)
fig = m.plot(forecast)

image
在设置seasonality_mode='multiplicative'后,组件图将以季节性作为趋势的百分比来展示:

# Python
fig = m.plot_components(forecast)

image
使用seasonality_mode='multiplicative'时,假日效应也将被建模为乘法效应。任何添加的季节性或额外的回归变量默认情况下将使用设置的seasonality_mode,但可以通过在添加季节性或回归变量时指定mode='additive'或mode='multiplicative'来覆盖。
例如,以下代码块将内置的季节性设置为乘法季节性,但同时包括一个加法季度季节性和一个加法回归变量:

# Python
m = Prophet(seasonality_mode='multiplicative')
m.add_seasonality('quarterly', period=91.25, fourier_order=8, mode='additive')
m.add_regressor('regressor', mode='additive')

在组件图中,加法和乘法的额外回归变量将分别显示在不同的面板中。然而,请注意,同时存在加法和乘法季节性的情况非常罕见,因此通常只有在有理由预期存在这种情况时才会使用这种组合。