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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:56:04