Выбор конкретных лагов в модели ARIMA или VAR

Заранее спасибо. Я видел этот вопрос, поднятый здесь и здесь, но, к сожалению, ответы не являются удовлетворительными. Вводя лаги в аргументе 'p' в VAR() или аргументе 'order' в arima(), R будет включать все лаги в и ниже указанного значения.

Однако что делать, если вы хотите только определенные лаги? Например, что, если я хотел, чтобы лаги 1, 2 и 4 были только в VAR? Ввод P=4 в VAR() даст мне лаги 1,2,3 и 4, но я бы хотел исключить третий лаг.

В первой ссылке пользователь предоставил ответ, заявив, что он может использовать сезонный параметр для включения лагов 1, 2 и 4, поскольку его данные являются квартальными, однако это только для особого случая и не является общим решением. Спасибо.

1 ответ

Решение

К счастью, мы можем легко сделать это для обеих моделей. Например, в случае ARIMA(3,0,3), вот как сбросить второе отставание AR и первое отставание MA:

arima(lh, order = c(3, 0, 3), fixed = c(NA, 0, NA, 0, NA, NA, NA))

Call:
arima(x = lh, order = c(3, 0, 3), fixed = c(NA, 0, NA, 0, NA, NA, NA))

Coefficients:
         ar1  ar2      ar3  ma1      ma2      ma3  intercept
      0.6687    0  -0.1749    0  -0.0922  -0.1459     2.3909
s.e.  0.1411    0   0.1784    0   0.1788   0.2415     0.0929

sigma^2 estimated as 0.1773:  log likelihood = -26.93,  aic = 65.87
Warning message:
In arima(lh, order = c(3, 0, 3), fixed = c(NA, 0, NA, 0, NA, NA,  :
  some AR parameters were fixed: setting transform.pars = FALSE

Вот fixed является "необязательным числовым вектором той же длины, что и общее количество параметров. Если указано, будут изменяться только записи NA в фиксированном виде"; увидеть ?arima для более подробной информации о предупреждении и т. д. Каждый элемент fixed соответствует соответствующему элементу из отображаемого вектора коэффициентов (или coef(arima(...))), например fixed[3] соответствует ar3 а также fixed[7] в intercept,

Так же, restrict от vars это то, что вам нужно для моделей VAR. Опять же, вы должны указать свои ограничения, на этот раз в матрице resmatНапример, давайте возьмем VAR(2) и отбросим второе отставание e и первый из prod:

data(Canada)
model <- VAR(Canada[, 1:2], p = 2, type = "const")
restrict <- matrix(c(1, 0, 0, 1, 1, 
                     1, 0, 0, 1, 1),
                   nrow = 2, ncol = 5, byrow = TRUE)
coef(restrict(model, method = "man", resmat = restrict))
$e
          Estimate Std. Error   t value     Pr(>|t|)
e.l1     0.9549881 0.01389252 68.741154 3.068870e-72
prod.l2  0.1272821 0.03118432  4.081607 1.062318e-04
const   -8.9867864 6.46303483 -1.390490 1.682850e-01

$prod
            Estimate  Std. Error   t value     Pr(>|t|)
e.l1      0.04130273  0.02983449  1.384396 1.701355e-01
prod.l2   0.94684968  0.06696899 14.138628 2.415345e-23
const   -17.02778014 13.87950374 -1.226829 2.235306e-01

Первый ряд resmat соответствует первому уравнению, и все коэффициенты идут так же, как в неограниченной модели: e.l1, prod.l1, e.l2, prod.l2, constт.е. restrict[1, 5] соответствует пересечению и то же самое верно для второй строки матрицы.

Другие вопросы по тегам