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

本文详细介绍了如何在Stata中进行Granger因果检验,包括设置时间序列、选择最佳滞后阶数、进行滞后回归并报告检验结果。通过实例演示了如何判断变量间的因果关系,以及如何处理非连续时间数据和滞后期间的缺失观测值。
摘要由CSDN通过智能技术生成

时间序列中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
-----------------------------------------------------------------------------
       Model |          N   ll(null)  ll(model)      df        AIC        BIC
-------------+---------------------------------------------------------------
           . |        334    1080.45   1100.915       5  -2191.831  -2172.775
-----------------------------------------------------------------------------
Note: BIC uses N = number of observations. See [R] BIC note.

进行滞后回归

第三步,开始回归,对于滞后二阶回归:

#二阶滞后回归①
reg y l.y l.x l2.y l2.x (if 条件1)
#二阶滞后回归②
var y x,lag(n)

上面两种方法均可,其中①中可以加条件筛选:方法②不能加if判断语句,其中的n即为第二部判断的滞后阶数。

 reg log_return l.log_return l.stk_log_return l2.log_return l2.stk_log_return

      Source |       SS           df       MS      Number of obs   =       334
-------------+----------------------------------   F(4, 329)       =     10.72
       Model |  .003495038         4   .00087376   Prob > F        =    0.0000
    Residual |  .026808292       329  .000081484   R-squared       =    0.1153
-------------+----------------------------------   Adj R-squared   =    0.1046
       Total |   .03030333       333  .000091001   Root MSE        =    .00903
       
--------------------------------------------------------------------------------
    log_return |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
---------------+----------------------------------------------------------------
    log_return |
           L1. |   .1295246   .0483182     2.68   0.008     .0344729    .2245763
               |
stk_log_return |
           L1. |   .0418571    .044596     0.94   0.349    -.0458722    .1295863
               |
    log_return |
           L2. |  -.3160259   .0569197    -5.55   0.000    -.4279985   -.2040534
               |
stk_log_return |
           L2. |   .0892175   .0450037     1.98   0.048     .0006862    .1777488
               |
         _cons |   .0000102   .0004966     0.02   0.984    -.0009668    .0009871
--------------------------------------------------------------------------------

我使用的数据为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值。

  • 18
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金工校尉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值