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

实证研究中残差有什么用?——从模型验证到特殊问题分析

你跑完回归,扫了一眼 R²、系数、p 值、显著性星星——然后把结果表复制到论文里,关掉了 Stata。

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

一、开篇:回归之后,你盯着系数表看了十分钟——但你看过残差吗?

你跑完回归,扫了一眼 R²、系数、p 值、显著性星星——然后把结果表复制到论文里,关掉了 Stata。

你漏掉了一个最重要的诊断步骤:看残差。

残差 ei=YiY^ie_i = Y_i - \hat{Y}_i,即实际观测值和模型预测值之间的差距。大多数人把它当成回归的"副产品"——一个需要被最小化的干扰项。但实际上,残差是回归分析中最诚实的信息来源。系数告诉你"X 和 Y 的平均关系是什么",残差告诉你"这个平均关系在哪里破裂了、在哪里被扭曲了、在哪里有一个数据点正在孤零零地推翻你的全部结论"。

核心信息:残差是模型和数据之间的"对话记录"。每一个残差都在告诉你:这个数据点被模型解释得好不好?模型中是否遗漏了重要的非线性或交互效应?误差方差是否均匀——还是说在某些区域模型的预测系统性地偏离了现实?系数和 R² 告诉你模型的"平均表现",残差告诉你模型的"死角"——那些平均掩盖掉的不安信号。不看残差就跑回归,等于不看仪表盘就起飞。


二、残差是什么?——不只是"预测误差"

2.1 真实误差 vs 观测残差——一个关键区分

Yi=β0+β1Xi+εi(真实模型)Y_i = \beta_0 + \beta_1 X_i + \varepsilon_i \quad \text{(真实模型)} Yi=β^0+β^1Xi+ei(估计模型)Y_i = \hat{\beta}_0 + \hat{\beta}_1 X_i + e_i \quad \text{(估计模型)}

  • 真实误差 εᵢ:你永远看不到。它是真实的 Y 和真实的回归线之间的垂直距离。
  • 观测残差 eᵢ:你能算出来。它是观测到的 Y 和你估计出的回归线之间的垂直距离。

残差 ≠ 误差。 残差是误差的"估计版本"——它受到你模型设定的限制。如果你的模型是错的(比如遗漏了 X²),残差里就不仅包含噪声,还包含了模型设定错误的系统性成分。这正是残差分析的起点——你通过观察残差中的"模式"来推断模型是否被错误设定。

2.2 残差的几个基本性质

在 OLS 框架下,残差有以下几个始终成立的性质:

  • ∑eᵢ = 0 —— 残差之和为零(只要模型包含截距项)。
  • ∑Xᵢeᵢ = 0 —— 残差和每个自变量的样本协方差为零。这是 OLS 一阶条件的直接结果。
  • ē = 0 —— 残差均值为零。

这些性质是 OLS 的代数结果——它们永远成立,无论模型的假设是否被满足。正因为这些性质永远成立,它们不能用来检验模型假设。


三、用残差验证模型假设——四大诊断

OLS 的经典假设(外生性、同方差、无自相关、正态性)中,有三条是可以通过残差来间接检验的。

3.1 同方差性检验——残差 vs 拟合值的散点图

假设Var(εiXi)=σ2\text{Var}(\varepsilon_i \mid X_i) = \sigma^2(误差方差为常数,不随 X 或 Y^\hat{Y} 变化)。

诊断工具rvfplot(Residuals vs Fitted Values Plot)。

reg y x1 x2 x3
rvfplot, yline(0)

纵轴是残差 eie_i,横轴是拟合值 Y^i\hat{Y}_i

健康模型的典型图景:残差随机地、均匀地散布在零线上下,没有明显的"喇叭形""扇形"或"漏斗形"——即残差的散布宽度在 Y^\hat{Y} 的整个取值范围内大致相同。

异方差的典型图景

  • 喇叭形(开口向右):残差随 Y^\hat{Y} 增大而发散 → Var(ε) 随 Y 增大而增大。常见于收入、企业规模等右偏数据。
  • 纺锤形(中间宽两头窄):残差在 Y^\hat{Y} 中间大、两端小。
  • 系统性的弧线或弯曲:可能意味着遗漏了非线性项或交互项——这比异方差更严重,它是模型设定错误。

