当前位置:   article > 正文

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

stata格兰杰因果检验的命令

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


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

设置时间序列

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

#设置时间序列
tsset var~
  • 1
  • 2

结果大概这样

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

判断最佳滞后阶数

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

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

结果这样

. 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

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

#回归后报告AIC BIC
estat ic
  • 1
  • 2
 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.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

进行滞后回归

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

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

上面两种方法均可,其中①中可以加条件筛选:方法②不能加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
--------------------------------------------------------------------------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

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

 Number of obs = 334
  • 1

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

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

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

报告检验结果

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

#报告结果
vargranger
  • 1
  • 2
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    |
  +------------------------------------------------------------------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/534632
推荐阅读
相关标签
  

闽ICP备14008679号