一.步骤

 1.序列平稳性检验

2.确定滞后阶数

3.模型平稳性检验

4.格兰杰因果关系检验

上述检验都通过后再进行以下步骤

5.脉冲响应分析

6.方差分解

二.各步骤的具体解释

1.序列平稳性检验

主要两种方法:单位根检验,看ACF、PACF图的截尾拖尾情况

ACF PACF 模型
截尾 拖尾 MA
拖尾 截尾 AR
拖尾 拖尾 ARMA

像cosθ或者sinθ这种既没有截尾也没有拖尾的函数图像,就是不平稳序列;需要经过差分或者去除趋势等步骤变为平稳时间序列再进行下一步。

2.确定滞后阶数(定阶)

定阶准则:

(1)信息准则:大多数选择 (看表格中哪阶*多,就选哪阶)

(2)向下检验法

(3)残差序列白噪声检验:

检验是否自相关,比如说原本是VAR(p)模型,我们错误的设定为VAR(p-1)模型,模型中缺少的一项βY_t-p会被纳入VAR(P-1)的残差项中,使得残差序列和变量相关,违反模型假设。

3.模型平稳性检验(注意与序列平稳性检验的区别)

看特征方程的特征根是否在单位圆内

(在这一步还可能接着进行“预测+预测检验”步骤,如果预测和实际不准,需要解释不准原因。具体看后面实际操作)

4.格兰杰因果关系检验

一定得满足平稳或者协整关系才能进行这一步

格兰杰因果关系实际描述的不是因果关系,而是一个变量的滞后项(x_t-1)对另一变量(y_t)是否具有预测作用

5.脉冲响应分析

解释:Yt序列在受到一个单位随机扰动因素的冲击后的动态变化路径。

我们建立的模型和变量顺序有关,变量顺序不同会导致建立的模型千差万别,而脉冲响应分析就是用来确定变量排序关系的。

主要方法:简单的脉冲响应分析、正交的脉冲响应分析、广义的脉冲响应分析……

在此主要介绍正交的脉冲响应分析:

①观察交叉相关图或者交叉相关系数

注意交叉相关系数的计算公式是:

k值可大于0也可以小于0,我们只需要观察操作结果中使得ρ值最大的k值

如果k*>0,说明是y→x (y变量在x变量的左侧)

如果k*<0,说明是x→y (x变量在y变量的右侧)

如果不好判断ρ最大时k值是大于0还是小于0,就直接看交叉相关系数表格。

②在变量个数不多的情况下,用stata都跑一次,选择最优的。

例如只有三个变量,只要跑3×2=6次即可。

6.方差分解

方差分解提供了关于每个扰动因素影响VAR模型内各个变量的相对程度。


三.具体案例分析

案例一:

步骤一:序列平稳性检验

help q_time //用stata自带的时间序列数据,选择"lutkepohl2,dta"
tsset qtr //设定时间变量,用stata自带的时间序列数据可不要这步
tsline inv inc consump //画出三个变量的时序图

如图所示,很明显不是平稳的时间序列(有增加趋势)

 将三个变量取对数差分后,再画出时序图,如图所示:(此时经济变量意义改变)

 这个时候可能是平稳的时间序列了,对它进行平稳性检验:(用的单位根检验)

dfuller dln_inv
dfuller dln_inc
dfuller dln_consump

 看Z统计量,很明显都拒绝原假设,所以取对数并且差分后,数据是平稳的。

画出新的时序图,并且在x=80(1979q4)的时候,画出一条垂直线。(这个80的地方可以自己任意取,主要把数据分成两个节点,前面一部分作为样本内,进行建模分析,后面一部分用来进行“样本外预测”)

tsline dln_inv dln_inc dln_consump,xline(80)

sum dln_inv dln_inc dln_consump if _n<=80 //得出1979q4之前的统计指标
sum dln_inv dln_inc dln_consump if _n>80 //得出1979q4之后的统计指标

 由统计指标可以看出,无论是样本内还是样本外,dln_consump的波动率大体相同。


步骤二:确定滞后阶数(根据信息准则)

(1)确定滞后阶数

varsoc dln_inv dln_inc dln_consump if _n<=80,maxlag(13) //计算不同滞后期的信息准则,这里设定最大滞后期为13期

 由图可知,0阶和4阶都取得了两个*,本例选择滞后4阶。

(2)确定阶数后,估计VAR,再进行残差序列的白噪声检验:

var dln_inv dln_inc dln_consump if _n<=80,lags(1/4)

 

 

 可以看到,只是滞后了4阶,就包含了39个参数;这些系数较多,其经济含义解释相对困难。因而,在实证论文中,很多时候不汇报VAR的回归系数,主要汇报脉冲响应函数,预测方差分解与格兰杰因果检验。在上述命令var中,由于样本容量为75,故未使用选择项“dfk"、"small"进行小样本自由度调整。

