Frage

Ich habe eine stationäre Zeitreihe, auf die ich ein lineares Modell mit einem autoregressiven Begriff korrekt für die serielle Korrelation angepasst werden soll, das heißt mit der Formel At = c1 * Bt + c2 * Ct + ut, wo ut = r * ut -1 + et

(ut ist ein AR (1) Laufzeit, um eine korrekten für serielle Korrelation in der Fehlerterme)

Wer weiß, was in R zu verwenden, um dies zu modellieren?

Danke Karl

War es hilfreich?

Lösung

Das GLMMarp Paket wird diese Modelle passen. Wenn Sie nur ein lineares Modell mit Gauß-Fehler wollen, können Sie es mit der arima() Funktion tun, wo die Kovariaten über das xreg Argument angegeben werden.

Andere Tipps

Es gibt mehrere Möglichkeiten, dies in R. zu tun Hier sind zwei Beispiele mit der "Anschnallgurte" Zeitreihen-Datensatz in dem Datensätze Paket, das mit R kommt.

Die arima() Funktion kommt im Paket: Statistiken, die mit R. Der Funktion enthalten ist ein Argument der Form order=c(p, d, q), wo Sie die Reihenfolge der autoregressiven angeben kann, integriert, und die gleitenden Durchschnitt Komponente. In Ihrer Frage, schlagen Sie vor, dass Sie ein AR (1) -Modell zu korrigieren Autokorrelation erster Ordnung in den Fehler erstellen wollen, und das ist es. Wir können das tun mit dem folgenden Befehl:

arima(Seatbelts[,"drivers"], order=c(1,0,0),
      xreg=Seatbelts[,c("kms", "PetrolPrice", "law")])

Der Wert für den Auftrag gibt an, dass wir einen AR (1) -Modell sollen. Die XREG compontent sollte eine Reihe von anderen Xs sein, die wir im Rahmen einer Regressions hinzufügen möchten. Die Ausgabe sieht ein wenig wie die Ausgabe von summary.lm() auf der Seite gedreht.

Ein weiteres alternatives Verfahren könnte besser vertraut sein, wie Sie fit Regressionsmodelle haben ist gls() in dem nlme Paket . Der folgende Code schaltet das Seatbelt Zeitreihen-Objekt in einen Datenrahmen und dann extrahiert und fügt eine neue Spalte ( t ), die nur ein Zähler in dem sortierten Zeitreihenobjekt:

Seatbelts.df <- data.frame(Seatbelts)
Seatbelts.df$t <- 1:(dim(Seatbelts.df)[1])

Die beiden obigen Zeilen werden immer nur die Daten in Form. Da die arima() Funktion für Zeitreihen ausgelegt ist, kann es Zeitreihen-Objekte leichter lesen. Passend für das Modell mit nlme würden Sie dann ausführen:

library(nlme)
m <- gls(drivers ~ kms + PetrolPrice + law,
         data=Seatbelts.df,
         correlation=corARMA(p=1, q=0, form=~t))
summary(m)

Die Zeile, die mit „Korrelation“ beginnt, ist die Art, wie Sie in der ARMA Korrelationsstruktur an GLS übergeben. Die Ergebnisse werden nicht exakt gleich sein, weil arima() Anwendungen Maximum-Likelihood-Modelle und gls() als Standard verwendet Maximum-Likelihood beschränkt abzuschätzen. Wenn Sie method="ML" zum Anruf hinzufügen, um gls() werden Sie gleich Schätzungen erhalten Sie mit der ARIMA Funktion bekam oben.

Was ist Ihr Link-Funktion?

Die Art und Weise Sie es beschreiben, klingt wie eine grundlegende lineare Regression mit Autokorrelation Fehler. In diesem Fall ist eine Option zur Verwendung lm eine konsistente Schätzung der Koeffizienten und die Nutzung zu bekommen Newey-West-HAC Standardfehler .

Ich bin mir nicht sicher, dass die beste Antwort für GLM allgemeine.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top