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

在R语言plm包pgmm函数中为GMM模型添加并显示截距项

问题原因与解决方案

当你在pgmm()中设置effect = "twoways"时,模型会同时控制个体固定效应和时间固定效应,此时全局截距项会被这两类固定效应吸收,因此不会在summary()的输出结果中显示。以下是两种满足你需求的解决方式:


方案1:移除时间固定效应,显示全局截距

如果你的研究场景不需要强制保留时间固定效应,只需将effect参数改为仅控制个体固定效应,全局截距项就会自动出现在变量结果列表中:

z1.AB <- pgmm(cpi ~ lag(cpi, 1:1)+lag(gdppc, 2:2) + lag(expense, 3:3) + lag(freedom, 2:2) | lag(cpi, 1:10) +  lag(gdppc, 1:9) + lag(expense, 1:2) + lag(freedom, 1:8) + lag(democracy, 4:10) + lag(stability, 1:10),
              data = model,
              effect = "individual",  # 改为仅个体固定效应
              model = "twosteps",
              collapse = TRUE,
              subset = sample == 1)

# 查看包含截距的结果
summary(z1.AB, robust = FALSE)

方案2:保留双向固定效应,手动计算截距

若必须保留双向固定效应,可通过fixef()函数提取固定效应,再结合因变量的总体均值计算全局截距:

# 先运行原双向固定效应模型
z1.AB <- pgmm(cpi ~ lag(cpi, 1:1)+lag(gdppc, 2:2) + lag(expense, 3:3) + lag(freedom, 2:2) | lag(cpi, 1:10) +  lag(gdppc, 1:9) + lag(expense, 1:2) + lag(freedom, 1:8) + lag(democracy, 4:10) + lag(stability, 1:10),
              data = model,
              effect = "twoways",
              model = "twosteps",
              collapse = TRUE,
              subset = sample == 1)

# 提取个体和时间固定效应
fe_ind <- fixef(z1.AB, effect = "individual")
fe_time <- fixef(z1.AB, effect = "time")

# 计算全局截距
mean_cpi <- mean(model$cpi[model$sample == 1], na.rm = TRUE)
intercept <- mean_cpi - mean(fe_ind) - mean(fe_time)

# 输出截距结果
cat("双向固定效应下的全局截距:", intercept, "\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:55:24