R语言实现PVAR(面板向量自回归模型)
使用R来实现PVAR用到的包是panelvar,panelvar的文档下载链接:
https://cran.r-project.org/web/packages/panelvar/panelvar.pdf
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)