关于xtabond转xtabond2匹配动态面板GMM回归结果及xtabond检验可行性的技术咨询
解决xtabond转xtabond2结果不一致及检验问题
一、正确转换xtabond到xtabond2的命令
你当前的xtabond2结果和原xtabond不一致,核心问题在于工具变量的设定错误,以及对原xtabond模型结构的复刻不到位。我们一步步拆解修正:
1. 明确原xtabond的模型设定
先修正你原命令的语法笔误(变量间漏了空格),原xtabond命令的实际模型逻辑是:
xtabond dependVar L(2/2).var1 L(2/2).Var2 L(2/2).Var3 L(2/2).Var4 L(2/2).Var5, lags(1) twostep artest(2) vce(robust) noconstant level(90)
这个命令的含义是:
- 回归方程:
dependVar = β₁*L.dependVar + β₂*L2.var1 + β₃*L2.var2 + β₄*L2.var3 + β₅*L2.var4 + β₆*L2.var5(无常数项) - 工具变量:默认的差分GMM工具——因变量的2阶及以上所有滞后水平值作为
L.dependVar的工具;其他解释变量(L2.var1等)因未指定endog(),被xtabond默认视为外生,工具是它们自身的当期/滞后值
2. 修正后的xtabond2命令
你的xtabond2命令犯了两个关键错误:
- 对因变量的工具变量只指定了
laglimits(1 1),这仅用L.dependVar作为工具,而原xtabond是用2阶及以上所有滞后 - 错误地将外生解释变量用
gmmstyle()处理(当作内生变量),而原xtabond将它们视为外生,应该用ivstyle()
正确的xtabond2命令如下:
xtabond2 dependVar L(1/1).dependVar L(2/2).var1 L(2/2).var2 L(2/2).var3 L(2/2).var4 L(2/2).var5, /// gmmstyle(dependVar, laglimits(2 .)) /// 匹配xtabond:用dependVar的2阶及以上所有滞后作为工具 ivstyle(L(2/2).var1 L(2/2).var2 L(2/2).var3 L(2/2).var4 L(2/2).var5) /// 将这些变量视为外生,用自身作为工具 noleveleq /// 差分GMM(和xtabond一致,不包含水平方程) noconstant twostep robust level(90)
如果原xtabond中的var1是当期变量(不是滞后2期),即原命令是xtabond dependVar var1 L(2/2).Var2 ...,只需把解释变量和ivstyle()中的L(2/2).var1改成var1即可。
运行这个命令后,回归系数、标准误应该和原xtabond完全一致,同时xtabond2会自动输出AR(1)、AR(2)检验,以及你需要的Sargan/Hansen过度识别检验。
二、关于xtabond带vce(robust)时的检验问题
直接用xtabond命令带vce(robust)选项时,无法开展Sargan或Hansen检验:
- Sargan检验依赖同方差假设,而
vce(robust)是异方差稳健设定,两者冲突,Stata直接禁止在带vce(robust)的xtabond中使用sargan选项 - Hansen检验是xtabond2特有的功能,原生xtabond命令不支持
所以最优方案就是用上面修正后的xtabond2命令复刻原xtabond模型,这样既能得到一致的回归结果,又能获取Sargan、Hansen等所有需要的检验统计量。
内容的提问来源于stack exchange,提问作者EcoStudent
相关产品推荐
相关产品推荐

