基于 ACF-PACF 与 auto.arima 选择 ARIMA 订单

机器算法验证 时间序列 预测 有马 模型选择 盒子詹金斯
2022-04-18 00:38:54

我使用 R 将 ARIMA 模型拟合到时间序列(年度粒度):

library(forecast)

beer <- c(150,241,361,403,504,684,706,862,879,806,840,846,1024,1196,1239,1237,1281,1342)

ts_beer = ts(beer, start = c(1980), frequency = 1)

dif.ts_beer <- diff(ts_beer)

acf(dif.ts_beer)
pacf(dif.ts_beer)

在此处输入图像描述

基于 ACF 和 PACF,我拟合了一个 ARIMA(4,0,4) 模型。

dif.ts_beer.fit <- arima(dif.Gas, order = c(4,0,4))

dif.ts_beer.fit

看起来不错。但后来我跑了auto.arima

auto.arima(dif.ts_beer)

它给:

Series: dif.ts_beer 
ARIMA(0,0,0) with non-zero mean 

Coefficients:
         mean
      70.1176
s.e.  17.0359

sigma^2 estimated as 5242:  log likelihood=-96.4
AIC=196.81   AICc=197.67   BIC=198.48

那么手动 ARIMA(4,0,4) 不是这种情况的好选择吗?如果是这样,我应该使用什么 ARIMA(p,d,q) 模型?

1个回答

首先,如果 p 和 q 均为非零值,则很难使用 (P)ACF 图来识别 ARIMA(p,d,q) 模型参见Hyndman 和 Athanasopoulos

如果 p 和 q 都是正数,则这些图无助于找到合适的 p 和 q 值。

其次,您在滞后 4 处的峰值仅勉强超过置信区间。

总是更喜欢auto.arima()自己解析 (P)ACF 图,即 Box-Jenkins 方法。它由具有丰富经验的专家构建,它确实是 ARIMA 建模的黄金标准,除非您自己是专家并且您在知识前沿进行学术研究。

在目前的情况下,auto.arima()会更喜欢一个简单的平均模型。我会建议你运行这个。