Als Finanzinstitut stoßen wir häufig auf die Analyse von Zeitreihendaten. Oft führen wir Regressionen mithilfe von Zeitreihenvariablen durch. Dabei stoßen wir häufig auf Residuen mit Zeitreihenstruktur, die gegen die Grundannahme unabhängiger Fehler in der OLS-Regression verstoßen. Kürzlich bauen wir ein weiteres Modell, in dem wir meiner Meinung nach eine Regression mit autokorrelierten Fehlern haben. Die Residuen des linearen Modells haben lm(object)
eindeutig eine AR (1) -Struktur, wie aus ACF und PACF hervorgeht. Ich habe zwei verschiedene Ansätze gewählt, der erste bestand offensichtlich darin, das Modell unter Verwendung der verallgemeinerten kleinsten Quadrate gls()
in R anzupassen. Meine Erwartung war, dass die Residuen von gls (Objekt) ein weißes Rauschen sein würden (unabhängige Fehler). Aber die Residuen vongls(object)
haben immer noch die gleiche ARIMA-Struktur wie bei der gewöhnlichen Regression. Leider stimmt etwas nicht, was ich nicht herausfinden konnte. Daher habe ich beschlossen, die Regressionskoeffizienten aus dem linearen Modell (OLS-Schätzungen) manuell anzupassen. Überraschenderweise scheint das zu funktionieren, wenn ich die Residuen aus der angepassten Regression gezeichnet habe (die Residuen sind weißes Rauschen). Ich möchte es wirklich gls()
im nlme
Paket verwenden, damit die Codierung viel einfacher und einfacher wird. Was wäre der Ansatz, den ich hier verfolgen sollte? Soll ich REML verwenden? oder ist meine erwartung von nicht korrelierten residenzen (weißes rauschen) von gls () objekt falsch?
gls.bk_ai <- gls(PRNP_BK_actINV ~ PRM_BK_INV_ENDING + NPRM_BK_INV_ENDING,
correlation=corARMA(p=1), method='ML', data = fit.cap01A)
gls2.bk_ai <- update(gls.bk_ai, correlation = corARMA(p=2))
gls3.bk_ai <- update(gls.bk_ai, correlation = corARMA(p=3))
gls0.bk_ai <- update(gls.bk_ai, correlation = NULL)
anova(gls.bk_ai, gls2.bk_ai, gls3.bk_ai, gls0.bk_ai)
## looking at the AIC value, gls model with AR(1) will be the best bet
acf2(residuals(gls.bk_ai)) # residuals are not white noise
Stimmt etwas nicht mit dem, was ich mache ???????
predict.arima()
eine bessere Vorhersage liefern alspredict.gls()
.Sie möchten die normalisierten Residuen. Siehe
?residuals.lme
.quelle