在 R 中拟合 arima 模型时出现优化错误

机器算法验证 r 时间序列 预测 有马
2022-04-02 07:48:33

我正在使用 R 的 stats 包的 arima 方法和我的 17376 个元素的时间序列。我的目标是获得 AIC 标准的值,我在第一次测试中观察到:

 ts <- arima(serie[,1], order = c(2,1,1), seasonal = list(order=c(2,0,1),period = 24), 
         method = "CSS", optim.method = "BFGS",)
> ts$coef
           ar1        ar2        ma1       sar1       sar2       sma1 
     0.8883730 -0.0906352 -0.9697230  1.2047580 -0.2154847 -0.7744656 
    > ts$aic
[1] NA

如您所见,AIC 没有定义。关于 AIC,R 中的“Help”表示只能与“ML”一起使用。然而,它发生了:

> ts <- arima(serie[,1], order = c(2,1,1), seasonal = list(order=c(2,0,1),period = 24), 
          method = "ML", optim.method = "BFGS",)

Error en optim(init[mask], armafn, method = optim.method, hessian = TRUE,  : 
  non-finite finite-difference value [1]

Plus: warning messages lost
In log(s2) : There have been NaNs

我不明白发生了什么。另外我想了解更多关于参数“拟合方法”的信息。

3个回答

用最大似然拟合 ARIMA 模型(方法 =“ML”)需要优化(最小化)ARIMA 模型对参数的负对数似然。事实证明,这是一个受约束的优化问题,因为参数必须产生一个平稳的模型。如果不满足该约束,则该非线性约束由返回 Inf(无穷大)的负对数似然来解释。如果 MLE 接近约束的边界,则 MLE 附近的负对数似然评估可能返回无穷大。由于粗麻布是通过评估 MLE 附近的负对数似然来通过数值微分获得的,这可能会导致您获得的非有限有限差分误差。因此,如果不需要 hessian,则将 hessian = FALSE。否则,

编辑:如果您对此投反对票,您能解释一下原因吗?我是新来的。

我有同样的问题。我在网上环顾四周,在 Cross Validated 的其他地方找到了建议的解决方案。我想我会在这里分享,以防有人想要它。

我刚刚在我的模型中添加了一个“method="CSS"”,它就起作用了。例如:

model = Arima(x, order=c(1,1,1), seasonal=list(order=c(1,1,1), period=12), xreg=xreg, 
              method="CSS") 

这是参考:
auto.arima 和 Arima(预测包)

您似乎对算法收敛有疑问。这有时会发生在数值优化中。

以下是有关此特定优化方法的维基百科文章的链接:

http://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm