Ale*_*lex 8 r time-series forecasting
我使用Hyndman的forecast软件包tbats在每周级别上产生一些准确的预测,但我在假期时会出现重大错误.如何在模型中包含假期?此外,有证据表明Arima不适合我的每周数据.所以假期必须以非芳香的方式添加.
我见过两种解决方案.一个https://robjhyndman.com/hyndsight/dailydata/显示如何使用傅里叶项将假期添加为虚拟变量.问题是假变量采用1或0的形式.我知道不同的假期有不同的效果,1或0不会捕获.例如,黑色星期五与中国新年非常不同.
另一个解决方案是在https://robjhyndman.com/hyndsight/forecast7-part-2/,其中covariate nnetrchange用作auto.arima的替代品,带有季节性虚拟变量.问题是我没有看到如何编写R代码来输入我的假期.一个例子很有用.
你读过Facebook的prophet包吗?
没有使用它,但从阅读文档,它似乎是一个快速实现也占假期:
https://cran.r-project.org/web/packages/prophet/prophet.pdf
实施基于附加模型预测时间序列数据的程序,其中非线性趋势与年度和每周季节性相适应,加上假期[...]
https://cran.r-project.org/web/packages/prophet/vignettes/quick_start.html
以下做了我需要它做的一切。
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)
Run Code Online (Sandbox Code Playgroud)
为了解决不同假期效果不同的问题,我简单地添加了额外的假期虚拟变量。例如,您可以制作一个美好假期的向量和一个糟糕假期的向量,cbind然后将它们放入xreg. 我没有在上面的代码中显示这一点,但它很简单。
| 归档时间: |
|
| 查看次数: |
1852 次 |
| 最近记录: |