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

R语言中控制年份/行业固定效应的Dynamic GMM实现方法咨询

动态GMM(pgmm)实现步骤

1. 误区澄清

你之前对plm索引的顾虑可以打消:pdata.frame设置PERMNO和Year为索引,仅用于识别每个个体的时序关系、正确生成滞后项,不会强制加入个体固定效应,你依然可以按照需求手动控制行业和年份固定效应,和你用lm时的逻辑完全一致。

2. 具体实现代码

# 加载plm包
library(plm)

# 转换为面板数据格式,用于识别个体时序关系
pdata <- pdata.frame(data, index = c("PERMNO", "Year"))

# 拟合动态GMM模型
gmm_result <- pgmm(
  # 公式左侧为被解释变量,右侧为回归项,|后为工具变量设定
  formula = A ~ B + Controls + lag(A, 1) + lag(A, 2) + factor(SIC) + factor(Year) | 
    # 用A的3阶及以上滞后作为内生滞后项的工具,外生变量直接作为自身工具
    lag(A, 3:99) + B + Controls + factor(SIC) + factor(Year),
  data = pdata,
  model = "twosteps", # 选择两步GMM,估计效率更高
  transformation = "d" # 选d为差分GMM(Arellano-Bond),选ld为系统GMM
)

3. 结果检验与输出

# 输出回归系数与显著性
summary(gmm_result)

# Sargan过度识别检验,p值>0.05说明工具变量设定有效
sargan.test(gmm_result)

# 二阶序列相关检验,p值>0.05说明模型无二阶自相关,符合GMM设定要求
mtest(gmm_result, order = 2)

关键说明

  • 工具变量部分的lag(A, 3:99)是通用写法,即使用所有可用的3阶及以上A的滞后值作为工具,若你的样本时序长度较短,可以调整为lag(A, 3:n),n为你样本的最大时序长度。
  • 如果你需要使用系统GMM,仅需将transformation参数改为"ld"即可,工具变量部分无需额外调整,pgmm会自动生成水平方程的对应工具。

内容的提问来源于stack exchange,提问作者derek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 03:18:02