计量小课:计量经济学基础
计量经济学计量小课

R² 和调整 R² 是什么关系?为什么有时候调整 R² 会小于 0?

每一个跑过回归的人,都在 Stata 输出中同时见过这两个数字:

作者:计量科研导航站发布:2026-07-29★★

一、开篇:R² 有一个"更诚实的弟弟"

每一个跑过回归的人,都在 Stata 输出中同时见过这两个数字:

R-squared     = 0.3521
Adj R-squared = 0.3387

调整 R² 永远比 R² 小一点。如果模型里变量很多而样本量不大,它会小很多。在某些极端情况下,它甚至会变成负数

这个"调整",到底调整了什么?为什么要调整?调整 R² 的出现,背后是一个 R² 本身的根本缺陷——R² 是一个"乐观"的统计量:只要你往模型里加变量,R² 一定不会下降,即使你加的是纯噪声。

调整 R² 就是这个缺陷的补救措施。它给模型的"复杂度"定价——每多用一个参数去"解释"数据,你就得在拟合优度上付出一点代价。如果新增变量带来的解释力不足以支付这个代价,调整 R² 就会下降,甚至跌成负数。

核心信息:R² = 解释变异 / 总变异,天生偏向复杂模型——加变量 R² 一定不降。调整 R² 用自由度给模型复杂度"征税"——每加一个变量,残差自由度减 1,你需要用更高的解释力来弥补。当模型的解释力极低而复杂度极高时,调整 R² 可以为负。


二、R² 的"乐观偏误"——为什么需要调整?

2.1 R² 的精确公式

R2=SSESST=1SSRSSTR^2 = \frac{\text{SSE}}{\text{SST}} = 1 - \frac{\text{SSR}}{\text{SST}}

SSR 是残差平方和。加一个变量,即使它和 Y 毫无关系(在总体中它的系数为零),在这个具体样本中,它也会因为抽样误差而"恰好"和 Y 有一点点相关——从而蹭掉一点点 SSR。

SSR 的下降是必然的,无论新变量有没有真实的解释力。 因此 R² 的上升也是必然的。

2.2 极端例子:用 9 个自变量去拟合 10 个数据点

k = 9, n = 10。你把 9 个自变量扔进去,OLS 会完美地拟合这 10 个点——残差平方和 SSR = 0,R² = 1。

但这不代表你"解释"了 Y。你只是用足够多的参数"记忆"了这 10 个数据点。换一份样本,同样的 9 个变量,R² 可能会跌到 0.3。

R² 无法区分"真正的解释力"和"对样本噪声的过度拟合"。


三、调整 R²——给每个参数贴上"价格标签"

3.1 公式

Rˉ2=1SSR/(nk1)SST/(n1)\bar{R}^2 = 1 - \frac{\text{SSR} / (n - k - 1)}{\text{SST} / (n - 1)}

3.2 它在做什么?——用"均方"替代"平方和"

普通的 R² 直接比较两个平方和(SSR 和 SST),不考虑这两个量各自的自由度。

调整 R² 把 SSR 和 SST 都除以各自的自由度,变成均方

  • SSR / (n - k - 1):平均每个残差自由度上的未解释变异(噪声均方,即 σ^2\hat{\sigma}^2)。
  • SST / (n - 1):平均每个总自由度上的总变异

两者的比值衡量的是——在"平均每份自由度"的意义上,模型没能解释掉的变异占原始变异的比例。

3.3 为什么调整 R² < R²?

从另一个等价公式可以看得更清楚:

Rˉ2=1(1R2)n1nk1\bar{R}^2 = 1 - (1 - R^2) \cdot \frac{n - 1}{n - k - 1}

关键在最后一个因子:n1nk1\frac{n - 1}{n - k - 1}

当 k > 0(模型中至少有一个自变量),n - 1 > n - k - 1 → 这个比值大于 1。所以:

