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

使用fixest::feols实现仅第二阶段含控制变量的2SLS/IV回归

fixest中实现2SLS二阶段独有控制变量的方法

问题原因

feols()默认将公式首个分段(~后到第一个|前)的外生变量同时加入一阶段和二阶段回归,你原有代码把cyl、disp放在了这个公共变量段,因此一阶段会自动纳入这两个控制变量。

具体方案

feols()支持四段式IV公式,可分别指定不同阶段的变量集,语法规则如下:

  • 第一段:两阶段共同纳入的外生变量
  • 第二段:仅在第二阶段纳入的外生控制变量
  • 第三段:内生变量 ~ 工具变量的IV关系设定
  • 第四段:仅在第一阶段纳入的外生控制变量,无额外控制时填0即可

你要实现cyl、disp仅在二阶段随csw0递增加入、一阶段不包含这两个变量的需求,可直接运行如下代码:

library(fixest)
library(modelsummary)

# 拟合IV模型:公共变量仅保留常数项,cyl/disp仅在二阶段递增加入,一阶段无额外控制
iv_models = feols(mpg ~ 1 | csw0(cyl, disp) | hp ~ drat | 0, data = mtcars)

# 输出所有模型的一二阶段回归结果
modelsummary(summary(iv_models, stage = 1:2))

结果校验

可单独提取模型查看一阶段变量构成,比如查看同时控制cyl和disp的第三个模型的一阶段结果:

summary(iv_models[[3]], stage = 1)

此时一阶段仅包含工具变量drat与常数项,无cyl、disp的系数;切换stage = 2查看二阶段结果,即可看到cyl、disp作为控制变量正常纳入。

注:该设定下需自行确认一阶段变量选择符合计量识别要求,fixest不会自动将二阶段独有变量追加到一阶段回归中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:48:15