¿Auto.arima en R debe reportar un modelo con AIC, AICC y BIC más altos que otros modelos considerados?

8

He usado auto.arima para ajustar un modelo de serie temporal (una regresión lineal con errores ARIMA, como se describe en el sitio de Rob Hyndman ). Cuando termine, el resultado informa que el mejor modelo tiene un (5,1,0) con estructura de deriva. e informa los valores de los criterios de información como

AIC: 2989.2 AICC: 2989.3 BIC: 3261.2

Cuando uso Arima para ajustar un modelo con un (1,1,1) con estructura de deriva, la salida informa de un IC notablemente más bajo de

AIC: 2510.3 AICC: 2510.4 BIC: 2759

Puedo forzar a auto.arima a considerar el (1,1,1) con el modelo de deriva (usando los parámetros start.p y start.q), y cuando hago eso, y establezco "trace = TRUE" - veo que el (1,1,1) con modelo de deriva es considerado, pero rechazado, por auto.arima. Todavía informa el (5,1,0) con el modelo de deriva como el mejor resultado.

¿Hay circunstancias en las que auto.arima utiliza otros criterios para elegir entre modelos?

Editado para agregar (en respuesta a la solicitud)

Los datos para este ejemplo se pueden encontrar en esta hoja de cálculo de Google

y el código R para reproducir el ejemplo es

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)

Disculpas si el código en línea de datos de Google Docs no es la mejor manera de dar el ejemplo. Creo que he visto en el pasado pautas sobre la mejor manera de hacer esto, pero no pude encontrar esas pautas al buscar esta mañana.

Don Dresser LatentView
fuente
1
Proporcione un ejemplo reproducible.
Rob Hyndman

Respuestas:

9

auto.arimautiliza algunas aproximaciones para acelerar el procesamiento. El modelo final se ajusta usando MLE completo, pero en el camino los modelos se estiman usando CSS a menos que use el argumento approximation=FALSE. Esto se explica en el archivo de ayuda:

aproximación Si TRUE, la estimación es a través de sumas condicionales de cuadrados y los criterios de información utilizados para la selección del modelo son aproximados. El modelo final todavía se calcula utilizando la estimación de máxima verosimilitud. La aproximación debe usarse para series de tiempo largas o un período estacional alto para evitar tiempos de cálculo excesivos.

La configuración predeterminada es approximation=(length(x)>100 | frequency(x)>12), nuevamente esto se especifica en el archivo de ayuda. Como tiene 17544 observaciones, la configuración predeterminada da approximation=TRUE.

Usando las aproximaciones, el mejor modelo encontrado fue una regresión con errores ARIMA (5,1,0) con AICc de 2989.33. Si desactiva las aproximaciones, el mejor modelo tiene errores ARIMA (2,1,1) con un AICc de 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
Rob Hyndman
fuente
1
Muchas gracias por la respuesta. Ese modelo no solo se ajusta mejor, sino que tiene más sentido de varias maneras.
Don Dresser LatentView