Arimax-Vorhersage: Verwenden des Prognosepakets

8

Die arimaxFunktion im TSAPaket ist meines Wissens das einzige RPaket, das für eine Übertragungsfunktion für Interventionsmodelle geeignet ist. Es fehlt jedoch eine Vorhersagefunktion, die manchmal benötigt wird.

Ist das Folgende eine Problemumgehung für dieses Problem, bei der das hervorragende forecastPaket genutzt wird? Werden die Vorhersageintervalle korrekt sein? In meinem Beispiel sind die Standardfehler für die Komponenten "nah".

  1. Verwenden Sie die Arima-Funktion des Prognosepakets, um die Geräuschreihen vor dem Eingriff zu bestimmen und Ausreißeranpassungen hinzuzufügen.
  2. Passen Sie das gleiche Modell an arimax, fügen Sie jedoch die Übertragungsfunktion hinzu
  3. Nehmen Sie die angepassten Werte für die Übertragungsfunktion (Koeffizienten von arimax) und addieren Sie sie als xreg in arima.
  4. Prognose mit arima
library(TSA)
library(forecast)
data(airmiles)
air.m1<-arimax(log(airmiles),order=c(0,0,1),
              xtransf=data.frame(I911=1*(seq(airmiles)==69)),
              transfer=list(c(1,0))
              )

air.m1

Ausgabe:

Coefficients:
  ma1  intercept  I911-AR1  I911-MA0
0.5197    17.5172    0.5521   -0.4937
s.e.  0.0798     0.0165    0.2273    0.1103

sigma^2 estimated as 0.01223:  log likelihood=88.33
AIC=-168.65   AICc=-168.09   BIC=-155.02

Dies ist der Filter, der um weitere 5 Zeiträume erweitert wurde als die Daten

tf<-filter(1*(seq(1:(length(airmiles)+5))==69),filter=0.5521330,method='recursive',side=1)*(-0.4936508)
forecast.arima<-Arima(log(airmiles),order=c(0,0,1),xreg=tf[1:(length(tf)-5)])
forecast.arima

Ausgabe:

Coefficients:
         ma1  intercept  tf[1:(length(tf) - 5)]
      0.5197    17.5173                  1.0000
s.e.  0.0792     0.0159                  0.2183

sigma^2 estimated as 0.01223:  log likelihood=88.33
AIC=-168.65   AICc=-168.28   BIC=-157.74

Dann vorauszusagen

predict(forecast.arima,n.ahead = 5, newxreg=tf[114:length(tf)])
B_Miner
quelle
1
+1, sehr klug Ich sehe nichts falsch an der Herangehensweise, se sieht gut aus, ich bin nicht sicher, welche se Sie meinen?
Prognostiker
1
Ah Prognostiker! Ich habe dich vermisst! :) Ich meinte die SE des MA und das Abfangen zwischen den beiden Passungen. Die Restvarianz ist identisch. Ich denke, dass die Restvarianz alles ist, was für den Vorhersagefehler der Vorhersage aus einem ARIMA-Modell wichtig ist (obwohl ich verrostet bin).
B_Miner
Jetzt verstehe ich, ich wäre überrascht, wenn das se nicht nah ist, nah ist gut, Sigma ^ 2 wird für Vorhersageintervalle verwendet, es gibt keinen Unterschied zwischen zwei Modellen, so dass die Vorhersageintervalle für Arimax oder Arima, glaube ich, gleich sind.
Prognostiker
Die Art, wie du definierst tf <- filter(...)... Ich bin verloren. Hast du irgendwelche Tipps, um es zu verstehen? Was würde passieren , wenn ich hatte: I911-AR1: 0.55, I911-AR2: 0.66, I911-MA0: 0.49, I911-MA1: 0.39?
Konstantinos
1
Netzstolper, für die Filterung fand ich hier einen ziemlichen Einblick: onlinecourses.science.psu.edu/stat510/node/75
Konstantinos

Antworten:

8

Vorhersageintervalle basieren auf der Restvarianz, die durch die Optimierung der maximalen Wahrscheinlichkeit geschätzt wird.

Ich mag forecastFunktion aus dem forecastPaket:

fc <- forecast(forecast.arima,h = 5, xreg=tf[114:length(tf)])

das gibt mir die folgenden Vorhersagen:

  Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
Jun 2005       17.61393 17.47222 17.75565 17.39720 17.83067
Jul 2005       17.51725 17.35753 17.67697 17.27299 17.76152
Aug 2005       17.51725 17.35753 17.67697 17.27299 17.76152
Sep 2005       17.51725 17.35753 17.67697 17.27299 17.76152
Oct 2005       17.51725 17.35753 17.67697 17.27299 17.76152

Das Vorhersageintervall funktioniert wie folgt:

z σyt±zσ wobei ein Multiplikator ist, der Werte wie 1,96 für das 95% -Vorhersageintervall und 1,28 für das 80% annimmt. ist die Standardabweichung der verbleibenden auch prognostizierten Verteilung, die auch die Quadratwurzel von Sigma ^ ist 2 in der Maximum-Likelihood-Schätzung. Da Sie zeigen, dass Sigma ^ 2 (0.01223) in beiden Modellen identisch ist, sind auch die Vorhersageintervalle gleich und stimmen überein.zσ

Wenn Sie es überprüfen möchten,

Obergrenzen:

> fc$mean[1]+sqrt(forecast.arima$sigma2)*1.96
[1] 17.83068

Untergrenzen:

> fc$mean[1]-sqrt(forecast.arima$sigma2)*1.96
[1] 17.39719

Dies entspricht dem von der forecastFunktion bereitgestellten Vorhersageintervall . Um Ihre Frage zu beantworten, forecastfunktioniert in diesem Fall das Hebelpaket "Ja" und die Vorhersageintervalle sind korrekt.

Prognostiker
quelle