You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 00:17:36