这几个月在写论文,论文中用到了面板数据,并且需要做面板向量自回归模型,同时我又是个stata小白&计量小白(有学计量这门课,只是我太菜了)。在做PVAR模型的时候就是百度(主要时经管之家)还有知乎、公众号(如计量经济服务中心)然后研究这个模型怎么做,我用的是stata16中文版的。
首先,做这个要有个PVAR的包,当时找这个包找了好几天,一个是国外love学者的PVAR
包(PVAR这个程序最初是由Inessa Love编写的),另一是国内的连玉君老师的PVAR2包。两个都可以,我时不太会用love的那个,然后用连老师的那个包感觉挺好用的。
![5283d8f2ddd5cfd2afc3d992b1bf02c4.png](https://i-blog.csdnimg.cn/blog_migrate/b6a658891fe5c3ad7682c662734525af.png)
![84c3b52388513b11ba33e5e83cfc9756.png](https://i-blog.csdnimg.cn/blog_migrate/3361678cc3f46490aab0b3fea7cdc2b6.png)
导入方式:把上面的第三个pvar放进STATA的如下位置ado——base——p文件夹下面,然后就可以用了
![81e8213e6719f8ab15076eced25f7085.png](https://i-blog.csdnimg.cn/blog_migrate/ca4b5209ab565a10e7955decf0aec144.png)
PAVR模型一共是要做以下几个步骤:
1、平稳性检验
2、协整
3、滞后阶数的选择
4、PVAR模型系数估计
5、格兰杰因果检验
6、脉冲响应分析
7、方差分解(这一部分我省略了)
PVAR模型前的准备:
第一步:导入数据
import excel C:UserscuteOneDriveexcelnewsta2015.xlsx,sheet("Sheet1")firstrow ///导入数据
stata软件是区分大小写的,所以在输入路径时,文件名中的大小写一定要注意区分,但是D盘和d盘是一样的。firstrow表示将表格中的第一行数据规定为变量名。
![5c1745187b045ab70f88c6be003f2b4d.png](https://i-blog.csdnimg.cn/blog_migrate/59822f5dfdb618ec5bee967776331efb.png)
注意数据的格式:行是变量名,最重要的一点:数据一定要整理成面板的情况再导入!而不是下面这种或者是其他的
![0bfb5eaba1dd851be621b425bad464c0.png](https://i-blog.csdnimg.cn/blog_migrate/90294f23ebc3f454cb46f2ef8eebfa72.png)
第二步:调整数据格式
在PVAR模型中,我们导入的数据前两列要分别是个体变量(如地区、国家)和时间变量(如年度、季度、月度)。但是大多时候,我们直接导入进来的数据中,这两列数据的格式不正确的,在stata中无法识别,之后的统计分析中也会出现诸多问题,所以我们要先调整数据格式。正常情况下,个体变量的数据类型应该是long,时间变量的数据类型应该是float,如下图所示,我们可以在查看数据界面右下角的Properties窗口中看到。
![8b29756538c9fa4c0155b5e54c2710a5.png](https://i-blog.csdnimg.cn/blog_migrate/a782f78d3cfb72d6579a122a895b9e18.png)
encode city, gen(id) 其中city是原来的个体变量名,id是新生成的变量名。这是对个体变量进行数据类型更改为long
gen month=mofd(time) /// month是新生成的时间变量名,time是原来数据的时间变量名。这是对时间变量的数据类型进行更改。
然后注意调整数据的位置,然后记得删除原来的数据
第三步:将数据变成面板数据(也就是让系统识别数据成为面板数据)
xtset id month ///对面板数据中的个体变量和时间变量进行设定,告诉stata该数据为面板数据。
进行完面板数据的导入后可以做一些描述性统计(虽然没有什么用,但是论文好像都都得有这个步骤)
xtdes // 显示面板数据的结
xtsum 变量名1 变量名2 变量名3 // 显示面板数据的统计特征
第四步:平稳性检验
经常使用LLC和IPS方法,但是如果两种检验结果出现冲突,再运用其他方法进行检验。
LLC检验方法可以有以下三种选择:
xtunitroot llc 变量名 , trend demean lags(bic 12) // 对变量IP进行面板单位根LLC检验,这里假设变量IP既包含线性时间趋势项又包含个体固定效应项,是条件最苛刻的一种检验
xtunitroot llc 变量名, demean lags(bic 12) // 这里假设变量IP仅含个体固定效应项
xtunitroot llc 变量名, noconstant demean lags(bic 12) // none 的情形,即假设变量IP既不包含线性时间趋势项,也不包含个体固定效应项,是条件最宽松的一种检验
IPS检验有以下两种选择:
xtunitroot ips 变量名, trend demean lags(bic 8) // 对变量IP进行面板单位根IPS检验,这里假设变量IP既包含线性时间趋势项又包含个体固定效应项,是条件最苛刻的一种检验
xtunitroot ips 变量名, demean lags(bic 8) // 这里假设变量IP仅含个体固定效应项
原假设是面板数据含有单位根(面板数据不平稳),备择假设是面板数据平稳。结果中P值越小越好
tip:如果你的面板数据是有时间序列数据,就是某一个变量是时间序列数据,需要用时间序列数据的检验方法,时间序列数据就不用面板数据的检验方法,而是用时间序列的方法,如ADF单位根检验
//单独对时间序列数据(变量M2)平稳性检验
import excel C:UserscuteOneDriveexcelnewstaM2.xlsx,sheet("Sheet1")firstrow ///导入数据,我这里是只有光秃秃的一列数据,没有时间
gen t=tm(2016m1)+_n-1 ///设置数据的开始时间
tsset t, monthly ///告诉系统这是一个时间序列数据
dfgls M2 //根据SBC和AIC原则进行选择最优的滞后阶数
dfuller M2, lag(10) //单位根检验
第五步:协整检验
在上面的平稳性检验一般原始变量是不会平稳的,一般都是要做个一阶差分或者是二阶差分才会平稳(一般二阶就差不多了)。如果各变量不同差分都是平稳的,那么可以直接进行格兰杰因果检验、确定最优滞后阶数等程序,但是如果全部或部分变量不平稳,这个时候我们就需要进行面板协整分析,来考察变量间是否存在长期均衡关系。
当所有变量都是一阶差分后平稳或者是其他阶数的平稳,也就是同阶单整。此时要做协整检验。我们要保证所有的变量序列在同一差分阶数上都是平稳的,不然会伪回归。常用的协整检验方法包括三种:Kao、Pedroni和Johansen,如果变量总个数少于或等于六个,三种方法都可以使用,如果变量总个数多于六个,Pedroni检验方法将不再适用。这里一定要用原始数据!
xtcointtest kao 原始变量名 原始变量名 原始变量名 ///这是kao检验
第六步:确定PVAR模型的滞后阶数
pvar2 变量名1 变量名2 变量名3,lag(5) soc ///我是用的连老师的pvar2的包做的,所以命令里面是pvar2
![8f78ef37cc238f8fca6b931886cf4793.png](https://i-blog.csdnimg.cn/blog_migrate/542101c0df7267ae291ff7768e57c5f3.png)
第七步:格兰杰因果检验
格兰杰检验时一种用于分析各经济变量之间因果关系的检验方法。格兰杰检验定义如下:有两个经济变量 X、Y,在包 含了 X、Y 两个变量的过去信息的条件下对 Y 的 预测效果一定会优于仅在变量 Y 的过去信息条件下对 Y 所做出的预测效果,则我们可以认为变 量 X 是变量 Y 的 Granger 原因
pvar2 变量名1 变量名2 变量名3 ,lag(number) granger //格兰杰因果检验,其中滞后阶数根据上面的原则选择,比如上面那个图的结果告诉我是五阶最优,所以这里的number就可以改成5
然后这里的话,stata用的这个命令好像是因为是pvar模型里面的因果检验,所以用的是卡方统计量;var模型里面也有个因果检验,命令是vargranger,也是使用的卡方检验统计量。大部分还是用的F统计量。如果说你不用这个命令做因果检验,你也可以用下面两种办法做因果检验。
这是第二种:
![807c8f0ca05349717ae3d0988f981700.png](https://i-blog.csdnimg.cn/blog_migrate/377f2f945ff9b0036879cf345c949c31.jpeg)
这是第三种
![23c63edee590328c4dce45055bd0dd59.png](https://i-blog.csdnimg.cn/blog_migrate/d2c959e2f27076eb610365382f602302.jpeg)
第八步:进行GMM系数估计同时进行脉冲响应
pvar2 变量名1 变量名2 变量名3,lag(5) irf(10) // 这是对pvar模型进行系数的估计,lag()里面的数字是上面根据soc命令选出来的,irf()里面的数字是脉冲响应的期数。
最后一步:进行方差分解
pvar2 变量名1 变量名2 变量名3 ,lag(5) decomp(30) //decomp()里面的数字指的是方差分解的期数
(其实还有一步是模型的稳定性检验,只是我没做这步骤,我看大部分的论文也没做)
距离我接触这个模型到写这篇文章有一个半月的时间了,写出来感觉还是挺容易的(理论方面懂得不是很多),就几个命令的事情,但是我记得当时跑这几行代码总是报错,一报错就百度,经常都是在经管论坛得到解答。写下这个文章希望能够对你有些帮助吧!