Ich verstehe die Syntax nicht genau forecast()
wendet externe Regressoren in der library(forecast)
im R
.
Mein Fit sieht so aus:
fit <- auto.arima(Y,xreg=factors)
woher Y
ist ein timeSeries
Objekt 100 x 1 und Faktoren ist a timeSeries
Objekt 100 x 5.
Wenn ich zur Prognose gehe, bewerbe ich mich ...
forecast(fit, h=horizon)
Und ich bekomme einen Fehler:
Error in forecast.Arima(fit, h = horizon) : No regressors provided
Will ich, dass ich die XRegressoren aus der Anpassung zurück addiere? Ich dachte, dass diese in die aufgenommen wurden fit
Objekt als fit$xreg
. Bedeutet das, dass es nach zukünftigen Werten der X-Regressoren fragt, oder dass ich dieselben Werte wiederholen sollte, die ich in der Anpassungsmenge verwendet habe? Die Dokumentation deckt nicht die Bedeutung von xreg
im Prognoseschritt.
Ich glaube, dass all das bedeutet, dass ich verwenden sollte
forecast(fit, h=horizon,xreg=factors)
oder
forecast(fit, h=horizon,xreg=fit$xreg)
Was zu den gleichen Ergebnissen führt. Aber ich bin mir nicht sicher, ob der Prognoseschritt die Faktoren als zukünftige Werte oder angemessen als frühere Werte interpretiert.
- Führt das, wie ich es erwarte, zu einer Vorhersage aus rein vergangenen Werten?
- Warum muss ich die xreg-Werte zweimal angeben? Es läuft nicht, wenn ich sie ausschließe, also verhält es sich nicht wie eine Option.
Antworten:
13 für die Antwort № 1Korrigiere mich, wenn ich falsch liege, aber ich denke du verstehst nicht ganz, wie das ARIMA Modell mit Regressoren funktioniert.
Wenn Sie mit einem einfachen ARIMA-Modell prognostizieren(ohne Regressoren) verwendet es einfach vergangene Werte Ihrer Zeitreihe, um zukünftige Werte vorherzusagen. In einem solchen Modell könnten Sie einfach Ihren Horizont angeben, und es würde Ihnen eine Prognose bis zu diesem Horizont geben.
Wenn Sie Regressoren zum Erstellen eines ARIMA-Modells verwenden, müssen Sie diese einschließen zukünftige Werte der Regressoren Vorhersagen. Wenn Sie zum Beispiel die Temperatur als Regressor verwendet haben und die Krankheitsinzidenz vorhergesagt haben, würden Sie zukünftige Temperaturwerte benötigen, um die Krankheitsinzidenz vorherzusagen.
In der Tat, die Dokumentation tut sprich darüber xreg
speziell. Sieh nach oben ?forecast.Arima
und schauen Sie sich beide Argumente an h
und xreg
. Sie werden das sehen, wenn xreg
wird dann benutzt h
wird ignoriert. Warum? Denn wenn deine Funktion es nutzt xreg
, dann es braucht sie für die Vorhersage.
Also, in deinem Code, h
wurde einfach ignoriert, wenn Sie aufgenommen haben xreg
. Da Sie nur die Werte verwendet haben, die Sie für das Modell verwendet haben, gab es nur alle Vorhersagen für die gleiche Gruppe von Regressoren als ob sie in der Zukunft wären.