正式检验

  • Breusch-Pagan 检验estat hettest。H₀: 同方差。p < 0.05 → 拒绝同方差 → 存在异方差。
  • White 检验estat imtest, white。比 BP 更通用(不假设异方差的具体形式),但在小样本中功效较低。

如果发现异方差:使用稳健标准误(reg y x, robust)——这不改变系数估计,只修正标准误和推断。

3.2 正态性检验——残差的分布形态

假设εN(0,σ2)\varepsilon \sim N(0, \sigma^2)(误差服从正态分布)。

注意:在大样本下(n → ∞),由于中心极限定理,OLS 估计量渐近正态——即使误差不服从正态分布,t 检验和 F 检验在大样本下也近似有效。正态性假设在小样本中才是关键。

诊断工具

(a)核密度图 + 正态参考线

reg y x1 x2 x3
predict e, residual
kdensity e, normal

(b)Q-Q 图(分位数-分位数图)

qnorm e

健康模型:Q-Q 图上的点大致沿 45 度参考线分布。偏离参考线 → 误差分布偏离正态。常见的偏离模式:

  • 上端向上翘 → 右偏(重尾在右侧)
  • 下端向下弯 → 左偏(重尾在左侧)
  • S 形偏离 → 重尾分布(比正态分布有更多的极端值)

(c)正式检验

  • Shapiro-Wilk 检验swilk e。H₀: 残差服从正态分布。p < 0.05 → 拒绝正态性。但对大样本非常敏感——n > 5000 时几乎总是拒绝。
  • 偏度-峰度联合检验sktest e。分别检验偏度 = 0 和峰度 = 3(正态分布的标准值)。

实际建议:n > 100 → 轻微的非正态性通常不是问题。n < 50 且有极端偏度或峰度 → 需要担忧。此时可以考虑 bootstrap 标准误或使用不依赖正态性假设的方法(如分位数回归)。

3.3 模型设定检验——残差中的"模式"是模型错误的信号

如果残差中存在系统性的模式(而不仅仅是随机噪声),这意味着你的模型遗漏了重要的变量、函数形式或交互效应。这是残差分析中最关键、但最容易被忽视的一步。

(a)残差 vs 各个自变量的散点图

reg y x1 x2 x3
predict e, residual
scatter e x1, yline(0) || lowess e x1, bw(0.5)

如果 lowess 平滑线明显偏离零水平线 → X₁ 和 Y 之间存在未被模型的线性形式捕获的系统性关系。常见模式:

  • U 形或倒 U 形偏离 → 遗漏了 X₁ 的平方项。
  • 单调上升或下降的偏离趋势 → X₁ 和 Y 的关系在被估计的线性模型之外还有额外的线性成分(可能是测量误差或其他相关变量未控制)。

(b)Ramsey RESET 检验(通用模型设定检验)

reg y x1 x2 x3
estat ovtest

RESET 检验在原模型中加入 Y^2\hat{Y}^2Y^3\hat{Y}^3 等高阶拟合值项,检验它们的系数是否联合显著。如果显著 → 原模型遗漏了非线性或交互效应。H₀: 模型设定正确(无遗漏的非线性)。

如果 RESET 显著:先看残差对各自变量的散点图,找出"弯曲"来自哪个变量,再考虑加入平方项、交互项或使用更灵活的函数形式。

(c)残差 vs 未放入模型的重要候选变量

如果你怀疑遗漏了变量 Z,画 e 对 Z 的散点图。如果存在明显的相关性 → Z 对 Y 有系统性的解释力,放在误差项里会导致偏误(如果 Z 和已控制的 X 相关)。

3.4 异常值和强影响点诊断——一个数据点能"劫持"你的整条回归线

(a)异常值(Outlier):Y 值异常——残差的绝对值特别大。这个点在给定 X 的条件下有一个"出乎意料"的 Y。

(b)高杠杆点(High Leverage Point):X 值异常——这个点的 X 取值极端地偏离了 X 的样本均值。它在回归线拟合中具有不成比例的影响力——因为 OLS 对远离中心的点非常敏感。

