如何从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
相关产品推荐
相关产品推荐

