R 中的 auto.arima 是否应该报告比其他模型具有更高 AIC、AICC 和 BIC 的模型?

机器算法验证 r 有马 aic
2022-03-10 12:18:59

我已经使用 auto.arima 来拟合时间序列模型(具有 ARIMA 错误的线性回归,如Rob Hyndman 网站上所述)完成后 - 输出报告最佳模型具有 (5,1,0) 和漂移结构 -并将信息标准的值报告为

AIC:2989.2 AICC:2989.3 BIC:3261.2

当我使用 Arima 拟合具有漂移结构的 (1,1,1) 模型时 - 输出报告返回的 IC 明显较低

AIC:2510.3 AICC:2510.4 BIC:2759

我可以强制 auto.arima 考虑带有漂移模型的 (1,1,1)(使用 start.p 和 start.q 参数),当我这样做时,设置“trace=TRUE” - 我确实看到了auto.arima 考虑了具有漂移模型的 (1,1,1),但拒绝了该模型。它仍然报告带有漂移模型的 (5,1,0) 作为最佳结果。

是否存在 auto.arima 使用其他标准在模型之间进行选择的情况?

编辑添加(响应请求)

此示例的数据可在此 Google 电子表格中找到

重现该示例的 R 代码是

repro = read.csv("mindata.csv")
reprots = ts(repro, start=1, frequency=24)
fitauto = auto.arima(reprots[,"lnwocone"],
xreg=cbind(fourier(reprots[,"lnwocone"], K=11),
reprots[,c("temp","sqt","humidity","windspeed","mist","rain")]),
start.p=1, start.q=1, trace=TRUE, seasonal=FALSE)
fitdirect <- Arima(reprots[,"lnwocone"], order=c(1,1,1), seasonal=c(0,0,0),
xreg=cbind(fourier(reprots[,"lnwocone"], K=11),
reprots[,c("temp","sqt","humidity","windspeed","mist","rain")]), include.drift=TRUE)
summary(fitauto)
summary(fitdirect)

抱歉,如果 Google 文档数据 - 内联代码不是提供示例的最佳方式。我想我在过去已经看到了有关执行此操作的最佳方法的指南 - 但今天早上在搜索时找不到这些指南。

1个回答

auto.arima使用一些近似值来加快处理速度。最终模型使用完整的 MLE 进行拟合,但沿途使用 CSS 估计模型,除非您使用参数approximation=FALSE这在帮助文件中有解释:

近似 如果TRUE,估计是通过条件平方和,用于模型选择的信息标准是近似的。最终模型仍然使用最大似然估计来计算。近似值应用于长时间序列或高季节性周期以避免过多的计算时间。

默认设置是approximation=(length(x)>100 | frequency(x)>12),这也是在帮助文件中指定的。由于您有 17544 个观察值,因此默认设置为approximation=TRUE.

使用近似值,找到的最佳模型是 ARIMA(5,1,0) 误差的回归,AICc 为 2989.33。如果关闭近似值,则最佳模型具有 ARIMA(2,1,1) 误差,AICc 为 2361.40。

> fitauto = auto.arima(reprots[,"lnwocone"], approximation=FALSE,
                xreg=cbind(fourier(reprots[,"lnwocone"], K=11),
                reprots[,c("temp","sqt","humidity","windspeed","mist","rain")]),
                start.p=1, start.q=1, trace=TRUE, seasonal=FALSE)
> fitauto
Series: reprots[, "lnwocone"] 
ARIMA(2,1,1) with drift         
...
sigma^2 estimated as 0.08012:  log likelihood=-1147.63
AIC=2361.27   AICc=2361.4   BIC=2617.76