Sollte auto.arima in R jemals ein Modell mit höherem AIC, AICC und BIC melden als andere berücksichtigte Modelle?

8

Ich habe auto.arima verwendet, um ein Zeitreihenmodell anzupassen (eine lineare Regression mit ARIMA-Fehlern, wie auf Rob Hyndmans Website beschrieben). und meldet Werte von Informationskriterien als zurück

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

Wenn ich Arima verwende, um ein Modell mit einem (1,1,1) mit Driftstruktur anzupassen, meldet die Ausgabe deutlich niedrigere ICs von

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

Ich kann auto.arima zwingen, das (1,1,1) mit Drift-Modell (unter Verwendung der Parameter start.p und start.q) zu berücksichtigen, und wenn ich das tue, und "trace = TRUE" setzen - das sehe ich Das (1,1,1) mit Drift-Modell wird von auto.arima berücksichtigt, aber abgelehnt. Es wird immer noch das (5,1,0) mit Driftmodell als bestes Ergebnis zurückgemeldet.

Gibt es Umstände, unter denen auto.arima andere Kriterien verwendet, um zwischen Modellen zu wählen?

Zum Hinzufügen bearbeitet (als Antwort auf Anfrage)

Daten für dieses Beispiel finden Sie in dieser Google-Tabelle

und R-Code zum Reproduzieren des Beispiels ist

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)

Entschuldigung, wenn die Google-Dokumente Daten - Inline-Code ist nicht der beste Weg, um das Beispiel bereitzustellen. Ich glaube, ich habe in der Vergangenheit Richtlinien gesehen, wie dies am besten funktioniert - konnte diese Richtlinien jedoch heute Morgen bei der Suche nicht finden.

Don Dresser LatentView
quelle
1
Bitte geben Sie ein reproduzierbares Beispiel an.
Rob Hyndman

Antworten:

9

auto.arimaverwendet einige Näherungswerte, um die Verarbeitung zu beschleunigen. Das endgültige Modell wird mit vollständigem MLE angepasst, aber auf dem Weg werden die Modelle mithilfe von CSS geschätzt, sofern Sie nicht das Argument verwenden approximation=FALSE. Dies wird in der Hilfedatei erklärt:

Approximation Wenn die TRUESchätzung über bedingte Quadratsummen erfolgt, werden die für die Modellauswahl verwendeten Informationskriterien approximiert. Das endgültige Modell wird weiterhin unter Verwendung der Maximum-Likelihood-Schätzung berechnet. Die Annäherung sollte für lange Zeitreihen oder einen hohen saisonalen Zeitraum verwendet werden, um übermäßige Rechenzeiten zu vermeiden.

Die Standardeinstellung ist approximation=(length(x)>100 | frequency(x)>12)wiederum in der Hilfedatei angegeben. Da Sie 17544 Beobachtungen haben, gibt die Standardeinstellung an approximation=TRUE.

Unter Verwendung der Näherungen wurde als bestes Modell eine Regression mit ARIMA (5,1,0) -Fehlern mit AICc von 2989,33 gefunden. Wenn Sie die Näherungen deaktivieren, weist das beste Modell ARIMA (2,1,1) -Fehler mit einem AICc von 2361,40 auf.

> 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
quelle
1
Vielen Dank für die Antwort. Dieses Modell passt nicht nur besser, sondern ist in mehrfacher Hinsicht sinnvoller.
Don Dresser LatentView