2013-11-26 147 views
5

我试图做一些需求预测与日常数据,从2012年1月16日到2013年10月10日。但预测只会返回可怕的结果。任何线索为什么?R,时间系列,华宇模型,预测,每日数据

这是数据在情节中的样子:存在每周和每月的季节性。即:平日需求增加,周末需求减少。

下面是预测图的样子:其中黑线是实际的数据和蓝色线是预测的数据。

x = ts(data, freq=7, start=c(3,2)) 
fit <- auto.arima(x) 
pred <- forecast(fit, h=300) 

我做了如何适应每天的数据与ARIMA模型了大量的研究。由于每周都有季节性因此我选择了freq = 7。

但是,由于预测不好。有人很好地指出了Hyndman教授分享的具有多个季节性拟合模型的方法之一。

https://stats.stackexchange.com/questions/74418/frequency-of-time-series-in-r/74426#74426

所以我把好人的意见,并从上面的链接给出2种方法拟合模型。

方法1:使用tbats()函数。

x_new <- msts(x, seasonal.periods=c(7,7*52)) 
fit <- tbats(x_new) 
fc <- forecast(fit, h=7*52) 

我用每周季节性7和每年季节性7 * 52。因为我没有想出一个简单的方法来获得每月的季节性。根据结果​​,预测也不好。注意:如果我使用7 * 4作为每月的第二个季节周期,则会给预测带来更坏的结果。方法2:使用fouriers作为xreg。

seas1 <- fourier(x, K=1) 
seas2 <- fourier(ts(x,freq=7*52), K=1) 
fit <- auto.arima(x, xreg=cbind(seas1,seas2)) 
seas1.f <- fourierf(x, K=1, h=7*52) 
seas2.f <- fourierf(ts(x,freq=7*52), K=1, h=7*52) 
fc1 <- forecast(fit, xreg=cbind(seas1.f, seas2.f)) 

我有不同钾肥试了一下,它不会提高预测。

因此,我卡住了!由于预测的结果很顺利。谁能指出我的错误在哪里?或者我应该如何改进我的模型?

非常感谢!

+2

这个问题似乎是无关紧要的,因为它比R代码更关注统计建模。 –

回答

1

您错过了节假日和周末假期和异常值(脉冲异常值,电平转换,趋势变化,周日影响(即季节脉冲)变化)的影响。如果你处理这些事情,那么你无法在星期几模式中得到很好的阅读。你可以将你的数据发布到dropbox.com,这样我可以看看吗?指定数据的起始日期和国家。

+0

谢谢您的回复。我知道像Autobox,SAS,SPSS这样的商业软件可能会完成这项工作,并且要求像R这样的软件有点太过了。不幸的是,我无法发布数据。 :( – user1489597

+0

有些人可能会!:)如何按比例缩放所有数据,然后将预测重新缩放? –