(c)强影响点(Influential Point):既是异常值又是高杠杆点——移除它之后,回归线的斜率会发生实质性的改变。

诊断工具

学生化残差(Studentized Residuals)ri=eiσ^(i)1hiir_i = \frac{e_i}{\hat{\sigma}_{(i)} \sqrt{1 - h_{ii}}}

其中 σ^(i)\hat{\sigma}_{(i)} 是删掉第 i 个观测后估计的残差标准差,hiih_{ii} 是第 i 个观测的杠杆值。学生化残差近似服从 tnk2t_{n-k-2} 分布——你可以用 ±2 作为"需要关注"的经验阈值。

reg y x1 x2 x3
predict rstud, rstudent   // 学生化残差
list if abs(rstud) > 2    // 列出需要关注的异常观测

Cook's Distance(库克距离):衡量"删除第 i 个观测后,所有拟合值的变化量",同时考虑了残差大小和杠杆值。经验阈值:Cook's D > 4/n 值得关注。

predict cook, cooksd
list if cook > 4/e(N)

DFBETA:衡量"删除第 i 个观测后,某个特定系数 β̂ⱼ 变化了多少个标准误"。|DFBETA| > 2/√n 值得关注。

predict dfb_x1, dfbeta(x1)
list if abs(dfb_x1) > 2/sqrt(e(N))

实际操作建议

  • 不要自动删除所有被标记为"异常"的观测。先检查——这些观测是数据录入错误吗?还是样本中真实存在的极端个案?(比如你研究企业绩效,苹果和亚马逊就是真实的极端值——它们不应该被删除。)
  • 如果某些观测是数据录入错误 → 修正或删除,并在论文中说明。
  • 如果某些观测是真实的极端值 → 在稳健性检验中报告"删除了这些影响点后,核心结论是否改变"。如果不变 → 你更自信;如果改变 → 你的结论对这些观测敏感,需要认真讨论。

四、残差用于特殊分析——超越模型诊断

4.1 用残差做"部分相关"分析——FWL 定理的残差视角

在 FWL 定理(见前文)的框架下,X₁ 的系数等价于以下操作:

  • 第一步:用 X₁ 对其他所有 X 做回归 → 取残差 X~1\tilde{X}_1(X₁ 的独有部分)
  • 第二步:用 Y 对其他所有 X 做回归 → 取残差 Y~\tilde{Y}(Y 的独有部分)
  • 第三步:Y~\tilde{Y}X~1\tilde{X}_1 做一元回归

残差就是"独有变异"——你用它来剥离混淆变量的线性影响。 两步残差提取 + 一步一元回归 = 多元回归中任意一个系数。这个视角在理解匹配方法、固定效应、工具变量等高级方法时不可或缺。

4.2 回归模型的"异常观测"分析——残差帮你找到故事

当你发现某些观测有特别大(或特别小)的残差时,问自己一个问题:为什么这个观测的 Y 和我模型预测的 Y 差这么多?

案例:你研究"国家的民主程度(X)→ 经济增长(Y)"。你的模型预测印度应该有较高的增长率(因为它是民主国家),但印度的残差是负的——它的实际增长低于模型的预测。为什么?

残差把你引向了一个"特殊案例"——也许是因为印度的官僚效率、种姓制度、基础设施等你的模型没有控制的独特因素抑制了增长。残差不只是统计垃圾——它是指向"故事"的路标。 在案例分析或混合方法研究中,大残差的观测往往是最值得深入研究的对象。

4.3 残差的序列相关性检验——时间序列和面板数据

在时间序列中,今天的残差和昨天的残差可能相关(Corr(et,et1)0\text{Corr}(e_t, e_{t-1}) \neq 0)——这违反了 OLS 的无自相关假设。此时 OLS 系数仍然无偏,但标准误的估计可能有偏(通常被低估 → t 值膨胀 → 虚假显著)。

诊断

残差时序图

reg y x1 x2
predict e, residual
tsline e, yline(0)

如果有明显的"波动集群"(一段时间持续为正、一段时间持续为负)→ 正自相关的典型信号。

