Facebook Prophet 时间序列预测:乘法季节性模式详解

Facebook Prophet 时间序列预测:乘法季节性模式详解

prophet Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth. prophet 项目地址: https://gitcode.com/gh_mirrors/pro/prophet

什么是季节性模式?

在时间序列分析中,季节性(Seasonality)是指数据呈现出的周期性变化规律。Facebook Prophet 作为一款强大的时间序列预测工具,默认使用**加法季节性(Additive Seasonality)**模式进行建模,即季节性效应被简单地加到趋势分量上。

加法季节性的局限性

加法季节性假设季节性波动的幅度在整个时间范围内保持不变。这在许多场景下是合理的,但当季节性效应与趋势水平相关时(即趋势增长时季节性波动幅度也随之增大),加法模型就会产生问题。

以航空乘客数据为例:

  • 早期乘客数量较少时,季节性波动被过度放大
  • 后期乘客数量增长后,季节性波动又显得不足

这是因为实际的季节性效应是与趋势水平成比例的,我们需要使用**乘法季节性(Multiplicative Seasonality)**模式。

乘法季节性模式

乘法季节性认为季节性效应是趋势的一个百分比变化,而非固定值。当趋势增长时,季节性波动的绝对值也随之增大,但相对幅度保持不变。

在 Prophet 中启用乘法季节性非常简单:

m = Prophet(seasonality_mode='multiplicative')

实际应用示例

让我们通过代码示例展示两种模式的差异:

import pandas as pd
from prophet import Prophet

# 加载航空乘客数据
df = pd.read_csv('example_air_passengers.csv')

# 加法模型(默认)
m_add = Prophet()
m_add.fit(df)
forecast_add = m_add.predict(future)

# 乘法模型
m_mul = Prophet(seasonality_mode='multiplicative')
m_mul.fit(df)
forecast_mul = m_mul.predict(future)

乘法模型的预测结果会显示季节性效应随趋势增长而适当放大,更符合实际情况。

成分分析

在乘法模式下,成分分析图会以百分比形式展示季节性效应:

fig = m.plot_components(forecast)

这将显示季节性分量占趋势的百分比变化,而非绝对值变化。

混合模式应用

Prophet 允许对不同的季节性分量和回归量使用不同的模式:

m = Prophet(seasonality_mode='multiplicative')
# 添加加法模式的季度季节性
m.add_seasonality('quarterly', period=91.25, fourier_order=8, mode='additive')
# 添加加法模式的额外回归量
m.add_regressor('regressor', mode='additive')

需要注意的是,混合使用加法和乘法模式需要谨慎,通常只在有明确理由相信不同分量确实遵循不同模式时才使用。

何时选择乘法季节性?

以下情况建议考虑乘法季节性:

  1. 数据呈现明显的指数增长趋势
  2. 季节性波动的绝对值随时间增长
  3. 数据的波动幅度与趋势水平相关
  4. 对数转换后的数据显示出更稳定的季节性模式

总结

乘法季节性模式是 Prophet 中处理与趋势相关的季节性变化的强大工具。通过正确选择季节性模式,可以显著提高时间序列预测的准确性。在实际应用中,建议通过交叉验证比较两种模式的表现,选择最适合数据的建模方式。

理解并正确应用乘法季节性模式,将使你的时间序列预测模型更加精准地捕捉数据中的复杂模式。

prophet Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth. prophet 项目地址: https://gitcode.com/gh_mirrors/pro/prophet

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伏崴帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值