我試圖做一些需求預測與日常數據,從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))
我有不同鉀肥試了一下,它不會提高預測。
因此,我卡住了!由於預測的結果很順利。誰能指出我的錯誤在哪裏?或者我應該如何改進我的模型?
非常感謝!
這個問題似乎是無關緊要的,因爲它比R代碼更關注統計建模。 –