Durbin-Watson 检验estat dwatson。DW ≈ 2 → 无一阶自相关。DW → 0 → 正自相关。DW → 4 → 负自相关。这只检验一阶自相关,且要求模型不含滞后因变量。

Breusch-Godfrey 检验(更通用):estat bgodfrey, lags(2)。可以检验高阶自相关,且模型包含滞后因变量时仍然有效。

在面板数据中:残差中的组内相关是使用聚类标准误的核心原因——同一个体在不同时期的残差往往是相关的,忽略这一点会导致标准误被严重低估。

4.4 用残差识别遗漏变量的方向——一个不太正式但有用的技巧

如果你怀疑遗漏了变量 Z(如"能力"),而 Z 的数据你拿不到,你可以利用理论和残差来推断遗漏变量偏误的方向。

思路:假设你研究教育(X)对工资(Y)的效应。你怀疑遗漏了能力 Z。已知:能力 Z 和 X 正相关,能力 Z 和 Y 正相关。遗漏 Z 意味着能力的影响被部分地归因到了教育上 → 教育的系数被向上偏误(过高估计)。

如果你进一步观察到——残差(包含了能力等遗漏因素)和教育(X)的样本相关性为正,这定性上支持了"遗漏变量和 X 正相关"的判断。这不是对遗漏变量偏误的正式检验——但它帮助你在没有 Z 的数据的情况下,合理地推断偏误的方向,并在论文中讨论。


五、残差的种类——你知道 Stata 可以输出几种不同的残差吗?

残差类型 Stata 命令 公式 用途
原始残差 predict e, residual ei=YiY^ie_i = Y_i - \hat{Y}_i 最基本的残差,用于绘制 rvfplot
标准化残差 predict e_std, rstandard ei/σ^e_i / \hat{\sigma} 将残差除以残差标准差,近似 z 分数。
学生化残差 predict e_stud, rstudent ei/(σ^(i)1hii)e_i / (\hat{\sigma}_{(i)}\sqrt{1-h_{ii}}) 更准确的异常值诊断——删除了自身后再估计 σ,并考虑了杠杆值
Jackknife 残差 同上(等价于学生化残差) 同上 用于计算 Cook's Distance 的中间量
偏差残差 predict dev, deviance 取决于模型 GLM 中的残差诊断
Pearson 残差 predict pear, pearson (Yiμ^i)/V(μ^i)(Y_i - \hat{\mu}_i)/\sqrt{V(\hat{\mu}_i)} 用于 logit/probit 等非线性模型的拟合诊断

实际建议:日常诊断用标准化残差或学生化残差。原始残差在量纲上和原始 Y 一致,但不同观测之间不可直接比较——一个"看起来大"的残差可能因为 Y 本身在这个范围内的自然变异就很大。学生化残差把这个差异标准化了,让 2 这个阈值在不同数据、不同模型中具有可比较的含义。


六、一个完整的残差诊断工作流

reg y x1 x2 x3

// 1. 同方差性
rvfplot, yline(0)          // 图形诊断
estat hettest               // BP 检验

// 2. 正态性
predict e, residual
kdensity e, normal          // 核密度图
qnorm e                     // Q-Q 图
swilk e                     // Shapiro-Wilk 检验

// 3. 模型设定
estat ovtest                // RESET 检验
acprplot x1, lowess         // 增强分量残差图(Augmented Component-Plus-Residual)

// 4. 异常值和影响点
predict rstud, rstudent     // 学生化残差
predict cook, cooksd        // Cook's Distance
predict lev, leverage       // 杠杆值
list if abs(rstud) > 2 | cook > 4/e(N)

// 5. 如果面板数据/时间序列
estat dwatson               // Durbin-Watson
estat bgodfrey, lags(2)     // Breusch-Godfrey

// 6. 如果异方差
reg y x1 x2 x3, robust      // 稳健标准误

论文中需要报告这些诊断的全部结果吗? 不需要——但你需要做过它们。通常的做法是:在论文正文中一句话带过——"模型的残差诊断(残差 vs 拟合值图、Q-Q 图及 RESET 检验)未发现严重的异方差、非正态或模型设定错误问题"——然后把诊断图表放在在线附录或应审稿人要求时提供。如果诊断发现了问题(比如异方差),你应该在正文中说明你如何处理(如使用稳健标准误)。


