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

使用AER包ivreg与手动2SLS得到不同R²的技术疑问

问题:IV回归中ivreg函数出现负R²的疑惑

我在R语言中使用AER包的ivreg函数做IV回归时,输出了我认为不可能存在的负R²;但手动用2SLS方法跑相同回归时,得到的R²虽小但为正。

分析后发现差异源于AER包用真实的X而非第一阶段的拟合值计算残差,这种情况在拟合效果极差时会出现,且ivreg和手动2SLS的R²始终存在差异。我想知道:AER包的R²计算是否存在错误?还是这种情况下R²确实可以为负?

复现代码

library(AER)
set.seed(40)
n <- 100

# 生成数据
Z <- rnorm(n, 10, 2)
X <- 2 * Z + rnorm(n, 0, 10000)
Y <- 3 * X + rnorm(n, 0, 1000000)
df <- data.frame(Z, X, Y)

# IV回归
ivreg1 <- ivreg(Y ~ X | Z, data = df)
summary(ivreg1)

# 手动2SLS方法
lm1 <- lm(X ~ Z, data = df)
df$predict <- predict(lm1)
lm2 <- lm(Y ~ predict, data = df)
summary(lm2)

ivreg函数输出结果

Call:
ivreg(formula = Y ~ X | Z, data = df)

Residuals:
     Min       1Q   Median       3Q      Max 
-3513062  -843258   -33611   845922  4533273 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  43430.1   165298.8   0.263    0.793
X             -114.1      131.9  -0.865    0.389

Residual standard error: 1553000 on 98 degrees of freedom
Multiple R-Squared: -1.665, Adjusted R-squared: -1.692 
Wald test: 0.7479 on 1 and 98 DF,  p-value: 0.3893 

解答

1. ivreg的R²计算并非错误

AER包的ivreg函数计算R²的逻辑和手动2SLS完全不同:

  • 手动2SLS中,你用第一阶段拟合出的predict(即$\hat{X}$)作为自变量回归Y,此时计算的是Y对$\hat{X}$的OLS拟合优度,符合普通R²的定义,自然非负。
  • 而ivreg计算R²时,用的是真实的X和IV回归得到的系数生成预测值$\hat{Y} = \hat{\beta}_0 + \hat{\beta}_1 X$,再通过公式$R^2 = 1 - \frac{\sum(Y - \hat{Y})^2}{\sum(Y - \bar{Y})^2}$计算。当IV回归的预测效果比仅用Y的均值预测还差时,残差平方和会大于总平方和,R²就会变成负数。

2. 负R²在IV场景下是合理的

IV回归的核心目标是解决内生性问题,而非最大化拟合优度。当工具变量Z和内生变量X的相关性极弱(比如你例子中X的扰动项方差极大,Z对X的解释力几乎为0),IV估计出的系数会严重偏离真实值,导致用真实X计算的预测值$\hat{Y}$对Y的解释能力还不如直接用Y的均值,此时就会出现负R²。

这种情况不是计算错误,而是IV回归拟合效果极差的直观体现——意味着你的工具变量可能无效,需要重新考量工具变量的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:00:11