2017-04-25 444 views
-1

auto.arima()給我的系列沒有季節性組件,儘管我可以看到有一個存在。該函數爲我提供了一個非季節性的ARIMA訂單模型(5,0,0)。所以,當我嘗試使用該模型進行預測時,它只是給出了平均值。時間序列是澳大利亞墨爾本每日最低氣溫十年。在R中,auto.arima無法捕捉季節性

Click this link to see the data and the auto.arima forecast

`

library(readr) 

temp <- read_csv("~/Downloads/Melbourne Minimum Temp.csv", 
       col_types = cols(Date = col_date(format = "%m/%d/%y"), 
            Temp = col_number())) 

t <- ts(temp$Temp, start = temp$Date\[1], end = temp$Date[nrow(temp)]) 

auto.arima(t, trace = T) 

`

使用該數據作爲一個TS對象試過了,作爲XTS對象,和作爲載體。

+0

你也應該張貼你如何定義你的時間序列。如果auto.arima沒有檢測到季節性,則在創建系列時可能沒有指定正確的頻率。您也可以使用'auto.arima(...,D = 1)'強制季節差異。 –

+0

我沒有創建該系列;它是墨爾本每日最低氣溫的真實數據。我嘗試設置D = 1,但那不起作用。 –

+0

如果你想得到一個有用的答案,你需要提供更多的信息:這可能是你的數據的一個子集,但至少你應該發佈你用來產生該預測的實際代碼。尤其是您定義時間序列的部分。 –

回答

-1

只是報告一個很好的解釋 - 像往常一樣 - 博文由羅伯Hyndman。

https://robjhyndman.com/hyndsight/dailydata/

相關部分你的問題說(blockquoting完全頁):

當時間序列足夠長採取了一年多,然後 可能有必要以允許每年的季節性以及每週的季節性 。在這種情況下,TBATS等多重季節性模型需要 。

y <- msts(x, seasonal.periods=c(7,365.25)) 
fit <- tbats(y) 
fc <- forecast(fit) 
plot(fc) 

這應該抓住每星期方式以及更長的年度 模式。期間365.25是允許閏年爲 的一年的平均時長。在某些國家,可能需要替代或額外的年份 。

我認爲它確實如你所願。

我也試圖簡單地創建MSTS

y <- msts(x[1:1800], seasonal.periods=c(7,365.25)) 

時間序列(我切了時間序列中的一半要快)

,然後運行auto.arima()直接就可以了,迫使季節性成分與d = 1

fc = auto.arima(y,D=1,trace=T,stepwise = F) 

這將需要一段時間。因爲我逐步建立= FALSE(如果你想看看所有組合沒有你可以設置快捷鍵近似= FALSE還有)

Series: y 
ARIMA(1,0,3)(0,1,0)[365] 

Coefficients: 
     ar1  ma1  ma2  ma3 
     0.9036 -0.3647 -0.3278 -0.0733 
s.e. 0.0500 0.0571 0.0405 0.0310 

sigma^2 estimated as 12.63: log likelihood=-3854.1 
AIC=7718.19 AICc=7718.23 BIC=7744.54 

,然後預測

for_fc = forecast(fc) 
plot(for_fc) 

我增加圖形上的 圖(for_fc) 輸出頂部的完整的時間系列(紅色),它似乎工作得體 - 但這只是一個快速測試。

enter image description here