七、总结

残差的五条核心用途

  1. 验证同方差性:残差 vs 拟合值图(rvfplot)+ BP 检验。异方差 → 稳健标准误。
  2. 验证正态性:Q-Q 图 + 核密度图。大样本下非正态性不是严重问题;小样本下需警惕极端偏度或峰度。
  3. 检验模型设定:残差 vs 各自变量的散点图 + RESET 检验。弯曲 → 遗漏了非线性项或交互项。
  4. 诊断异常值和影响点:学生化残差 + Cook's Distance + DFBETA。标记它们,检查它们,决定是否删除或做稳健性分析。
  5. 理解和解释方法的底层逻辑:FWL 定理、固定效应、匹配方法、2SLS 都可以在"残差提取"的框架下理解。残差不只是诊断工具——它是理解计量方法工作原理的钥匙。

一句话收尾

"如果你只盯着系数和 p 值,你最多知道你的模型在'平均上'表现得怎么样。如果你看残差,你才知道你的模型在'每一个具体的点上'哪里做得好、哪里崩了、哪里有一个数据点正在用全身的重量拉扯你的整条回归线。前者给你结论,后者给你对结论的信心。"


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

  • B站视频:建议用"体检"作为贯穿全篇的隐喻。开场:一个人(回归模型)拿到了体检报告(系数表),各项指标"看起来正常"——R² 不错,系数显著。旁白:"但这只是身高体重——你看过心电图吗?"画面切到四张"心电图"(四个残差诊断图):心跳正常 → rvfplot 随机散布;心律不齐 → 喇叭形异方差;心脏骤停 → 一条弯曲的系统性偏离;一个巨大的尖峰 → 一个异常值正在引发"心脏骤停"。旁白:"残差是你的模型的体检报告——它告诉你模型哪里健康、哪里在硬撑、哪里有一个异常的数据点正在把结论拖向深渊。"然后四幕展开:第一幕"验血"——残差的分布(正态性),Q-Q 图是"验血管",偏离参考线 = 血象异常。第二幕"测血压"——异方差,残差 vs 拟合值图是"血压计",喇叭口 = 血压在飙升。第三幕"CT 扫描"——模型设定,RESET 检验是 CT,弯曲的残差是"肿瘤"(遗漏的非线性)。第四幕"排雷"——异常值,Cook's D 是"排雷器",高亮的点 = "这有一个数据点正在劫持你的回归线"。结尾画面:全套诊断报告被装订成册,封面写着"残差诊断",旁白:"下回跑完回归——先做体检,再下结论。"
  • 公众号:残差 vs 误差的区分表建议放在开篇。四大诊断(同方差/正态性/模型设定/异常值)各做成一张"诊断卡"——症状图(残差图的典型异常模式)+ 病因(可能的问题)+ 处方(Stata 命令 + 处理方案)。完整的诊断工作流建议做成代码块 + 流程图。五种残差类型的对比表做成速查卡。部分相关(FWL 定理)的残差视角建议配一个三步残差提取示意图。异常值的"真实极端值 vs 数据录入错误"区别建议做一个决策树。
  • 推荐标题
    • 主标题:《实证研究中残差有什么用?——从模型诊断到特殊问题分析》
    • 备选标题:《跑完回归之后,你看过残差吗?——四大诊断让你避免"虚假健康"的模型》
    • 新媒体标题:《系数和 R² 骗了你:为什么"看残差"是每个实证研究者必须养成的习惯?》
  • 金句提炼

    "残差是模型和数据之间的对话——每一个残差都在告诉你,这个点在模型中被解释得好不好。不看残差,等于不看对话记录就宣布这是'一段完美的关系'。"

    "系数告诉你'X 和 Y 的平均关系'。残差告诉你——这个平均关系在哪些点上破裂了、在哪些区域被扭曲了、在哪一个孤立的观测上,全部结论都站不住脚。"

    "一个数据点可以劫持你的整条回归线。Cook's Distance 和 DFBETA 是你在被劫持之前拉响的警报。"

    "异方差、非正态、遗漏非线性——这些问题不会直接写在系数表的任何一个格子里。但它们都写在残差里。"