当前位置: 首页 > news >正文

Facebook 开源多季节性时间序列数据预测工具:Prophet 乘性季节性 Multiplicative Seasonality

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。

Facebook Prophet
Prophet 是一种基于加法模型的时间序列数据预测程序,在该模型中,非线性趋势与年、周、日季节性以及节假日效应相匹配。它最适用于具有强烈季节效应和多季历史数据的时间序列。先知对缺失数据和趋势变化具有很强的鲁棒性,通常能很好地处理异常值。

Prophet 是 Facebook 核心数据科学团队发布的开源软件。

用 Python 安装

Prophet 位于 PyPI 上,因此可以使用 pip 进行安装。

python -m pip install prophet
  • 从 v0.6 起,不再支持 Python 2。
  • 自 v1.0 起,PyPI 上的软件包名称为 “prophet”;v1.0 之前为 “fbprophet”。
  • 从 v1.1 起,支持的 Python 最低版本为 3.7。

也可以通过 conda-forge 安装。

conda install -c conda-forge prophet

乘性季节性

默认情况下,Prophet 使用加性季节性进行拟合,即季节效应被加到趋势上得到预测值。下面这个航空旅客数量的时间序列就是一个加性季节性不奏效的例子:

# R
df <- read.csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_air_passengers.csv')
m <- prophet(df)
future <- make_future_dataframe(m, 50, freq = 'm')
forecast <- predict(m, future)
plot(m, forecast)
# 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)

img

这个时间序列有明显的年度周期,但预测中的季节性在时间序列起始部分过大,而在末尾部分过小。在这个时间序列中,季节性不是一个恒定的加性因子(如 Prophet 所假设的那样),而是随趋势一起增长。这就是乘性季节性。

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

# R
m <- prophet(df, seasonality.mode = 'multiplicative')
forecast <- predict(m, future)
plot(m, forecast)
# Python
m = Prophet(seasonality_mode='multiplicative')
m.fit(df)
forecast = m.predict(future)
fig = m.plot(forecast)

img

此时,组件图会将季节性显示为趋势的百分比:

# R
prophet_plot_components(m, forecast)
# Python
fig = m.plot_components(forecast)

img

当设置 seasonality_mode='multiplicative' 时,节假日效应也将被建模为乘性。任何添加的季节性或额外回归变量默认都会使用 seasonality_mode 所设置的值,但可通过在添加季节性或回归变量时指定 mode='additive'mode='multiplicative' 来覆盖。

例如,以下代码块将内置季节性设为乘性,但包含一个加性的季度季节性以及一个加性回归变量:

# R
m <- prophet(seasonality.mode = 'multiplicative')
m <- add_seasonality(m, 'quarterly', period = 91.25, fourier.order = 8, mode = 'additive')
m <- add_regressor(m, 'regressor', mode = 'additive')
# Python
m = Prophet(seasonality_mode='multiplicative')
m.add_seasonality('quarterly', period=91.25, fourier_order=8, mode='additive')
m.add_regressor('regressor', mode='additive')

加性和乘性的额外回归变量将在组件图中分别显示在不同的面板上。然而,混合使用加性和乘性季节性的情况相当少见,因此通常只有在有明确理由预期会出现这种情况时才会使用。

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

http://www.lryc.cn/news/595005.html

相关文章:

  • 昇腾310P软件安装说明
  • Python----NLP自然语言处理(Doc2Vec)
  • 7-Zip 曝出两个可导致拒绝服务的中危漏洞
  • 【网络安全】DDOS攻击
  • (7)ROS2-MUJOCO联合仿真环境迁移优化
  • 网络协议(三)网络层 IPv4、CIDR(使用子网掩码进行网络划分)、NAT在私网划分中的应用
  • 零基础数据结构与算法——第五章:高级算法-回溯算法N皇后问题
  • uniapp+vue3预约时间和日期
  • 布局AI +文化新赛道,浙江省文化产业投资集团赴景联文科技调研交流
  • 算法-比较排序
  • 广播(Broadcast)和组播(Multicast)对比
  • 简单讲解HTTPS如何保证安全性和可靠性
  • https正向代理 GoProxy
  • 计算机发展史:电子管时代的辉煌与局限
  • ubuntu远程桌面不好使
  • Consumer<T>
  • 华为云Stack交付流程
  • cs336 Lecture2
  • iOS打开开发者模式
  • Django Ninja
  • WebkitSpeechRecognition 语音识别
  • 苹果最新系统iOS 17的调试和适配方法 - Xcode 14.3.1 真机调试指南
  • Django实战:基于Django和openpyxl实现Excel导入导出功能
  • 笼子在寻找一只鸟:解读生活的隐形陷阱
  • 第11天 |openGauss逻辑结构:数据库管理
  • Redis的五大基本数据类型
  • Elasticsearch、Solr 与 OpenSearch 搜索引擎方案对比分析及选型建议
  • 神经网络——非线性激活
  • Rk3568驱动开发_非阻塞IO_16
  • Linux下SPI设备驱动开发