etarma
X.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- A r ∗ X.t - 1- M.a ∗ et - 1A r M.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
arima
heiß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.