在ARIMA或VAR模型中选择特定滞后变量

7
我看到在这里这里提出了这个问题,但不幸的是答案并不令人满意。在VAR中将滞后期输入到P参数或在arima中将其输入到order参数中,R将包含所有小于等于该数值的滞后期。
然而,如果您只想要特定的滞后期呢?例如,在VAR中我只想要滞后期1、2和4怎么办?在VAR中输入P=4会给我滞后期1、2、3和4,但我想排除第三个滞后期。
在第一个链接中,用户通过声明他可以使用季节性参数来包括滞后期1、2和4,因为他的数据是季度数据,但这只适用于特殊情况,不是通用解决方案。
1个回答

11

幸运的是,我们可以轻松地为这两种模型做到这一点。例如,在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是“与参数总数相同长度的可选数字向量。如果提供,仅会改变fixed中的NA项”。有关警告等更多详细信息,请参见?arima。每个fixed元素对应于显示的系数向量(或者coef(arima(...)))中的相应元素,例如fixed[3]对应ar3fixed[7]对应intercept
类似地,来自varsrestrict适用于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] 对应于截距,第二个矩阵行也是如此。请注意保留 HTML 标签。

1
谢谢!只有一个澄清的问题,在ARIMA 'fixed'参数中,前三个值是AR估计值,接下来的三个是MA估计值,最后一个是常数?同样,在VAR 'restrict'矩阵中,两行中的最后一列也是代表常数?再次感谢。 - gtnbz2nyt
@gtnbz2nite,非常好的问题,我还没有时间完成答案,现在会更新它,不过你是正确的。 - Julius Vainora
太棒了,非常非常感激。 - gtnbz2nyt
抱歉晚了,你是否知道生成具有受限VAR系数预测的代码?我在这里提出了一个问题(http://stackoverflow.com/questions/22788870/forecasts-with-specific-var-model-lags),但似乎没有人愿意回答它。 - gtnbz2nyt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接