Rˉ2=1(1R2)未解释比例×(> 1)自由度惩罚因子<R2\bar{R}^2 = 1 - \underbrace{(1 - R^2)}_{\text{未解释比例}} \times \underbrace{(\text{> 1})}_{\text{自由度惩罚因子}} < R^2

这个 > 1 的因子就是"复杂度税"——k 越大,惩罚越重。每多一个自变量,分母 n - k - 1 就少 1,惩罚因子就更大。


四、调整 R² 为什么会小于 0?

4.1 数学条件

调整 R² < 0 当且仅当:

R2<kn1R^2 < \frac{k}{n - 1}

即模型的 R² 低于 k/(n-1) 这个极低的阈值。

4.2 举个例子

n = 30 个观测值,k = 10 个自变量。k/(n-1) = 10/29 ≈ 0.345。

如果这 10 个变量的 R² 只有 0.20(低于 0.345),那么:

Rˉ2=1(10.20)×2919=10.80×1.526=11.221=0.221\bar{R}^2 = 1 - (1 - 0.20) \times \frac{29}{19} = 1 - 0.80 \times 1.526 = 1 - 1.221 = -0.221

调整 R² = -0.22。 什么概念?这个模型在"平均每份自由度"的意义上,它的残差噪声均方大于原始 Y 的均方——说明这 10 个变量不仅没帮上忙,反而因为消耗了太多自由度,导致平均噪声水平恶化了。

4.3 什么时候实际会遇到负的调整 R²?

  • 极其低的 n/k 比:比如 n=20,k=8。你用了 8 个参数去追 20 个数据点。
  • 自变量和 Y 几乎没有任何关联:你放的是一堆纯噪声变量(如随机生成的数字、与Y完全无关的问卷题目)。
  • 虽然 R² > 0,但只比 0 大一点点:在自由度惩罚下被拉到负值。

4.4 软件通常如何处理?

Stata 等软件不会将调整 R² 报告为负数——如果计算值小于 0,通常将其报告为 0(或仅标注为 < 0)。这在技术上是一个截断,而非数学上不会发生。在原始公式中,调整 R² 可以为负。Stata 的截断是基于"如果模型的解释力连噪声都不如,从推断角度来看模型没有可解释的信息"这一考量。


五、R² vs 调整 R²——什么时候用哪个?

使用场景 应该用 R² 还是调整 R²? 原因
描述单个模型的样本内拟合 R² 或调整 R² 均可 两者都传达有用的信息:R² 给出绝对拟合度,调整 R² 给出惩罚后的拟合度
比较嵌套模型(同一样本,不同自变量数量) 调整 R² R² 偏向复杂模型,调整 R² 惩罚复杂度——更公平
比较不同样本的模型(同 Y) 调整 R² R² 受样本量和模型复杂度影响,调整 R² 做了归一化
因果识别研究——报告核心结果 两者都不是重点 因果识别不需要 R² 来支撑可信度
预测模型——选择变量 调整 R² 或交叉验证的 RMSE 不要用 R² 选变量——它会让你选入过多噪声变量

六、实证研究中,什么样的 R² 可能存在问题?

R² 本身没有"正确"的取值范围。但在实证研究的语境下,特定的 R² 值确实值得追问。

6.1 微观调查数据的 R² 超过 0.7——反常

如果你用家庭调查数据分析工资、幸福感、学习成绩等个体层面的 Y,R² 很少超过 0.3—0.5。人类行为包含大量不可观测的异质性——个体的性格、经历、基因、偶然事件——这些不可能被你列在问卷上的十几个变量完全捕获。

当你在微观数据中看到 R² > 0.7,大概率存在以下问题之一

  • 你控制了 Y 的滞后项(Yt1Y_{t-1})——这在动态面板中合法,但它会大幅拉高 R²,而这反映的主要是 Y 的序列相关而非自变量的解释力。
  • 你控制了中介变量或反向因果变量——这些变量"吸收"了大量变异,但代价是让你的核心系数不再有清晰的因果含义。
  • 你的因变量和自变量包含了恒等式的成分——比如 Y = 总支出,X = 分类支出(食品支出、住房支出等),这时 R² 接近 1 不是发现,而是核算。

