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

将Stata的xtabond命令转换为R代码并解析滞后项含义

在R中复现Stata xtabond的Arellano-Bond估计结果

问题1:R中可替代的函数

你用plm::pgmm没复现成功,大概率是参数没和Stata的xtabond对齐。plm包的pgmm是最贴合Stata xtabond的工具,只要参数设置正确就能匹配结果。如果还是遇到bug,可以尝试gmm包的底层gmm函数手动实现矩条件。

适配Stata命令的pgmm代码模板

library(plm)

# 将数据转换为面板格式(指定个体和时间索引)
panel_data <- pdata.frame(your_dataset, index = c("stcode", "year"))

# 构建Arellano-Bond一阶差分GMM模型
ab_model <- pgmm(
  # 回归公式:因变量 + 滞后1期因变量 + 其他解释变量
  rpcexp_annual ~ lag(rpcexp_annual, 1) + election + election_3 + election_2 + 
    rpcinc_annual + rpcgrants_annual + unem + popmillions_annual + kidsaged + 
    rr + dd + y1974 + y1975 + y1976 + y1977 + y1978 + y1979 + y1980 + 
    y1981 + y1982 + y1983 + y1984 + y1985 + y1986 | 
    # 工具变量:对应maxlag(4),用因变量滞后2-4期的水平值
    lag(rpcexp_annual, 2:4),
  data = panel_data,
  # 匹配Stata的样本筛选条件
  subset = stcode != 2 & stcode != 4 & stcode != 29 & stcode != 39 & stcode != 45 & stcode != 42 & year >= 1974,
  model = "twostep",  # Stata xtabond加robust选项默认用两步GMM
  robust = TRUE,      # 对应Stata的robust标准误
  transformation = "fd"  # 一阶差分转换,对应Stata xtabond的默认行为
)

# 查看估计结果
summary(ab_model)

问题2:Stata命令中maxlag(4)的含义

Stata的xtabond默认会用因变量所有可用的滞后2期及以上水平值作为工具变量,maxlag(4)是给这个工具变量集合设上限:只使用因变量的滞后2期、3期、4期水平值作为工具,不会纳入滞后5期及更早的观测值。

需要明确几个细节:

  • 这个命令里,只有因变量rpcexp_annual的滞后项被当作内生变量处理,它的滞后1期是核心解释变量,滞后2-4期是工具变量。
  • 其他所有解释变量(比如election、rpcinc_annual等)被Stata默认视为外生变量,它们的一阶差分直接作为工具变量,不受maxlag(4)的限制。
  • 如果你的研究中有其他内生解释变量,需要额外在命令中指定,但从给出的Stata代码来看,没有这类变量。

内容的提问来源于stack exchange,提问作者eric andre the gian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:55:19