我正在尝试使用2012年1月16日至2013年10月10日期间的每日数据进行需求预测。但是预测结果很糟糕。有什么线索吗?
以下是数据的图示:存在每周和每月的季节性变化。例如:工作日需求量更大,周末需求量较少。
我使用了每周季节性7和每年季节性7*52。由于我还没有找到获取每月季节性的简单方法,因此预测结果也不好。请注意:如果我将7 * 4用作每月的第二个季节周期,则预测结果会更差。
方法2:使用傅里叶作为xreg。
我尝试使用不同的 K 值,但预测结果并未改善。
因此,我陷入了困境!由于预测偏差太大。请问有人能指出我的错误在哪里吗?或者我该如何改进我的模型?
非常感谢!
以下是数据的图示:存在每周和每月的季节性变化。例如:工作日需求量更大,周末需求量较少。
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
所以我采纳了好心人的建议,使用上面链接中提供的两种方法来拟合模型。
方法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 值,但预测结果并未改善。
因此,我陷入了困境!由于预测偏差太大。请问有人能指出我的错误在哪里吗?或者我该如何改进我的模型?
非常感谢!