格兰杰因果检验
预测一个变量可以利用它自身的历史数据,也可以利用其他变量的历史数据,这是构建VAR模型的动因。估计完一个VAR模型后,一个自然的问题是,其他变量是否真包含了有助于改进目标变量预测精度的信息?要回答这一问题,我们可以使用格兰杰因果(Granger causality)检验。
格兰杰因果检验
仍以由dlcs和dlinc构建的VAR(2)模型为例:$$ x_t = dlcs_t, z_t = dlinc_t,$$ $$ \begin{bmatrix}x_{t} \\ z_{t} \ \end{bmatrix} = \begin{bmatrix}c_{1} \\ c_{2} \ \end{bmatrix} + \sum_{i=1}^2 \begin{bmatrix}A_{i11} & A_{i12}\\ A_{i21} & A_{i22} \ \end{bmatrix} \begin{bmatrix}x_{t-i} \\ z_{t-i} \ \end{bmatrix} + \begin{bmatrix}u_{1t} \\ u_{2t} \\ \end{bmatrix} \tag{1}$$ 在模型中,如果\(A_{112}\)和\(A_{212}\)不同时为零,则dlinc的滞后项会进入以dlcs为因变量的方程。在这种情况下,相对基于dlcs的AR(2)模型的预测,我们可以说dlinc的滞后项含有改进预测dlcs的信息,此时,我们称dlinc是dlcs的格兰杰原因。同理,如果\(A_{121}\)和\(A_{221}\)不同时为零,我们称dlcs是dlinc的格兰杰原因。格兰杰因果检验实际上就是检验$$A_{112}=A_{212}=0$$ 或 $$A_{121}=A_{221}=0$$ 在一个VAR模型中,要检验一个变量\(x\)是否是另一个变量\(z\)的格兰杰原因,事实上就是对以\(z\)为因变量的方程检验所有\(x\)的滞后项的系数全为0。
如上所述,格兰杰因果并不是通常意义下我们理解的原因和结果,而是一种与预测改进相关的概念,在实际应用中,这个概念经常被误解。
在EViews中,进行格兰杰因果检验可以在估计完模型后,选var对象窗口左上角的View/Lag Structure/Granger Causality/Block Exogeneity Tests,或利用testexog命令:
var_a.testexog
代码执行的结果如下:

表中的Dependent variable标明了实施格兰杰因果检验的方程,例如,Dependent variable: DLCS表示检验是针对因变量为dlcs的方程实施的。Excluded下的DLINC对应检验dlinc的滞后项系数全为0,即检验dlinc不是dlcs的格兰杰原因。Excluded下的ALL对应检验除因变量外,方程中所有其他变量的滞后项系数全为0。由于当前的VAR模型只含两个变量,所以,DLINC和ALL对应的检验结果是相同的。Chi-sq一列报告了检验统计量的值。检验统计量渐近服从卡方分布,df一列报告了对应的自由度。Prob.一列报告了检验的p值。表中的结果显示,dlinc不是dlcs的格兰杰原因,但dlcs是dlinc的格兰杰原因。
滞后排除检验
对VAR模型,另一个常用的检验是滞后排除(lag exclusion)检验,即检验某阶滞后项的系数是否全为0。例如,对模型\((1)\),检验\(A_{111}=A_{112}=0\)就是因变量为dlcs的方程的一阶滞后排除检验;检验\(A_{221}=A_{222}=0\)就是因变量为dlinc的方程的二阶滞后排除检验;检验\(A_1=0\)就是整个模型的一阶滞后排除检验。
实施滞后排除检验,可以在估计完模型后选var对象窗口左上角的View/Lag Structure/Granger Causality/Lag Exclusion Tests,或利用testlags命令:
var_a.testlags
代码执行的结果如下:

表中的DLCS和DLINC两列是两个单方程的滞后排除检验结果,Joint一列是整个模型的滞后排除检验结果。Lag 1和Lag 2分别对应一、二阶滞后排除检验。方括号上的数是检验统计量的值,方括号里的数是对应的p值。Joint检验也可以用来确定VAR(p)模型的滞后阶数p。
带约束的模型
利用格兰杰因果检验或滞后排除检验,我们可能会发现VAR模型中的某些系数是不显著的,因此,可以考虑把相应的滞后项从模型中拿掉,这相当于把系数约束为0。有些时候,我们也可以根据经济或金融理论对系数施加约束。对VAR模型的系数进行约束可以减少模型中未知参数的个数,如果约束施加得当,模型的估计偏差会减轻,预测精度会提升。
估计带约束的VAR模型,我们可以在估计VAR模型的窗口选VAR Restricitons,界面如下图所示:

左侧的Lags指对应的系数矩阵,C指截距。右侧的Manual下,我们可以手动对系数进行约束,例如,要把某系数设为0,只需找到对应系数矩阵中的对应元素,然后将NA改为0(NA表示不对系数做约束)。约束设好后,点确定就能估计了。对带约束的情形,EViews会使用更有效的GLS估计模型。
利用代码估计带约束的模型要复杂一些,请看下面的例子。对模型\((1)\),格兰杰因果检验已经发现dlinc不是dlcs的格兰杰原因,因此,可以考虑设\(A_{112}=A_{212}=0\),这可以通过如下代码实现:
var_a.ls 1 2 dlcs dlinc @restrict @l1(1,2) = 0, @l2(1,2)=0
代码中,@restrict声明实施约束,后面的@l1(1,2)=0表示将一阶滞后项的系数矩阵的(1,2)元素设为0,@l2(1,2)=0同理。代码执行的结果如下:

如表所示,在以dlcs为因变量的方程中,dlinc的滞后项的系数都被约束为0了。
预测
VAR模型设定好估计完后,就可以实施预测了,动态预测仍用forecast命令,静态预测仍用fit命令。利用VAR模型会同时预测多个变量,所以报告的结果会比应用ARMA或ARIMA模型的情形稍微复杂一点。由于基于VAR模型的预测本质上和基于AR模型的预测没什么区别,因此,我就不赘述了,你可以点var对象窗口上的Forecast自行探索一下。
命令复习
.testexog:实施格兰杰因果检验.testlags:实施滞后排除检验.forecast:基于VAR模型实施动态预测.fit:基于VAR模型实施静态预测
[注] ( . )命令表示命令可单独使用,也可跟在对象后使用;.命令表示命令只能跟在对象后使用。
练习
- 重复上面的操作并利用建立的VAR模型预测1997Q1的dlcs和dlinc。
- 版权声明:本作品使用知识共享(Creative Commons)的署名-非商业性使用-禁止演绎 4.0 国际许可协议。非商业转载请注明出处(作者及原文链接),商业转载请联系作者获得授权。

给站长留言