Stata:xtabond命令中的endog()选项设定问题

发布时间:2020-08-02 阅读 4770

Stata 连享会   主页 || 视频 || 推文

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

课程详情 https://gitee.com/arlionn/Course   |   lianxh.cn

课程主页 https://gitee.com/arlionn/Course

作者:连玉君 (中山大学)
E-Mail: arlionn@163.com

2020/8/2 1:07

问题背景

考虑如下动态面板数据模型:

假设 wit 是外生变量,但 kit 是内生变量,若采用 FD-GMM 估计则 Stata 估模型 (1),则 Stata 命令为:

  . xtabond n  w   , endog(k)   // M1

也有人使用如下命令 (在常规的解释变量中也加入了 k),Stata 也能正常执行之:

  . xtabond n  w k , endog(k)   // M2

问题: 上述两种设定,M1 和 M2,哪一个正确?

简要解答: M1 是正确的。

解释: 既然变量 k 是内生变量,就应该只出现在 endog() 选项中,若出现在逗号之前,则被 Stata 视为外生变量。M2 的命令写法,其实是把变量 k 同时视为内生变量和外生变量,自相矛盾了。

奇怪的是,Stata 似乎过于宠溺她的用户:M2 这条命令可以顺利执行 (我印象里在 Stata 9.0 以前的版本里,这条命令是无法执行的)。下面,我们对比两种情况下结果的差异:

*-调入数据
  webuse "abdata.dta", clear
  xtset id year

  
*-M1:前面不放 k 
  xtabond n  w   , endog(k)
  est store k0 
  
*-M2:前面放 k
  xtabond n  w  k, endog(k)
  est store k1

输出结果如下 (部分不重要的结果从略):

. *-M1:前面不放 k 
.   xtabond n  w   , endog(k)

Arellano-Bond dynamic panel-data estimation     Number of obs     =        751
Group variable: id                              Number of groups  =        140

Number of instruments =     58                  Wald chi2(3)      =    1777.58
                                                Prob > chi2       =     0.0000
One-step results
------------------------------------------------------------------------------
           n |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
           n |
         L1. |      0.228      0.063     3.59   0.000        0.103       0.352
             |
           k |      0.689      0.055    12.52   0.000        0.581       0.796
           w |     -0.517      0.054    -9.57   0.000       -0.622      -0.411
       _cons |      2.723      0.184    14.77   0.000        2.362       3.085
------------------------------------------------------------------------------
Instruments for differenced equation
        GMM-type: L(2/.).n L(2/.).k
        Standard: D.w
.   
. *-M2:前面放 k
.   xtabond n  w  k, endog(k)
note: k dropped because of collinearity

Arellano-Bond dynamic panel-data estimation     Number of obs     =        751
Group variable: id                              Number of groups  =        140

Number of instruments =     59                  Wald chi2(3)      =    1952.87
                                                Prob > chi2       =     0.0000
One-step results
------------------------------------------------------------------------------
           n |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
           n |
         L1. |      0.505      0.047    10.83   0.000        0.413       0.596
             |
           k |      0.384      0.029    13.38   0.000        0.328       0.441
           w |     -0.617      0.051   -12.01   0.000       -0.718      -0.517
       _cons |      2.602      0.182    14.28   0.000        2.245       2.959
------------------------------------------------------------------------------
Instruments for differenced equation
        GMM-type: L(2/.).n L(2/.).k
        Standard: D.w D.k

作为对比,大家可以重点关注如下几个信息:

M2 的估计结果的第一行,Stata 的提示信息为 note: k dropped because of collinearity,似乎已经自动删除了我们在逗号前设定的冗余变量 k

事实并非如此。因为在 M2 估计结果的最后一行为 Standard: D.w D.k (请读者自行对比一下 M1 估计结果的最后一行 Standard: D.w),这意味着变量 D.k 也被自动加入到了工具变量矩阵中。

补充说明一下:

采用 FD-GMM 估计模型 (1) 时,需要先对其进行 FD 处理,得到如下差分方程:

这里,Δnit1 和 Δkit 都是内生变量。

  • Δnit1 的工具变量为:nits(s2),即 L(2/.).n
  • Δkit   的工具变量为:kits(s2),即 L(2/.).k

这些都是 真正意义上的工具变量,在 Stata 的结果中称为 GMM-type: xxx

对于模型 (2) 中的外生变量 Δwit,它可以视为自己的工具变量,在 Stata 结果中标记为 Standard:xxx。因为,FD-GMM 在最终估计时,会统一把所有不与 Δuit 相关的变量都写入工具变量矩阵 Zit,并基于矩条件 E(Zituit)=0 构造样本矩条件,进而采用 GMM 进行估计。

有了上面的背景信息,就不难理解为什么 M2 是错误的了。由于 M2 写法在逗号前后都放置了变量 k,Stata 会把 L(2/.).kD.k 两组工具变量都加入工具变量矩阵 Zit。相比之下,在 M1 写法中,只有 L(2/.).k 被纳入工具变量矩阵 Zit

最终,我们来看看两种写法的估计结果的差异有多大:

  *-----对比结果-------
  local m  "k0 k1"
  local mt "前面放k 前面不放k"
  esttab `m', mtitle(`mt')nogap compress replace   ///
         b(%6.3f) s(N zrank df_m) drop(`drop')   ///
         star(* 0.1 ** 0.05 *** 0.01)  ///
		 addnotes("zrank: number of instruments")
		 

/*
------------------------------------
                 (1)          (2)   
             前面放k    前面不放k   
------------------------------------
L.n            0.228***     0.505***
              (3.59)      (10.83)   
k              0.689***     0.384***
             (12.52)      (13.38)   
w             -0.517***    -0.617***
             (-9.57)     (-12.01)   
_cons          2.723***     2.602***
             (14.77)      (14.28)   
------------------------------------
N            751.000      751.000   
zrank         58.000       59.000   
df_m           3.000        3.000   
------------------------------------
t statistics in parentheses
zrank: number of instruments
* p<0.1, ** p<0.05, *** p<0.01
*/

上面列出的对比结果中,zrank 表示工具变量的个数, 可以看出,第 (1) 列比第 (2) 列少用了一个工具变量 (58 v.s. 59),它其实就是 D.k

结论

虽然 M2 的设定方式在 Stata 中没有报错,但其背后的模型设定逻辑确实有问题的:变量 k 怎么可能雌雄同体呢?:它既是「外生变量」(被放在了前面) 又是「内生变量」(被放在了后面,即 endog(k) 选项中)。

简言之,在使用 xtabond 命令时,出现在 endog() 选项中的变量不能再出现在逗号前面的 varlist 中。

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
最新专题 DSGE, 因果推断, 空间计量等
Stata数据清洗 游万海 直播, 2 小时,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD