使用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
相关产品推荐
相关产品推荐

