在R中,auto.arima无法捕捉季节性

时间:2017-04-25 02:58:34

标签: r time-series forecasting

auto.arima()给了我系列的季节性组件,尽管我可以看到有一个存在。该函数给出了一个非季节性的ARIMA模型(5,0,0)。因此,当我尝试使用该模型进行预测时,它只是给出了平均值。时间序列是澳大利亚墨尔本的每日最低温度十年。

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对象,以及作为向量。

1 个答案:

答案 0 :(得分:1)

报告一个很好的解释 - 像往常一样 - 由Rob Hyndman撰写博客。

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

你问题的相关部分是(完全按照页面引用):

  

如果时间序列足够长,可以使用一年以上,那么   可能有必要允许每年的季节性和每周一次   季节性。在这种情况下,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