Angepasste Werte des ARMA-Modells

11

Ich versuche zu verstehen, wie angepasste Werte für ARMA (p, q) -Modelle berechnet werden. Ich habe hier bereits eine Frage zu angepassten Werten von ARMA-Prozessen gefunden, konnte diese jedoch nicht verstehen.

Wenn ich ein ARMA (1,1) -Modell habe, dh

X.t=α1X.t- -1+ϵt- -β1ϵt- -1

und bekomme eine (stationäre) Zeitreihe Ich kann die Parameter abschätzen. Wie würde ich die angepassten Werte anhand dieser Schätzungen berechnen? Für ein AR (1) -Modell sind die angepassten Werte gegeben durch

X.t^=α1^X.t- -1.

Wie würde ich die Schätzung des MA-Parameters verwenden, da die Innovationen in einem ARMA-Modell nicht beobachtbar sind? Würde ich den MA-Teil einfach ignorieren und die angepassten Werte des AR-Teils berechnen?

user2249626
quelle

Antworten:

10

etarmaX.t^=X.t- -etX.tarima(.5,.6)arma

library(forecast)
n=1000
ts_AR <- arima.sim(n = n, list(ar = 0.5,ma=0.6))
f=arima(ts_AR,order=c(1,0,1),include.mean=FALSE)
summary(f)
    Series: ts_AR 
    ARIMA(1,0,1) with zero mean     

    Coefficients:
             ar1     ma1
          0.4879  0.5595
    s.e.  0.0335  0.0317

    sigma^2 estimated as 1.014:  log likelihood=-1426.7
    AIC=2859.4   AICc=2859.42   BIC=2874.12

    Training set error measures:
                         ME    RMSE       MAE      MPE     MAPE      MASE
    Training set 0.02102758 1.00722 0.8057205 40.05802 160.1078 0.6313145

e1=0t=2,...,net=X.t- -EINrX.t- -1- -M.einet- -1EINrM.ein der geschätzte autoregressive und gleitende Durchschnittsteil im oben angepassten Modell sind. Hier ist der Code:

e = rep(1,n)
e[1] = 0 ##since there is no residual at 1, e1 = 0
for (t in (2 : n)){
  e[t] = ts_AR[t]-coef(f)[1]*ts_AR[t-1]-coef(f)[2]*e[t-1]
}

Sobald Sie die Residuen gefunden haben etsind die angepassten Werte gerade X.t^=X.t- -et. Im Folgenden habe ich die ersten 10 angepassten Werte aus R mit denen verglichen, aus denen ich berechnen kannet Ich habe oben erstellt (dh manuell).

cbind(fitted.from.package=fitted(f)[1:10],fitted.calculated.manually=ts_AR[1:10]-e[1:10])
      fitted.from.package fitted.calculated.manually
 [1,]          -0.4193068                 -1.1653515
 [2,]          -0.8395447                 -0.5685977
 [3,]          -0.4386956                 -0.6051324
 [4,]           0.3594109                  0.4403898
 [5,]           2.9358336                  2.9013738
 [6,]           1.3489537                  1.3682191
 [7,]           0.5329436                  0.5219576
 [8,]           1.0221220                  1.0283511
 [9,]           0.6083310                  0.6048668
[10,]          -0.5371484                 -0.5352324

Wie Sie sehen, gibt es nahe, aber nicht genau das gleiche. Der Grund ist, dass ich beim Erstellen der Residuen festgelegt habee1=0. Es gibt jedoch auch andere Möglichkeiten. Zum Beispiel basierend auf der Hilfedatei zu arima, den Residuen und ihrer Varianz, die von einem Kalman-Filter gefunden wurden, und daher ihrer Berechnung vonetwird etwas anders sein als ich. Aber im Laufe der Zeit konvergieren sie.
Nun zum Ar (1) -Modell. Ich habe das Modell angepasst (ohne Mittelwert) und Ihnen direkt gezeigt, wie Sie die angepassten Werte anhand der Koeffizienten berechnen. Diesmal habe ich die Residuen nicht berechnet. Beachten Sie, dass ich die ersten 10 angepassten Werte gemeldet habe, um den ersten zu entfernen (da dies wiederum unterschiedlich sein würde, je nachdem, wie Sie es definieren). Wie Sie sehen können, sind sie völlig gleich.

f=arima(ts_AR,order=c(1,0,0),include.mean=FALSE)
cbind(fitted.from.package=fitted(f)[2:10],fitted.calculated.manually=coef(f)*ts_AR[1:9])
      fitted.from.package fitted.calculated.manually
 [1,]          -0.8356307                 -0.8356307
 [2,]          -0.6320580                 -0.6320580
 [3,]           0.0696877                  0.0696877
 [4,]           2.1549019                  2.1549019
 [5,]           2.0480074                  2.0480074
 [6,]           0.8814094                  0.8814094
 [7,]           0.9039184                  0.9039184
 [8,]           0.8079823                  0.8079823
 [9,]          -0.1347165                 -0.1347165
Stat
quelle
In der Hilfedatei arimaheißt es: "(...) die Innovationen und ihre Varianz, die ein Kalman-Filter gefunden hat." Die Funktion verwendet also anscheinend irgendwie den Kalman-Filter für die Anfangswerte.
DatamineR