6.2 时间序列回归的 R² > 0.90——检查平稳性

在宏观时间序列回归中,高 R² 往往是两个非平稳变量在同一趋势线上漂移的结果。GDP 和人均电话保有量在 1980—2020 年间都大幅增长——它们的回归 R² 会超过 0.95。但这并不代表"电话越多 → 经济越好",这只是两个变量都随时间上升。

在时间序列中,高 R² 是检查单位根和做协整检验的信号,而非模型质量的信号。

6.3 Within R² 极低——在面板数据中通常不是问题

前文讲过,固定效应模型的 Within R² 在 0.01—0.10 之间是一个非常常见的范围——这不代表模型有问题,而是固定效应剔除个体间变异后,剩下的"个体内的逐年波动"本身就具备更大的噪声比。与横截面 OLS 回归的 R² 相比,预期值理应更低。

6.4 R² 等于 0 或非常接近 0——注意样本量

如果 n 非常小(n < 30),且你有足够多的自变量,R² 可能仍然为 0——特别是当自变量之间多重共线性严重时。在输出中看到 R² = 0.000 并不意味着"效应确实为零",而可能意味着"模型拟合完全失败"。检查样本量、检查 F 检验是否显著、检查自变量之间是否存在完全的线性依赖关系。

6.5 加了某个变量后 R² 从 0.2 跳到 0.8——追问"为什么"

一个单一变量带来 R² 的巨幅上升,说明这个变量和 Y 有极强的相关——强到了需要追问"这是因果关系吗?还是同义反复?"的地步。


七、总结:三个公式 + 一个判断原则

R2=1SSRSSTR^2 = 1 - \frac{\text{SSR}}{\text{SST}}

Rˉ2=1SSR/(nk1)SST/(n1)=1(1R2)n1nk1\bar{R}^2 = 1 - \frac{\text{SSR}/(n-k-1)}{\text{SST}/(n-1)} = 1 - (1-R^2)\frac{n-1}{n-k-1}

Rˉ2<0    R2<kn1\bar{R}^2 < 0 \iff R^2 < \frac{k}{n-1}

一个判断原则:R² 是你的模型在这份样本上的"成绩单"——但一份只看"绝对正确率"的成绩单。调整 R² 是一份"扣掉了蒙对概率"的成绩单。如果调整成绩是负数,说明你的模型的"解释力"连纯噪声都不如——你的自变量放在一起还不如随便找几个随机数。


一句话收尾

"R² 永远不会嫌弃你多加变量——来者不拒,每加一个它就开心一点。调整 R² 才是那个冷静的会计师——每加一个变量,它就在账本上给你记一笔'复杂度税'。当税超过了收益,调整 R² 就会跌到零以下——它是在告诉你:别加了,你只是在记数据,不在学规律。"


八、B站/公众号呈现建议

  • B站视频:建议用"天平动画"演示 R² 和调整 R² 的关系——左侧 R² 放入一个变量就上升一点(SSR 下降);右侧调整 R² 在同一步中先在"复杂度税"一端加砝码,再看净收益。当复杂度税大于 SSR 下降的收益时,调整 R² 往下掉。
  • 公众号:调整 R² < 0 的数学推导和实例建议用数字代入演示。R² 异常的四种场景(微观高 R²、时间序列高 R²、Within R² 低、R² 跳升)建议做成"异常信号 × 应追问原因"的对照卡片。
  • 推荐标题
    • 主标题:《R² 和调整 R² 是什么关系?为什么调整 R² 有时会变成负数?》
    • 备选标题:《R² 永远不会嫌你加变量多——调整 R² 才是一个冷静的会计师》
  • 金句提炼

    "R² 来者不拒——每加一个变量它就更开心一点。调整 R² 是那个冷静的会计师——每加一个变量就记一笔'复杂度税'。当税超过了收益,它就跌到零以下,告诉你:别加了,你在记忆数据,不是在学习规律。"