如果是小样本的话,用

var x y z,lags(1/#) dfk small exog(w1 w2)

选择项“dfk"进行自由度调整。选择项"small"表示显示小样本的t或F统计量,而非大样本的标准正态或统计量。选择项"exog(w1 w2)"表示在VAR模型中引入外生变量w1,w2。

(3)接下来,对各阶系数的联合显著性进行检验:

varwle

 虽然单一方程的某些阶数不显著,但作为三个方程的整体(看最后一个表),1阶、2阶、4阶系数高度显著。(我们老师用的是“varexample.dta”做例子,最后一个表显示的各阶系数均高度显著。我这里第三阶不显著,查了一些资料,有人说VAR模型的特点之一是对模型参数不施加零约束, 即对参数无显著性的变量不从模型中剔除,不分析回归参数的经济意义,更多的是看脉冲图。因为这里是操作举例,我就继续做下去了,大家要写论文的话,还是多找找论文看别人这一步要是有一阶系数不显著怎么办)

(4)检验残差是否为白噪声,即残差序列是否存在自相关

varlmar

 结果表明,可以接受残差“无自相关”的原假设,即认为扰动项为白噪声。


步骤三:VAR系统平稳性检验

varstable,graph

 结果显示,所有特征根均在单位圆内,因此VAR系统是稳定的。(单位根越接近单位圆,表明对应的冲击具有较强的持续性)

VAR模型的用途之一是预测。下面预测未来15个季度的变量取值。(如果不想预测,不要这步也可以)

fcast compute p_,step(15) //"p_"是变量的前缀,可以自己任意定义
fcast graph p_dln_inv p_dln_inc p_dln_consump,observed lpattern("_")
*选择项"observed"表示显示变量的实际观测值,选择项"lpattern("_")"表示以虚线来表示变量的预测值(以区别与实际观测值)

 结果表明,预测值几乎都在95%的置信区间内,预测效果还可以。(老师预测的情况是2008年前预测效果尚可,2008年之后预测精度大大下降,表明VAR模型无法预测经济危机的到来,并且预测时期越长,预测精度越低。)

如果我们预测情况和实际不符,就应该查查开始不准的那个时期发生了什么金融事件或其他事情,进行解释。

如果预测不准,我们可以通过检验VAR模型的残差是否服从正态分布进行解释

varnorm //估计VAR后,检验残差是否服从正态分布

 结果表明,一半的检验结果可在5%的显著性水平上拒绝这三个变量扰动项服从正态分布的原假设,一半的检验结果不可以拒绝。预测越不准,拒绝的结果会越多,不过,我们最主要看的其实还是JB检验。尽管扰动项不服从正态分布对VAR模型的影响不大,但残差项的非正态性暗示模型可能偏离了真实的数据生成过程,且使得对变量未来值的预测区间变得不可信(该预测区间依赖于正态假设)。


步骤四:格兰杰因果关系检验

除了预测外,我们还想知道某个变量的冲击会对该变量或其他变量产生怎样的动态影响,比如提高变量A一个单位会对一年后的变量B产生多大的影响,这就需要用到正交化的脉冲响应函数,但正交化的脉冲响应函数依赖于变量的排序。(上文的预测不依赖于变量排序)。为此,分别考察变量之间的格兰杰因果关系与交叉相关图。

首先,考察这三个变量之间的格兰杰因果关系:

vargranger

 格兰杰因果关系检验:是一种假设检定的方法,检验一组时间序列x是否为另一种时间序列的原因(时间序列A是否对时间序列B有预测作用)

该表上部表明,在以dln_inv为被解释变量的方程中,如果检验变量dln_inc系数的联合显著性,该卡方统计量为0.95133,相应的p值为0.917,故认为dln_inc不是dln_inv的格兰杰原因;类似地,如果检验变量dln_consump系数的联合显著性,该卡方统计量为3.2532,相应的p值为0.516,故认为dln_consump不是dln_inv的格兰杰原因;如果同时检验变量dln_inc,dln_consump系数的联合显著性,其卡方统计量为6.2619,p值为0.618,不能拒绝“dln_inc,dln_consump都不是dln_inv的格兰杰原因”的原假设。

看完整个表,发现好像只有dln_inc是dln_consump的格兰杰因果关系,并且还不是互为因果关系,说明我这里格兰杰因果关系没通过,建立的模型是有问题的。差分导致一些检验效果不太明显,在人大经济论坛看到一些前辈讨论说本来不平稳的数据处理直至平稳,然后必须做协整,这个时候格兰杰检验就可以做可不做了。

来源:9997PZ

物联沃分享整理
物联沃-IOTWORD物联网 » VAR模型Stata实例操作

发表评论