如何从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
相关产品推荐
相关产品推荐

