带假期的每周预报

Posted

技术标签:

【中文标题】带假期的每周预报【英文标题】:Weekly forecasts with holidays 【发布时间】:2018-04-03 02:08:13 【问题描述】:

我使用 Hyndman 的 forecast 包在每周水平上生成了一个有点准确的 tbats 预测,但我在假期有很大的错误。如何在模型中包含假期?此外,Arima 已被证明不适合我的每周数据。所以必须以非arima方式添加假期。

我见过两种解决方案。一个https://robjhyndman.com/hyndsight/dailydata/ 展示了如何将假期添加为具有傅立叶项的虚拟变量。问题是虚拟变量采用 1 或 0 的形式。我知道不同的假期有不同的影响,而 1 或 0 不会捕捉到。例如,黑色星期五与农历新年大不相同。

另一个解决方案是在这里看到https://robjhyndman.com/hyndsight/forecast7-part-2/,其中协变量nnetr 变化用作具有季节性虚拟变量的 auto.arima 的替代方案。问题是我看不到如何编写 R 代码来输入我的假期。一个例子会很有用。

【问题讨论】:

【参考方案1】:

官方统计机构使用的时间序列建模基准是美国人口普查局的x13-arima-seats。它处理季节性影响以及“参数”假期,例如中国新年和复活节。

该功能可通过seasonal 包在 R 中使用,该包安装并使用底层 x13-arima-seats 二进制文件。

还有一个功能齐全的interactive website 可以访问大多数功能(如果不是全部功能)。

【讨论】:

这是有趣的信息。是否有代码示例说明它是如何在 R 中使用的? 是的,我和 Christoph 有一个扩展的小插图以及一份草稿,当然还有包装中的示例。克里斯托夫在其他地方还有更多的路要走。这可能就是你想要的。这仍然很棘手,但这是 AFAIK 最完整(和复杂)的工具。 它做每周数据吗?我以为没有。 Weekly 对于 arima 来说通常是困难的,因为 365(或 366)不会被 7 整除——但并非不可能。我有时会捏造圣诞节前后的年终数据以适应 52 * 7 \约 1 年。【参考方案2】:

你读过 Facebook 的 prophet 包吗?

没用过,但是看了文档,感觉是一个快速的实现,也考虑到了假期:

https://cran.r-project.org/web/packages/prophet/prophet.pdf

实现了一个过程来预测时间序列数据,基于 非线性趋势与年度和每周相匹配的加法模型 季节性,加上假期[...]

https://cran.r-project.org/web/packages/prophet/vignettes/quick_start.html

【讨论】:

我也没有使用过这个,但是我参加过一个演讲,有人已经从使用预测包转移到了先知,并且它更容易编程假期,因为它内置了一个更友好的方式。 用过。当必须快速组合某些东西并与闪亮集成时,它会非常方便。【参考方案3】:

下面做了我需要做的一切。

k=23
#forecast holidays
#bool list of future holidays
holidayf <- c(0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0)
h <- length(holidayf)

#given holidays
holiday <- df[,2] 
y <- ts(df[,1],start = 2011,frequency = 52)
z <- fourier(y, K=k)
zf <- fourier(y, K=k, h=h)
fit <- auto.arima(y, xreg=cbind(z,holiday), seasonal=FALSE)
fc <- forecast(fit, xreg=cbind(zf,holidayf), h=h)
fc %>% autoplot()
summary(fit)

为了解决不同假期效果不同的问题,我简单地添加了额外的假期虚拟变量。例如,您可以制作一个好的假期向量和一个坏假期的向量,然后将它们放在cbind 中,然后将它们放入xreg。我没有在上面的代码中显示这一点,但它是直截了当的。

【讨论】:

您能否分享包含好假期和坏假期的代码。谢谢!! 假期没有好坏之分。如果那天有假期,则存在 1。 0 表示当天没有假期。 不同的假期会对预测产生不同的影响。就像黑色星期五会比中国新年等其他假期增加更多的销售量。我们是否应该考虑到这一点,或者模型可以从训练数据中整合这一点?另外,你是如何选择 K 的值的? K 的值需要调整。该模型将估计假期的影响。 知道了,谢谢。您能否分享一些确定 k 值的代码或指向某个来源?

以上是关于带假期的每周预报的主要内容,如果未能解决你的问题,请参考以下文章

假期来临快乐游航旅我要带着笑容回家

假期结束了,我相信未来会更好!

用英语写一篇暑假的收获

Linux 5.16-rc7正式发布 圣诞假期令其改进较小

远程办公是抗疫的一帖药剂吗?

新模板推荐目标军令状假期通知书…签名确认仪式满满