R语言实现PVAR(面板向量自回归模型)

这次研究了一个问题,要用PVAR(面板向量自回归模型),在网上找的教程基本上都是Stata或者Eviews的教程,而鲜有R实现PVAR的教程,这里总结分享一下我摸索的PVAR用R实现的整个过程。码字不易,喜欢请点赞!!!谢谢

使用R来实现PVAR用到的包是panelvar,panelvar的文档下载链接:

https://cran.r-project.org/web/packages/panelvar/panelvar.pdf

1.数据样式
R语言实现PVAR(面板向量自回归模型)_第1张图片
其中Code和Date两列是面板时间序列索引。

2.使用plm包的pdata.frame将dataframe数据转成面板dataframe

library(plm)
##使用pdata.frame()函数将外部读取的数据转换为plm包可以识别的面板格式,
##使用index参数标记名为Code和Date的列,分别对应股票代码和时间
pdata=pdata.frame(data,index=c("Code","Date"))

3.面板数据平稳性检验

##使用plm包中的purtest()进行面板数据的平稳性检验。
##其中,参数object设定待检验变量;
##exo参数设定是否包含截距项(intercept)和趋势项(trend);
##test参数定义面板平稳性检验的方法;
##lags参数定义信息准则,使用“AIC”和“SIC”进行定义;
##pmax参数定义最大滞后期;
purtest(object=pdata[,3],exo="intercept",test="ips",lags="AIC",pmax=10)

平稳性检验结果若p值小于0.05,则表示平稳

4.使用panelvar包的pvargmm函数进行GMM-PVAR分析以及确定最优滞后期

library(panelvar)
##data参数定义数据集;
##dependent_vars参数定义内生变量;
##exog_vars参数定义外生变量;
##lags参数定义滞后期; 
##transformation参数定义GMM模型的类型,包括水平模型和差分模型(First-difference "fd" or forward orthogonal deviations "fod");
##steps参数定义GMM模型的估计程序,包括一步估计、两步估计和多步估计;
##max_instr_dependent_vars以及 max_instr_predet_vars定义GMM模型工具变量的滞后期,我们按照面板GMM的常规设置,设为99期。
gmmlag = pvargmm(dependent_vars=c("sentiment","heat","Guba","XQ","BCI"),data=pdata,lags=5,exog_vars=c("Count","Value"),
                transformation="fd",steps="twostep",max_instr_dependent_vars=99)

注:一般VAR和SVAR都是先确定最优滞后阶数然后再进行模型模拟,但是R使用panelvar包实现PVAR时,需要先使用模型模拟,然后使用Andrews_Lu_MMSC函数计算模型拟合结果的AIC、BIC、HQIC值,从而比较不同滞后阶数的准则值来得到最优滞后阶数。

Andrews_Lu_MMSC(gmmlag)

5.模型估计结果过度识别检验

##原假设:工具变量是外生的。
##若拒绝原假设,则说明存在工具变量与扰动项相关。
hansen_j_test(gmmlag)

6.稳定性检验

stability(gmmlag)

7.脉冲响应分析

##使用oirf()函数进行脉冲响应分析
oirf(gmmlag,n.ahead=10)

你可能感兴趣的:(R语言)