2015-06-29 132 views
0

我試圖在R中使用ARIMA模型來預測數據。我的時間序列的片看起來是這樣的:R ARIMA模型給出奇數結果

enter image description here

這只是一個時間的切片你得到它的意義。我有從2010年到2015年的每日數據。

我想對未來進行預測。我使用的是forecast庫,我的代碼如下所示:

dt = msts(data$val, seasonal.periods=c(7, 30)) 
fit = auto.arima(dt) 
plot(forecast(fit, 300)) 

這導致:

enter image description here

這種模式是不好的或有趣。我的seasonal.periods是由我定義的,因爲我期望看到每週和每月的季節性,但結果看起來相同,沒有定義季節性時間段。

我錯過了什麼嗎?預測預測非常迅速地從點到點變化很小。

編輯:

爲了進一步展示一下我說的,這裏有一個具體的例子。比方說,我有以下的假數據集:

x = 1:500 
y = 0.5*c(NA, head(x, -1)) - 0.4*c(NA, NA, head(x, -2)) + rnorm(500, 0, 5) 

這是一個AR(2)模型係數0.50.4。繪製這個時間序列得出:

enter image description here

所以我創造了這樣的一個ARIMA模型,並畫出預測結果:

plot(forecast(auto.arima(y), 300)) 

而且結果是:

enter image description here

爲什麼ARIMA功能不能學習這個明顯的模型?如果我使用arima函數並強制它嘗試一個AR(2)模型,我沒有得到更好的結果。

+0

這不是一個AR(2)模型。右邊的滯後項是'x',所以模型是線性趨勢加噪聲。然而,'auto.arima'應該仍然能夠做得比這更好。由於某種原因,它缺少這種趨勢。 –

回答

0

auto.arima不處理多個季節期間。對此使用tbats

dt = msts(data$val, seasonal.periods=c(7, 30)) 
fit = tbats(dt) 
plot(forecast(fit, 300)) 

auto.arima將只使用最大的季節性週期和嘗試做可以與最好的。

+0

嗨@Rob Hyndman感謝你,我沒有意識到這一點。 tbats確實提供了更好的結果,但我仍然不確定爲什麼arima函數不能提供簡單的ARIMA模型。看我的編輯。 –