2013-11-26 113 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

有些人可能會!:)如何按比例縮放所有數據,然後將預測重新縮放? –