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

R语言:用felm+Stargazer对齐OLS与IV工具变量估计结果

我明白你遇到的问题了——当用stargazer展示felm输出的OLS和IV结果时,内生变量的IV估计值会被默认标记为x(fit),而OLS的系数标签是x,这就导致两个结果没法在同一行对齐展示。这是stargazer对felm工具变量模型的默认处理逻辑,不过我们可以通过手动调整系数标签来解决这个问题。

方法1:用stargazer的coef.map参数统一标签

coef.map可以帮我们把不同模型里的系数标签映射成同一个名称,这样就能让OLS和IV的x系数在同一行对齐。修改后的代码如下:

library(lfe)
library(stargazer)
n<-1000
u1<-rnorm(n)
u2<-rnorm(n)
z=3+0.5*rnorm(n)
x=0.5*z+u1
y=2*x+u2
df<-data.frame(y=y,x=x,z=z)
model1<-felm(y~x,data=df)
model2<-felm(y~1|0|(x~z),data=df)

# 关键修改:用coef.map统一系数标签
stargazer(model1, model2,
          coef.map = list(
            "(Intercept)" = "(Intercept)",
            "x" = "x",
            "x(fit)" = "x"  # 把IV模型的x(fit)重命名为x
          ),
          title = "OLS vs IV Estimation Results",
          type = "text")  # 输出文本格式,要LaTeX的话改成"latex"

运行这段代码后,OLS和IV的x系数就会出现在同一行,完美对齐。如果不需要显示工具变量相关的额外统计量,还可以用omit.stat参数去掉冗余项,比如omit.stat = c("f", "ser")。

方法2:用modelsummary包(更简洁的替代方案)

如果你不想手动调整标签,modelsummary包对felm模型的支持更加友好,它会自动识别IV模型的内生变量,并默认将系数对齐展示,代码也更简洁:

install.packages("modelsummary")  # 首次使用需要安装
library(modelsummary)

models <- list("OLS" = model1, "IV" = model2)
modelsummary(models, output = "text")  # 支持输出HTML/LaTeX/Word等格式

这个包的默认输出格式已经很美观,还能轻松添加统计量、调整表格样式,非常适合对比不同模型的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:08:57