R 中的 ARIMA 仅在训练集中

ARIMA in R only in train set

我正在尝试预测 600 次观察的时间序列的最后 12 个月(因此训练将是 1 到 588,测试将是 589 到 600)。我已经有了这些数据,但我想进行预测以获得一些误差估计。所以我用我所有的数据构建了 ARIMA 模型,但过去 12 个月是这样的:

st2 <-ts(st[1:588], start = 1965, frequency = 12)
modelst2 <- arima(st2,order = c(0,1,1),seasonal = list(order = c(0,0,2)))

我得到了这个 ARIMA 系数:

Call:
arima(x = st2, order = c(0, 1, 1), seasonal = list(order = c(0, 0, 2)))

Coefficients:
         ma1    sma1     sma2
      0.1067  0.1732  -0.0243
s.e.  0.0332  0.0427   0.0436

sigma^2 estimated as 4.031:  log likelihood = -1242.29,  aic = 2492.58

但后来我做了这个修改以“减少”代码的长度:

model <- arima(st[1:588], order=c(0,1,1), seasonal=list(order=c(0,0,2)))

令我惊讶的是 ARIMA 系数变成了这样:

Call:
arima(x = ex5[1:588], order = c(0, 1, 1), seasonal = list(order = c(0, 0, 2)))

Coefficients:
         ma1     sma1    sma2
      0.1699  -0.0906  0.3022
s.e.  0.1187   0.1209  0.0457

sigma^2 estimated as 3.78:  log likelihood = -1223.32,  aic = 2454.63

如果我使用完全相同的数据,为什么我会得到不同的系数?? 谢谢!:)

通过“减少代码的长度”,您还会丢失有关在时间序列中指定的 frequency 的信息。您还可以在 arima 函数中设置 period,这应该会产生相同的结果。

model <- arima(st[1:588], order=c(0,1,1), seasonal=list(order=c(0,0,2), period = 12))