使用fixest包实现含交互项的工具变量回归求助
在fixest中实现含内生变量交互项的IV回归
问题背景
你需要用fixest包做IV回归:以y为被解释变量,x1(内生变量,工具变量为z1)、x2为解释变量,现在要加入x1与x2的交互项,但直接操作出现报错。
原基础IV代码:
library(fixest) # 示例数据 data <- data.frame( y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100), z1 = rnorm(100) ) # 基础IV回归 iv_model <- feols(y ~ x2 | x1 ~ z1, data = data) summary(iv_model)
报错原因
你尝试的feols(y ~ x2 + x2 * x1 | x1 ~ z1, data = data)报错,是因为内生变量x1不能出现在公式的外生部分(|左侧),而交互项x2*x1包含x1,违反了fixest的IV语法规则;若把x2移到|右侧,又会因为x2是外生变量,不能被放在内生/工具变量区域而报错。
你的代码正确性确认
你写出的以下代码是正确的:
iv_model <- feols(y ~ x2 | x1 + I(x1*x2) ~ z1 + I(z1*x2), data = data)
逻辑解释
|左侧:仅保留外生变量x2,符合外生解释变量的放置规则;|中间:列出所有内生变量——原内生变量x1,以及新的内生交互项I(x1*x2)(因为x1是内生的,它和外生变量x2的交互项也属于内生项);|右侧:为每个内生变量提供对应的工具变量——z1对应x1,I(z1*x2)对应I(x1*x2)。这是计量分析中处理“内生变量与外生变量交互”的标准做法:利用原工具变量与外生变量的交互项,作为内生交互项的工具变量。
更简洁的写法
在fixest中可以直接用:表示交互项,无需I(),代码更简洁:
iv_model <- feols(y ~ x2 | x1 + x1:x2 ~ z1 + z1:x2, data = data)
运行后用summary(iv_model)查看结果,你会得到x2、x1、x1:x2三个变量的回归系数,以及对应的工具变量有效性检验结果。
内容的提问来源于stack exchange,提问作者Ryan Longmuir
相关产品推荐
相关产品推荐

