Stata:时间序列中的格兰杰因果检验

在实证分析中,因果关系经常需要判断。对此,Granger提出了一种解决方法:如果x是y的原因,且不存在反向因果,则x过去值可以预测y未来值,反之则不然。具体即建立时间序列的滞后回归模型,分析x的滞后项是否对y有明显的预测能力。此检验可分为四步操作:

设置时间序列

第一步,设置时间序列,注意此处若时间不连续会对后续滞后回归有影响。

#设置时间序列
tsset var~

结果大概这样

. tsset trade_date
        time variable:  trade_date, 03jan2018 to 27may2020, but with gaps
                delta:  1 day

判断最佳滞后阶数

第二步,判断最佳滞后阶数,此处可加判断条件取符合条件部分,至于判断取决于其AIC与BIC,一般AIC值即可判断(AIC越小越好)。

#判断滞后阶数
varsoc var~1 var~2 (if 条件1)

结果这样

. varsoc log_return stk_log_return if time==0
   Selection-order criteria
   Sample:  12jan2018 - 13mar2020, but with gaps
                                                Number of obs      =        96
  +---------------------------------------------------------------------------+
  |lag |    LL      LR      df    p      FPE       AIC      HQIC      SBIC    |
  |----+----------------------------------------------------------------------|
  |  0 |  680.432                      2.5e-09   -14.134  -14.1124  -14.0806* |
  |  1 |  687.212  13.561    4  0.009  2.4e-09  -14.1919  -14.1271  -14.0317  |
  |  2 |  698.272  22.119*   4  0.000  2.0e-09*  -14.339*  -14.231* -14.0719  |
  |  3 |  701.008  5.4713    4  0.242  2.1e-09  -14.3127  -14.1615  -13.9387  |
  |  4 |  702.141  2.2668    4  0.687  2.2e-09  -14.2529  -14.0586  -13.7721  |
  +---------------------------------------------------------------------------+
   Endogenous:  log_return stk_log_return
    Exogenous:  _cons

阶数判断有找标星星的就好了,这个就是两阶滞后较优。

也可以一个个回归试一试,报告AIC和BIC比较:

#回归后报告AIC BIC
estat ic
 estat ic
Akaike's information criterion and Bayesian information criterion
           . |        334    1080.45   1100.915       5  -2191.831  -2172.775
       Model |  .003495038         4   .00087376   Prob > F        =    0.0000
    Residual |  .026808292       329  .000081484   R-squared       =    0.1153
    log_return |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]

我使用的数据为2018年1月3日到2020年5月27日的数据,有效数据条数为581,但此时显示:

 Number of obs = 334

581条记录两阶滞后回归后只剩334个观测值?被吞了?注意,知识点来了,又一个小细节。

并不是计算有问题,只是由于滞后阶数的设置为2,也就是说接下来两天 (注意!不是接下来两个交易日或者有观测数据的日期) 有数据才能计入有效进入回归。而我使用的数据是可转债和股票交易数据,周末没有交易,周五周四的滞后两天是周末,没有观测值就被跳过了,遇到节假日也是同理。也就是说非交易日前两天都没了,所以观测数比实际数据少了40%以上。

如果想要对上一个交易日或者上一个观测进行回归,自行构造虚拟时间序列设置为第一步即可。

报告检验结果

第四步,对于使用第三步中方法①的可以使用test命令,对于使用第三步中方法②的可以使用

#报告结果
vargranger
vargranger
   Granger causality Wald tests
  +------------------------------------------------------------------+
  |          Equation           Excluded |   chi2     df Prob > chi2 |
  |--------------------------------------+---------------------------|
  |        log_return     stk_log_return |  2.3602     1    0.124    |
  |        log_return                ALL |  2.3602     1    0.124    |
  |--------------------------------------+---------------------------|
  |    stk_log_return         log_return |  .15784     1    0.691    |
  |    stk_log_return                ALL |  .15784     1    0.691    |
  +------------------------------------------------------------------+

结果报告就有了,最后一个是p值。

Original: https://blog.csdn.net/weixin_47325163/article/details/109673415
Author: 宋锦纹
Title: Stata:时间序列中的格兰杰因果检验

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/635897/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球