Auto.arima dans R devrait-il jamais signaler un modèle avec un AIC, AICC et BIC plus élevé que les autres modèles considérés?

8

J'ai utilisé auto.arima pour ajuster un modèle de série chronologique (une régression linéaire avec des erreurs ARIMA, comme décrit sur le site de Rob Hyndman ). Une fois terminé - le résultat indique que le meilleur modèle a un (5,1,0) avec une structure de dérive - et rapporte les valeurs des critères d'information comme

AIC: 2989,2 AICC: 2989,3 BIC: 3261,2

Lorsque j'utilise Arima pour adapter un modèle avec un (1,1,1) avec une structure de dérive - la sortie rapporte des IC sensiblement inférieurs de

AIC: 2510,3 AICC: 2510,4 BIC: 2759

Je peux forcer auto.arima à considérer le (1,1,1) avec le modèle de dérive (en utilisant les paramètres start.p et start.q), et quand je le fais, et définir "trace = TRUE" - je vois cela le modèle (1,1,1) avec dérive est considéré, mais rejeté, par auto.arima. Il rapporte toujours le (5,1,0) avec le modèle de dérive comme le meilleur résultat.

Y a-t-il des circonstances où auto.arima utilise d'autres critères pour choisir entre les modèles?

Modifié pour ajouter (en réponse à la demande)

Les données de cet exemple se trouvent dans cette feuille de calcul Google

et le code R pour reproduire l'exemple est

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)

Toutes mes excuses si les données Google docs - le code en ligne n'est pas le meilleur moyen de fournir l'exemple. Je pense avoir vu dans le passé des lignes directrices sur la meilleure façon de le faire - mais je n'ai pas pu localiser ces lignes directrices lors de la recherche ce matin.

Don Dresser LatentView
la source
1
Veuillez fournir un exemple reproductible.
Rob Hyndman

Réponses:

9

auto.arimautilise quelques approximations afin d'accélérer le traitement. Le modèle final est ajusté à l'aide de MLE complet, mais en cours de route, les modèles sont estimés à l'aide de CSS, sauf si vous utilisez l'argument approximation=FALSE. Ceci est expliqué dans le fichier d'aide:

approximation Si TRUE, l'estimation se fait par des sommes conditionnelles de carrés et les critères d'information utilisés pour la sélection du modèle sont approximés. Le modèle final est toujours calculé à l'aide d'une estimation du maximum de vraisemblance. L'approximation doit être utilisée pour de longues séries chronologiques ou une période saisonnière élevée afin d'éviter des temps de calcul excessifs.

Le paramètre par défaut est approximation=(length(x)>100 | frequency(x)>12), là encore, il est spécifié dans le fichier d'aide. Comme vous avez 17544 observations, le paramètre par défaut donne approximation=TRUE.

En utilisant les approximations, le meilleur modèle trouvé était une régression avec des erreurs ARIMA (5,1,0) avec AICc de 2989,33. Si vous désactivez les approximations, le meilleur modèle présente des erreurs ARIMA (2,1,1) avec 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
la source
1
Merci beaucoup pour la réponse. Ce modèle convient non seulement mieux - mais est plus logique de plusieurs façons.
Don Dresser LatentView