как использовать stats :: filter в R, чтобы создать инновационный выброс - PullRequest
0 голосов
/ 05 марта 2020

У меня есть какая-то случайная модель, которая потенциально имеет инновационный выброс, подходящий для ARIMAX:

Call:
arimax(x = Y, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = freq), 
    method = "ML", io = list(io1 = IO[[1]]), xtransf = xTrf, transfer = TRF)

Coefficients:
          ma1  IO.IO[[1]]  AO-32-MA0
      -0.0922     35.1081   -35.5007
s.e.   0.1832      6.8642     4.2032

sigma^2 estimated as 46.5:  log likelihood = -123.54,  aic = 253.07

для аддитивного выброса, я могу создать регрессор, например:

stats::filter(int_var, filter = 0, method = "rec", sides = 1) * coef(mdl$mdl)["AO-32-MA0"]

Это выводит:

Time Series:
Start = 1 
End = 50 
Frequency = 1 
 [1]   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000
[11]   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000
[21]   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000
[31]   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000
[41]   0.00000   0.00000 -35.50073   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000

Это с int_var, являющимся вектором нулей с 1 в положении 43.

Если, с другой стороны, я хочу соответствовать переходному изменению , Я бы написал:

stats::filter(int_var, filter = <AR coefficient>, method = "rec", sides = 1) * <MA coefficient>

Как можно создать инновационный выброс с этой функцией?

...