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

如何从AER包的ivreg()中提取工具变量回归第一阶段结果?

从ivreg()提取第一阶段结果的方法

当然可以!你完全不用像现在这样手动拆分跑两次回归,ivreg()拟合出来的结果对象里已经包含了第一阶段的所有信息,直接提取就行,下面给你具体操作方法:

1. 直接查看第一阶段诊断信息

如果你只是想快速查看第一阶段的关键统计量(比如检验工具变量相关性的F值、R²这些),只需要在调用summary()时加上diagnostics = TRUE参数:

summary(iv_fit, diagnostics = TRUE)

这个输出里会专门列出第一阶段的诊断结果,包括每个内生变量对应的第一阶段F统计量,帮你判断工具变量是否有效。

2. 提取第一阶段的拟合值

如果需要获取第一阶段对内生变量x的拟合值,不用手动跑lm(x~a+z),直接用fitted()函数并指定stage = 1:

first_stage_fitted <- fitted(iv_fit, stage = 1)

用这个拟合值跑第二阶段回归,结果会和你手动跑的second_fit完全一致,因为ivreg()本身就是基于两阶段最小二乘实现的。

3. 获取第一阶段的完整回归系数

要是你想查看第一阶段回归的系数、标准误等详细结果,可以用coef()或summary()结合stage = 1参数:

# 提取第一阶段系数
first_stage_coef <- coef(iv_fit, stage = 1)

# 查看第一阶段的完整回归汇总
summary(iv_fit, stage = 1)

完整示例代码

给你整合后的可重复示例,加了随机种子让结果一致:

library(AER)
set.seed(123) # 固定随机种子,结果可重复

# 生成模拟数据
y <- rnorm(100, 5, 10)
x <- rnorm(100, 3, 15)
z <- rnorm(100, 3, 7)
a <- rnorm(100, 1, 7)
b <- rnorm(100, 3, 5)

# 拟合IV模型
iv_fit <- ivreg(y ~ x + a | a + z)

# 查看含第一阶段诊断的汇总
summary(iv_fit, diagnostics = TRUE)

# 提取第一阶段拟合值
first_stage_fitted <- fitted(iv_fit, stage = 1)

# 验证第二阶段回归
second_fit <- lm(y ~ first_stage_fitted + a)
summary(second_fit)
summary(iv_fit)

这样你就不用单独跑第一阶段回归,直接从iv_fit对象里就能拿到所有需要的计算过程和结果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:32:49