Valores ajustados del modelo ARMA

11

Estoy tratando de entender cómo se calculan los valores ajustados para los modelos ARMA (p, q). Ya he encontrado una pregunta aquí con respecto a los valores ajustados de los procesos ARMA, pero no he podido darle sentido.

Si tengo un modelo ARMA (1,1), es decir

Xt=α1Xt1+ϵtβ1ϵt1

y me dan una serie temporal (estacionaria) puedo estimar los parámetros. ¿Cómo calcularía los valores ajustados usando esas estimaciones? Para un modelo AR (1) los valores ajustados están dados por

Xt^=α1^Xt1.

Dado que las innovaciones en un modelo ARMA son inobservables, ¿cómo usaría la estimación del parámetro MA? ¿Ignoraría la parte MA y calcularía los valores ajustados de la parte AR?

usuario2249626
fuente

Respuestas:

10

etarmaXt^=XtetXtarima(.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=XtArXt1Maet1ArMa

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]
}

etXt^=Xtetet

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

e1=0arimaet
Ahora para el modelo Ar (1). Ajusté el modelo (sin media) y le muestro directamente cómo calcular los valores ajustados utilizando los coeficientes. Esta vez no calculé los residuos. Tenga en cuenta que reporté los primeros 10 valores ajustados eliminando el primero (ya que nuevamente sería diferente dependiendo de cómo lo defina). Como puede ver, son completamente iguales.

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
fuente
En el archivo de ayuda arimadicen: "(...) las innovaciones y su varianza encontradas por un filtro de Kalman". Entonces, la función aparentemente de alguna manera usa el filtro de Kalman para los valores iniciales.
DatamineR