12 votos

Valores ajustados del modelo ARMA

Estoy tratando de entender cómo ajustar los valores son calculados para ARMA(p,q) de los modelos. Ya he encontrado una pregunta aquí en relación a los valores ajustados de ARMA procesos, pero no he sido capaz de hacer sentido de ella.

Si tengo un ARMA(1,1) modelo, yo. e.

$$X_t = \alpha_1X_{t-1}+\epsilon_t - \beta_1 \epsilon_{t-1}$$

y estoy dada de un (estacionario) de la serie de tiempo puedo estimar los parámetros. ¿Cómo puedo calcular los valores ajustados usando esas estimaciones. Para un AR(1) modelo de los valores ajustados son dadas por

$$\hat{X_t} = \hat{\alpha_1}X_{t-1} . $$

Desde las innovaciones en un ARMA modelo son observables cómo debo utilizar la estimación de la MA parámetro? Acabo de ignorar la MA parte y calcular los valores ajustados de la AR parte?

Gracias!

11voto

Stat Puntos 4224

Para responder a sus preguntas, que, básicamente, se necesita saber cómo los residuos decir $e_t$ se calculan en un arma modelo. Porque, a continuación,$\hat{X_{t}}=X_{t}-e_{t}$. Primero vamos a generar una falsificación de datos ($X_t$) de arima(.5,.6) y ajuste el arma modelo (sin media):

> library(stats)
> 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

Ahora creo que los residuos de la siguiente manera: $e_1=0$ (ya que no hay ningún residuo en 1) y para $t=2,...,n$ tenemos: $e_t=X_t-Ar*X_{t-1}-Ma*e_{t-1}$ donde $Ar$ $Ma$ el estimado de auto-regresivo y de media móvil parte en el anterior modelo ajustado. Aquí está el código:

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

Una vez que usted encuentre los residuos $e_{t}$, los valores ajustados son sólo $\hat{X_{t}}=X_{t}-e_{t}$. Así que en la siguiente, he comparado los primeros 10 valores ajustados obtenidos a partir de R y con los que se puede calcular a partir de $e_{t}$ I creado anteriormente (es decir, manualmente).

> 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

Como se puede ver hay cerca, pero no exactamente la misma. La razón es que cuando creé los residuos fijé $e_{1}=0$. Hay otras opciones, aunque. Por ejemplo, basado en el archivo de ayuda a arima, los residuos y su varianza encontrada por un filtro de Kalman y por lo tanto su cálculo de $e_t$ será ligeramente diferente de mí. Pero a medida que pasa el tiempo son convergentes.
Ahora para la Ar(1) del modelo. He ajustado el modelo (sin media) y directamente mostrará cómo calcular los valores ajustados utilizando los coeficientes. Esta vez no me calcular los residuos. Nota que informó de los primeros 10 valores ajustados extracción de la primera (como la otra vez iba a ser diferente dependiendo de cómo se defina). Como se puede ver, están completamente el mismo.

> 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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X