You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prophet周度聚合数据建模如何设置节假日lower/upper_window参数

Facebook Prophet 周度聚合数据的节假日窗口参数设置

窗口参数单位说明

lower_window和upper_window的单位固定为天,和输入的训练数据时间粒度没有关系。Prophet内部做节假日特征匹配时,是按自然日的时间差计算窗口范围,不会因为传入周度聚合数据就自动把窗口单位切换为周。

周度场景下的参数取值方法

设置参数前必须先完成1步前置操作:把所有节假日的ds日期,对齐到你周度数据使用的周锚点日期——比如你的周度数据是用每周一作为当周的日期标识,就把所有节假日日期转换为它所在周的周一;如果是用每周日做标识,就对齐到对应周日,否则模型无法把节假日和周度记录匹配上。

对齐锚点后,窗口值按你需要覆盖的影响范围按天计算即可:

  • 如果只需要节假日所在周体现节假日效应,不需要覆盖前后周:直接设lower_window=0、upper_window=0即可,此时窗口只会匹配到节假日对齐后的那一条周度记录。
  • 如果需要覆盖节假日前1周+当周+节后1周的影响:按一周7天计算,设lower_window=-7、upper_window=7即可。
  • 如果业务场景里节假日只影响节前1周+当周,不影响节后:设lower_window=-7、upper_window=0即可,其余覆盖范围可以按7天=1周的逻辑类推。

注意不要直接沿用日度场景下-1/1的窗口取值:周度数据的日期间隔是7天,±1天的窗口范围只会覆盖锚点日期前后1天,根本匹配不到相邻周的记录,最终会导致节假日效应计算失效。

周度场景示例代码

假设周度数据以每周一作为周起始日期,需要覆盖超级碗前后各1周的影响,代码如下:

import pandas as pd

superbowls = pd.DataFrame({
  'holiday': 'superbowl',
  # 把原始节假日日期对齐到所在周的周一(周锚点)
  'ds': pd.to_datetime(['2010-02-07', '2014-02-02', '2016-02-07']).to_period('W').dt.start_time,
  # 前后各1周对应±7天
  'lower_window': -7,
  'upper_window': 7,
})

内容的提问来源于stack exchange,提问作者Sarang Manjrekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 11:18:27