首页 文章

R,Times Series,Arima Model,Forecasting,Daily data [closed]

提问于
浏览
5

我试图用每日数据做一些需求预测,从2012年1月16日到2013年10月10日 . 但是预测只会返回糟糕的结果 . 有什么线索的原因?

这就是图中数据的样子:存在每周和每月的季节性 . 即:工作日需求增加,周末需求减少 .

以下是预测图的外观:黑线是实际数据,蓝线是预测数据 .

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:使用傅立叶作为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))

我用不同的K尝试了它,并没有改善预测 .

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

非常感谢!

1 回答

  • 1

    您错过了假期的影响以及假日和异常值的主要影响因素(脉冲异常值,水平偏移,趋势变化,一周影响的变化(即季节性脉冲)) . 如果你处理这些事情,那么你就无法在一周的日常模式中得到很好的解读 . 你可以把你的数据发布到dropbox.com,这样我可以看看吗?指定开始日期和数据来源的国家/地区 .

相关问题