我正在尝试使用从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。
然而,由于预测是糟糕的。有人很友好地指出了海德曼教授分享的一种方法,即用多种季节性来拟合模型。
https://stats.stackexchange.com/questions/74418/frequency-of-time-series-in-r/74426#74426
因此,我采纳了好家伙的建议,并使用上面链接中给出的两种方法对模型进行拟合。
方法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,但它不能改善预测。
因此,我被卡住了!因为预测有很大的偏差。谁能指出我的错误在哪里?或者我应该如何改进我的模型?
非常感谢!
发布于 2013-11-26 23:28:55
你错过了假期的影响,以及围绕假期和异常值的领先或滞后影响(脉冲异常值,水平变化,趋势变化,一周中一天的变化影响(即季节性脉冲))。如果你处理这些事情,那么你就不能很好地阅读一周中的一天模式。你能把你的数据上传到dropbox.com上让我看看吗?指定开始日期和数据来源的国家/地区。
https://stackoverflow.com/questions/20210504
复制相似问题