O auto.arima em R deve reportar um modelo com AIC, AICC e BIC mais alto do que os outros modelos considerados?

8

Usei o auto.arima para ajustar um modelo de série temporal (uma regressão linear com erros ARIMA, conforme descrito no site de Rob Hyndman ). e reporta valores de critérios de informação como

AIC: 2989.2 AICC: 2989.3 BIC: 3261.2

Quando eu uso o Arima para ajustar um modelo com uma estrutura (1,1,1) com deriva - a saída reporta ICs visivelmente mais baixos de

AIC: 2510.3 AICC: 2510.4 BIC: 2759

Posso forçar o auto.arima a considerar o modelo (1,1,1) com desvio (usando os parâmetros start.p e start.q) e, quando faço isso, e definir "trace = TRUE" - vejo que o modelo (1,1,1) com desvio é considerado, mas rejeitado, pelo auto.arima. Ele ainda reporta o modelo (5,1,0) com desvio como o melhor resultado.

Existem circunstâncias em que o auto.arima usa outros critérios para escolher entre modelos?

Editado para adicionar (em resposta à solicitação)

Os dados deste exemplo podem ser encontrados nesta planilha do Google

e código R para reproduzir o exemplo é

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)

Desculpas se o Google documenta dados - código embutido não é a melhor maneira de fornecer o exemplo. Eu acho que vi no passado diretrizes sobre a melhor maneira de fazer isso - mas não consegui localizar essas diretrizes na pesquisa desta manhã.

Don Dresser LatentView
fonte
1
Forneça um exemplo reproduzível.
precisa

Respostas:

9

auto.arimausa algumas aproximações para acelerar o processamento. O modelo final é ajustado usando o MLE completo, mas ao longo do caminho os modelos são estimados usando CSS, a menos que você use o argumento approximation=FALSE. Isso é explicado no arquivo de ajuda:

aproximação Se TRUE, a estimativa é feita através de somas condicionais de quadrados e os critérios de informação utilizados para a seleção do modelo são aproximados. O modelo final ainda é calculado usando a estimativa de máxima verossimilhança. A aproximação deve ser usada para séries temporais longas ou um período sazonal alto para evitar tempos de computação excessivos.

A configuração padrão é approximation=(length(x)>100 | frequency(x)>12)novamente especificada no arquivo de ajuda. Como você tem 17544 observações, a configuração padrão fornece approximation=TRUE.

Usando as aproximações, o melhor modelo encontrado foi uma regressão com erros ARIMA (5,1,0) com AICc de 2989,33. Se você desativar as aproximações, o melhor modelo apresentará erros ARIMA (2,1,1) com um 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
fonte
1
Muito obrigado pela resposta. Esse modelo não só se encaixa melhor - mas faz mais sentido de várias maneiras.
Don Dresser LatentView