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

如何从feols()工具变量回归结果中提取一二阶段结果供modelsummary()使用

实现方法

fixest包内置了get_fit()函数,可以直接从IV回归的结果对象中提取第一、第二阶段的拟合模型,返回的模型对象原生兼容modelsummary的调用逻辑,无需单独拟合第一阶段回归。

以下是基于你提供的测试数据的完整可运行代码:

library(fixest)
library(tidyverse)
library(modelsummary)

# 构造测试数据集
base <- iris
names(base) <- c("y", "x1", "x_endo_1", "x_inst_1", "fe")
base$x_inst_2 <- 0.2 * base$y + 0.2 * base$x_endo_1 + rnorm(150, sd = 0.5)
base$x_endo_2 <- 0.2 * base$y - 0.2 * base$x_inst_1 + rnorm(150, sd = 0.5)

# 估计IV模型
mod <- feols(y ~ x1 | fe | x_endo_1 + x_endo_2 ~ x_inst_1 + x_inst_2, base)

# 提取一二阶段模型对象,多个内生变量时会返回对应数量的第一阶段模型
mod_stages <- get_fit(mod, stage = 1:2)

# 自定义输出列名
names(mod_stages) <- c("第一阶段:x_endo_1", "第一阶段:x_endo_2", "第二阶段")

# 直接传入modelsummary输出结果
modelsummary(
  mod_stages,
  # 可选:自定义需要展示的拟合优度指标
  gof_map = c("nobs", "r.squared", "adj.r.squared", "f.statistic"),
  # 可选:自定义系数名称
  coef_rename = c(
    "x1" = "外生控制变量x1",
    "x_inst_1" = "工具变量1",
    "x_inst_2" = "工具变量2",
    "fit_x_endo_1" = "内生变量1拟合值",
    "fit_x_endo_2" = "内生变量2拟合值"
  )
)

补充说明

  • 如果你的IV模型只有1个内生变量,get_fit(mod, stage = 1:2)会返回长度为2的列表,对应第一、第二阶段模型
  • 提取得到的阶段模型都是标准的fixest对象,modelsummary对fixest模型的所有自定义功能(比如调整标准误、添加固定效应标注、输出格式转换等)都可以直接使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:06:03