回归模型的方差分解:R² 和 F 检验的背后是什么?
回归模型的方差分解:R² 和 F 检验的背后是什么?
一、开篇:三个看似独立的知识点,其实是一条逻辑链
学完初级计量,你头脑里至少有三个关于回归模型的独立记忆:
- 方差分解:SST = SSE + SSR。总平方和 = 解释平方和 + 残差平方和。背下来了,但不知道它除了用来算 R² 还能干什么。
- R²(拟合优度):"模型解释了 Y 变异的百分之多少"。0.8 就比 0.3 好——但 R² 到底是什么除以什么?为什么加变量 R² 一定涨?
- F 检验:Stata 输出表最下面一行那个 F 统计量。"检验所有系数是否联合为零"。但 F 统计量为什么和 R² 有关系?
如果你也觉得这三个东西"知道但没打通",这篇文章就是给你写的。方差分解是根,R² 是果实,F 检验是果实的一种特定用法。 它们共用一套分子和分母,只是做分母和分子的东西不同。
核心信息:方差分解把 Y 的总变异劈成两半——被模型解释的(SSE)和没被解释的(SSR)。R² = SSE/SST,是"解释了多少比例"。F 统计量 = (SSE/k) / (SSR/(n-k-1)),是"平均每个变量解释的变异"和"平均每个自由度剩下的噪声"的比值。 三样东西共享同一组原材料(SSE 和 SSR),只是做了不同的"菜"。
二、方差分解——Y 的总变异被劈成了两半
2.1 三个平方和的定义
对于标准线性回归模型 ,OLS 估计后,Y 的总变异被分解为三块:
SST(Total Sum of Squares,总平方和):Y 的总变异——每个观测值和 Y 均值的偏离的平方和。如果没有任何自变量,这就是你面对的所有"需要被解释的东西"。
SSE(Explained Sum of Squares,解释平方和,也叫回归平方和 ESS 或 Model SS):模型的拟合值 和 Y 均值之间的偏离的平方和。这是"模型帮你去掉的那部分变异"——你的自变量们能解释的。
SSR(Residual Sum of Squares,残差平方和,也叫 RSS):实际观测值 和拟合值 之间的偏离的平方和。这是"模型没解释掉的、剩下来的"——残差的平方和。
记号提醒:不同教材和软件对 SSE 和 SSR 的命名恰好相反。本文使用 SSE = 解释平方和,SSR = 残差平方和。你在读其他资料时,请确认作者用的是哪套命名体系。
2.2 方差分解的几何直觉
想象一个 n 维空间中的向量。Y 的实际观测值减去均值后,形成一个向量 。你的自变量张成一个子空间(列空间)。OLS 做的事情,就是把 正交投影到自变量张成的子空间上——投影的长度(平方)就是 SSE,投完影剩下的垂直距离(平方)就是 SSR。
SST = SSE + SSR 之所以成立——而且 SSE 和 SSR 之间没有交叉项——正是因为 OLS 的正交投影保证了拟合值和残差是正交的。 不是"巧合",而是 OLS 这一方法的几何本质决定了残差和拟合向量必然垂直。
2.3 ANOVA 表——方差分解的"标准输出"
大部分回归软件会以 ANOVA(方差分析)表的形式报告方差分解:
| 来源 | 平方和(SS) | 自由度(df) | 均方(MS = SS/df) |
|---|---|---|---|
| 模型(Explained) | SSE | k | SSE / k |
| 残差(Residual) | SSR | n - k - 1 | SSR / (n - k - 1) |
| 总计(Total) | SST | n - 1 | SST / (n - 1) |
自由度那一列的含义:
- SST 的自由度是 n-1,因为用了一个自由度估计 Ȳ。
- SSE 的自由度是 k,因为模型用了 k 个系数(不算截距)来"吸收"变异。
- SSR 的自由度是 n-k-1,这是残差中独立信息的数量——也是前一篇讲"残差自由度"的延续。
三、R²——方差分解的第一种用法
3.1 R² 的两种写法
两种写法说的是一回事:R² = "被模型解释的变异"除以"总变异"。
如果 R² = 0.35,意思就是"Y 的总变异中,35% 可以被自变量的线性组合解释,65% 是模型没解释掉的残差变异"。
在一元回归中,R² = r²(相关系数的平方)——上一篇已经推导过了。在多元回归中,R² 是 Y 和所有自变量线性组合之间的**复相关系数(Multiple Correlation Coefficient)**的平方。
3.2 R² 的三个常见误解和纠正
误解一:"R² 越大,模型越好。"
纠正:R² 衡量的是样本内拟合程度,和模型的因果解释力毫无关系。一个 R² = 0.98 的时间序列回归可能完全是伪回归(两个有趋势的变量放在一起跑);一个 R² = 0.05 的因果识别研究,如果识别策略过硬,其可信度远超前者。
此外,R² 的定义本身就决定了——加变量,R² 一定不降。 因为即使新增的变量和 Y 毫无关系,OLS 也能找到"恰好在这个样本中"有一点点相关的取向来蹭一丁点 SSE。这意味着 R² 向"多加变量"倾斜——它是模型复杂度的"乐观估计"。
误解二:"R² 低说明模型没用。"
纠正:这取决于你的研究目标。如果你的目标是预测——低 R² 确实意味着你的预测不精确。但如果你的目标是因果识别——R² 低不等于"估计不可信"。因果识别的核心是 的无偏性和一致性,这是遗漏变量偏误的问题,不是 R² 的问题。一篇因果识别的论文 R² 只有 0.05 完全可以是非常出色的研究。
误解三:"可以通过 R² 来比较不同 Y 变量的模型。"
纠正:不能。R² 的大小受 Y 的变异程度影响极大。如果你在两个不同数据集上研究"工资的决定因素"和"身高的决定因素",即使自变量完全相同,R² 也可能天差地别——因为工资的个体变异远大于身高的个体变异。R² 不具有跨 Y 变量的可比性。
3.3 调整 R²——对"加变量一定涨 R²"的补救
调整 R² 的核心思想:用**均方(MS)**替代平方和(SS)。每加一个变量,SSR 可能略微下降,但自由度也少了一个。调整 R² 在分子和分母同时考虑了"模型复杂度"的代价。当一个新增变量带来的 SSR 下降不足以弥补丢失那一个自由度的代价时,调整 R² 就会下降。
在实践中,调整 R² 是比 R² 更合理的模型比较指标(在同一个 Y 变量下)。
四、F 检验——方差分解的第二种用法
4.1 F 统计量的方差分解表达
回归输出的 F 检验,原假设是:
即所有 k 个斜率系数同时为零——整个模型"一个有用的变量都没有"。
F 统计量的构造直接来自 ANOVA 表的"均方"列:
分子:平均每个自变量贡献的解释变异(SSE 除以 k 个自由度)。如果自变量们确实有解释力,这个值应该大。
分母:平均每个自由度剩下的噪声(SSR 除以 n-k-1 个自由度)。这是"在没有自变量信息的情况下,你能预期的、纯噪声级别的均方变异"——也就是误差方差的无偏估计 。
所以 F 统计量在问:"模型平均每个变量解释的变异,比起纯噪声的水平,大了多少倍?"
如果 F ≈ 1,说明模型解释变异的能力和噪声水平差不多——自变量们整体上没什么解释力。如果 F >> 1,说明解释变异远远超过噪声水平——不太可能是随机波动造成的。
4.2 F 统计量的 R² 表达
从 R² 的定义出发,可以把 F 统计量完全用 R² 来表达:
这个表达式揭示了 R² 和 F 之间的精确关系:
- 给定 n 和 k,R² 越高 → F 越大 → 越可能拒绝"所有系数为零"的原假设。
- 给定 R²,n 越大 → F 越大。换句话说,大样本下,即使 R² 很低(比如 0.02),F 检验也可能显著——因为样本量会让你确信"那 2% 的解释力不是随机波动"。
- 给定 R² 和 n,k 越大 → F 越小。因为分母中的 k"惩罚"了使用更多变量来达到同样的 R²。
一个实战例子:假设你有一个 n=1000 的样本,回归的 R²=0.02,k=5。代入公式——F ≈ 4.06。在 5 和 994 的自由度下,p 值很可能小于 0.01。这意味着,尽管模型只解释了 Y 变异的 2%,这 2% 在统计上是显著不为零的——因为大样本给了你足够的分辨力。
这揭示了一个重要的不对称性:F 检验显著不代表 R² 高,R² 低不代表模型"没发现任何东西"。F 检验回答的是"解释力是否为零",R² 回答的是"解释力有多大"——这是两个不同的问题。
五、方差分解对实证研究的启示
5.1 R² 不是你的朋友——在因果识别研究中
做因果推断时,有些研究者会下意识地希望 R² 高——"说明模型解释力强"。但高 R² 在因果识别中其实是一个暧昧的信号。
如果你的回归 R² = 0.95,有两种可能:
- 你真的找到了所有重要的决定因素(好的解释)。
- 你加入了很多内生的控制变量——包括那些本身就被 Y 影响的变量、或者和 X 来自同一个遗漏原因的中介变量。这些变量"吸收"了大量变异,但让你的核心系数估计变成了某种因果混杂体。
在因果推断的经典论文中,R² 通常在 0.05—0.30 之间。这不是模型"不好"——而是研究者故意只控制了"需要控制"的混淆变量,没有为了解释力而堆变量。
5.2 方差分解视角下的"模型比较"
如果需要比较两个嵌套模型(模型A是模型B的子集——即模型A的变量是模型B变量的子集),可以用偏 F 检验:
分子衡量的是"新增那 (k_B - k_A) 个变量使残差平方和减少了多少"(平均到每个新增变量上),分母仍然是噪声水平。这个检验等价于对"新增变量的系数同时为零"做联合检验。
这比"每个变量的 t 检验是否显著"更加严格——有时候单个变量不显著,但一组变量联合显著,偏 F 检验能捕捉到这种情况。
5.3 方差分解视角下的"异方差"
如果误差是异方差的——即 不是常数,而是随 X 变化——那么 OLS 仍然无偏,但方差分解的有效性会受到影响。最关键的是,基于"MS_Residual = σ²"这个均方等价性构造的 F 统计量,其分布不再是精确的 F 分布——你在异方差下用的标准 F 检验给出的 p 值是错的。此时需要使用异方差稳健的标准误和相应的 Wald 检验。
六、总结:一条公式串起三个概念
从同一条公式出发——
三种不同的"用法"给出了三种不同的信息:
| 用法 | 公式 | 回答的问题 |
|---|---|---|
| R² | SSE / SST | "模型解释了多少比例的变异?" |
| 调整 R² | 1 - (SSR/(n-k-1)) / (SST/(n-1)) | "在惩罚模型复杂度后,模型解释了多少?" |
| F 检验 | (SSE/k) / (SSR/(n-k-1)) | "模型整体的解释力显著大于零吗?" |
一组平方和,三个统计量,回答三种不同但相互关联的问题。 理解方差分解,就等于同时理解了 R² 和 F 检验。
一句话收尾:
"方差分解是 OLS 的几何本质——把 Y 投影到自变量空间上,看'被投影'的部分和'没被投影'的部分各有多大。R² 告诉你比例,F 检验告诉你这个比例是否显著不为零。两者都在说同一件事——你的模型,在多大程度上,不是在对着噪声说话。"
七、B站/公众号呈现建议
- B站视频:核心视觉建议用"投影"动画——Y 向量(减去均值后)投影到 X 张成的平面上,SSE 是投影长度²,SSR 是垂直残差长度²,SST 是原向量长度²。加一个变量 → 平面维度+1 → 投影必然变长(或不变),直观演示"加变量 R² 一定不降"。F 检验的直觉可以用"信号塔"比喻——SSE 是信号,SSR 是噪声,F 就是信噪比。
- 公众号:ANOVA 表建议做成和 Stata/R 输出一致的格式图,让读者有熟悉感。三个用法的对照表适合做信息图。R² 三个误解建议用"常见误区"卡片形式。
- 推荐标题:
- 主标题:《R² 和 F 检验其实是一回事——它们都来自于方差分解》
- 备选标题:《SST = SSE + SSR:这一条公式,是 R² 和 F 检验的共同祖宗》
- 金句提炼:
"F 检验回答'解释力是否为零',R² 回答'解释力有多大'——这是两个不同的问题。大样本下,2% 的 R² 也可以显著。"