跳至内容

残差图详解:如何检查回归模型假设

了解什么是残差图、如何解读常见模式,以及残差图如何帮助识别非线性、异方差、离群点和其他回归问题。
更新 2026年9月10日  · 9分钟

用 AI 探索

ChatGPTClaudePerplexity

您已经拟合了一个回归模型,R² 看起来不错,系数也合乎直觉。但一张好看的摘要表可能掩盖了严重设定错误的模型。有一个散点图常常能捕捉到数字忽略的东西:残差图。

本文介绍什么是残差图、如何阅读它们、值得了解的模式,以及如何在 Python 和 R 中创建残差图。大多数初学者会完全跳过诊断这一步。看完本文,您就不会了。

什么是残差图?

残差是模型预测与实际发生之间的差:residual = observed − predicted。残差图把这些差值呈现出来。x 轴显示预测(拟合)值或某个解释变量;y 轴显示残差。一条位于零处的水平参考线代表完美预测。

围绕零随机散点:健康的残差图。图片由作者提供。

核心思想是:如果模型较好地刻画了关系,残差应看起来像噪声。围绕零随机分布、没有明显模式。一旦出现形状,模型就在传达仅靠系数无法表达的信息。

如何解读残差图

留意模式。理想情况下,不应有明显模式。这就是根本规则。残差的位置、散布和形状所揭示的内容,才是有趣之处。

位置:散点是否以零为中心?

如果残差在某些拟合值区域位于零线上方、而在另一些区域位于下方,说明模型有偏差。它在某些区域持续高估或低估。这通常指向缺失变量或直线模型无法捕捉的非线性关系。

散布:方差是否大致恒定?

从左到右扫描。如果残差的散布在所有拟合值上大致相同,这是好迹象。如果点随着拟合值增加而向外张开,方差在变化。这称为异方差性。它不会破坏系数估计,但会使标准误不可靠,这在进行任何假设检验时很重要。

形状:是否存在曲线或趋势?

平坦且无明显模式是您想要的。U 形或拱形表明模型缺少非线性项。簇或带状提示数据中存在被模型当作一类处理的子群。单个远离其他点的观测值得进一步调查。

常见残差图模式及其含义

四种提示模型问题的残差图模式。图片由作者提供。

围绕零的随机散点

理想结果。点在零线的上方和下方大致均匀分布,没有可辨识趋势,通常表明模型较好地捕捉了关系。一定程度的随机性是预期的。

弯曲的模式

弯曲或拱形的模式通常意味着存在未建模的非线性关系。模型在拟合穿过弯曲数据的直线。修正方法通常是添加多项式项(如 x²)或对自变量进行变换。这是实践中较常见的模式之一,尤其在建模房价或生长类的生物数据时。

漏斗或扇形

残差随着拟合值增大而越分越开:这是异方差性,方差并不恒定。在金融数据中很常见,因预测误差通常会随结果量级而变化。对因变量取对数变换往往是合理的第一步;加权最小二乘也是一种选择。

簇或分组

残差图中出现明显分组通常意味着数据包含模型未考虑的子群体。很可能存在应加入模型的分类变量(地区、处理组、产品类型)。如果您看到两三条紧密的带状点列,从这里入手。

大的孤立残差

单个远离其余点的观测值得一看。它可能是真实的离群点、数据录入错误,或具备异常特征的观测。不要自动删除。先理解其成因。是否保留取决于情境,而非方便与否。

对于这些模式,残差图识别的是症状而非诊断。它告诉您哪里有问题;仍需要弄清楚原因。

残差图可检查哪些回归假设?

在了解这些模式后,值得明确残差图可以、以及不能评估的回归假设。

  • 线性性:如果自变量与因变量之间的关系确为线性,将残差与拟合值作图时不应出现趋势。曲线或拱形是线性性不成立的直接视觉信号。
  • 方差恒定:漏斗形正是异方差性的样子。如果散布随拟合值增大而增大,则等方差被违背。残差-拟合值图可能是捕捉这一问题最常用的工具。
  • 独立性:如果观测具有某种自然顺序(时间、空间、受试者聚类),可以将残差与该顺序作图以检查模式。时间有序图中的残差出现趋势提示自相关。不过,普通的残差-拟合值图不一定能揭示这一点;有时需要专门的残差-顺序图。
  • 离群点和高影响观测:大的孤立残差会标记模型预测较差的观测。就“影响力”而言,即对回归线有不成比例拉动的观测,“残差 vs. 杠杆值”图比基础残差图更具信息量。

残差图无法可靠评估的一件事是正态性。平坦的残差-拟合值图并不能确认误差服从正态分布。为此,您需要一张Q-Q 图。这是一处常见混淆点,值得理清。

如何在 Python 中创建残差图

标准流程是使用 scikit-learn 拟合模型并计算残差,再用 matplotlib 可视化。下面是一个在房屋数据上进行简单线性回归的完整示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Sample data: square footage predicting home price
sqft = np.array([800, 1000, 1200, 1500, 1800, 2000, 2200, 2500, 3000, 3500])
price = np.array([150, 180, 210, 260, 300, 330, 370, 420, 500, 560])

# Reshape for sklearn and fit the model
X = sqft.reshape(-1, 1)
model = LinearRegression()
model.fit(X, price)

# Generate predictions and calculate residuals
predicted = model.predict(X)
residuals = price - predicted

# Plot residuals against fitted values
plt.figure(figsize=(8, 5))
plt.scatter(predicted, residuals, color='steelblue', edgecolors='white', s=80)
plt.axhline(y=0, color='red', linestyle='--', linewidth=1.2)
plt.xlabel('Fitted Values')
plt.ylabel('Residuals')
plt.title('Residual Plot')
plt.tight_layout()
plt.show()

关键一行是 residuals = price - predictedaxhline() 的调用添加了零参考线;没有它,图会难读得多。如果这个输出大致看起来没有模式,说明情况还不错。注意在较高的拟合值处残差更大。只有 10 个点,很难确认,但这暗示了前面讨论过的扇形趋势。

想更深入了解 Python 回归,请参阅我们的Introduction to Regression with statsmodels in Python课程,详细讲解模型拟合、假设检查与结果解读。

如何在 R 中创建残差图

R 的原生支持让这一步更容易。用lm()拟合模型后,内置的plot()函数会自动生成完整的诊断面板,其中包含残差-拟合值图。

# Same housing data in R
sqft <- c(800, 1000, 1200, 1500, 1800, 2000, 2200, 2500, 3000, 3500)
price <- c(150, 180, 210, 260, 300, 330, 370, 420, 500, 560)

# Fit the model and view diagnostics
housing_model <- lm(price ~ sqft)
plot(housing_model, which = 1) # which = 1 gives residuals vs. fitted

参数 which = 1 只绘制残差-拟合值图。若不指定,您将得到四个标准诊断图:残差 vs. 拟合值、Q-Q、尺度-位置,以及残差 vs. 杠杆值。当您想快速获得完整图景时很有用。R 还会按索引标注最极端的三个点,免去手动寻找离群点的麻烦。

想完整学习 R 中的回归,我们的Introduction to Regression in R课程自基础起讲解模型构建与诊断。

残差图与其他回归诊断图的比较

残差-拟合值图是起点,而非全貌。若干相关图可回答不同的问题。

残差图 vs. Q-Q 图

残差-拟合值图用于检查线性性和方差恒定。Q-Q 图用于检查正态性,即残差是否服从正态分布。这是两个不同问题。残差图看起来干净并不保证正态性,而 Q-Q 图也无法告诉您关于方差的信息。二者通常都需要。

两种不同的图,对模型提出两种不同的问题。图片由作者提供。

残差图 vs. 尺度-位置图

尺度-位置图(也称扩散-位置图)将绝对标准化残差的平方根与拟合值作图。它旨在检测异方差性,并且通常比原始残差图更容易识别漏斗形,因为它去除了残差的正负号,专注于散布。

残差图 vs. 残差-杠杆值图

杠杆值衡量的是观测自变量取值有多不寻常,而非模型对其预测有多差。高杠杆值叠加大残差可能是具有影响力的观测。残差-杠杆值图能识别这些组合,并通常按名称高亮最有问题的点。如果您担心高影响观测扭曲模型,请查看此图。

当残差图显示问题时该怎么办

残差图是诊断工具,而非裁决。出现模式并不意味着模型无用。以下是常见模式与后续步骤的对应:

  • 弯曲模式:考虑添加多项式项或对自变量进行变换。对 x 取对数或加入 x² 项常能把关系拉直。
  • 漏斗形:尝试对因变量进行对数或平方根变换。若无效,加权最小二乘可降低噪声更大的观测的影响力。
  • 大的孤立残差:调查该观测。先检查是否为数据录入错误。若点是合法的,考虑模型是否需要纳入导致其异常的因素。
  • 簇或分组:寻找尚未纳入的分类变量。有时为子群分别建模才是正解。

残差图显示的是症状。它不会告诉您确切原因,而且单一模式有时可能对应多种解释。把它当作提出更好问题的触发器。

阅读残差图的常见误区

  • 期待完全随机的图:真实数据是杂乱的。少量不合群的点、轻微的不对称、在极端处的一些聚集:这些都很正常。问题不在于图是否“完美随机”,而在于是否存在可被更好模型消除的系统性模式。
  • 把每个离群点都当作坏数据:大残差意味着模型对该观测预测不佳。不代表该观测是错误的。有时离群点是数据集中最有意思的点。只有在理解其成因后再考虑删除。
  • 认为残差图能证明正态性:并不能。干净的残差-拟合值图告诉您线性性和方差恒定。正态性需要 Q-Q 图。这两种诊断是互补而非可替换的。
  • 脱离背景读图:时间序列模型的残差图应与横截面数据的残差图区别解读。何谓“令人担忧的模式”取决于数据结构、样本量以及模型用途。在预测模型中值得修复的模式,在探索性分析中可能可以忽略。

结论

拟合模型、查看摘要、对 R² 感到满意:大多数人到此为止。残差图是此后要看的内容,它常常讲述不同的故事。围绕零的随机散点是您想要的。曲线、漏斗、分组以及极端的孤立点,各自都提示模型尚未考虑到的因素。

没有一张图能给出全貌。将残差-拟合值图与 Q-Q 图(正态性)、尺度-位置图(方差)配合使用;若关心高影响观测,再看杠杆值图。每一张图都在回答不同的问题。

如果想进一步学习,我们的Intermediate Regression with statsmodels in Python课程深入讲解假设检验,包括当诊断图标记出问题时如何应对。若想更全面理解回归假设与模型评估,我们的 Python 线性回归假设教程是一个自然的下一步阅读。


Vinod Chugani's photo
Author
Vinod Chugani
LinkedIn

Vinod Chugani 的职业生涯始于东京,曾任摩根大通最年轻的对冲基金销售台负责人,随后在雷曼兄弟创下个人销售纪录,之后又打造了覆盖 30 个国家的电子分销业务,营收突破 1 亿新元,随后转向数据领域。他毕业于杜克大学经济学专业,亦为 NYC Data Science Academy 校友,并在 100 多名申请者中成为Hugo Bowne-Anderson 在 Maven 开设的 “Building AI Applications” 课程的三位奖学金获得者之一。目前,他为 DataCamp、KDnuggets、Machine Learning Mastery 和 Statology 撰稿,内容涵盖从统计学到代理式 AI 等主题,并在 NYC Data Science Academy 指导数据从业者,已完成超过 1,000 场一对一辅导。

 

FAQs

当残差图出现弯曲模式时意味着什么?

弯曲或拱形的模式通常表明您的自变量与因变量之间存在未被模型捕捉到的非线性关系。由于线性回归拟合的是直线,真实关系中的任何弯曲都会以残差中的系统性曲线形式表现出来。常见的修正是添加多项式项(如 x²)或对自变量进行对数或平方根变换。

在正态数据集中,应预期有多少残差看起来像离群点?

对于误差服从正态分布且拟合良好的模型,约有 5% 的标准化残差会由于随机性落在 ±2 之外,且少于 0.3% 落在 ±3 之外——因此少数极端点是预期之内的,并非自动代表问题。您需要观察的是这些点是否形成某种模式,或是否存在单个点的残差异常到值得作为潜在数据问题进行调查。

我可以用残差图检查所有回归假设吗?

不能——而且这正是一个常见的混淆点。残差-拟合值图有助于检查线性性、方差恒定,并且如果按观测顺序作图,还可能检查独立性。它无法可靠评估正态性;为此,您需要 Q-Q 图。对于具有影响力的观测,“残差 vs. 杠杆值”图更具信息量。把残差图视为第一道诊断,而不是唯一的诊断。

残差图与尺度-位置图有什么区别?

二者都评估方差,但方式不同。残差图显示原始残差(正负都有)与拟合值的关系——有助于发现整体模式,包括曲线和分组。尺度-位置图显示标准化残差绝对值的平方根(均为正)与拟合值的关系,更适合隔离异方差性。如果漏斗形较为微妙,尺度-位置图通常更容易看出。

如果残差图显示有大的孤立残差,我应该删除离群点吗?

并非自动如此。大残差意味着模型对该观测预测不佳——不代表该观测不正确。在删除任何点之前,先检查它是否为数据录入错误、是否为异常但合法的个案,或是否超出了模型适用范围。为改善残差图而删除有效数据是一种模型操控。若该观测是合法的,更诚实的做法是承认模型的局限性,或探索不同的模型结构。

残差图中的异方差性实际上会影响什么?

漏斗或扇形模式不会使您的系数估计有偏——模型仍能给出正确的平均效应。出问题的是标准误的可靠性,进而影响 p 值和置信区间。如果您仅将回归用于预测,影响可能较小;如果要进行假设检验或构建置信区间,则需要对因变量进行变换,或使用针对不等方差的标准误修正。

残差图在多元回归中是否同样适用?

会的,而且在多元回归中它们的重要性可以说更高,因为模型可能出错的方式更多。标准做法是先将残差与拟合值作图获得总体视图,然后分别与各个自变量作图,以检查模型可能遗漏的非线性关系。解读规则相同:寻找模式,并调查任何系统性现象。

时间序列回归与横截面回归中的残差图有何不同?

在横截面回归中,您关注的是残差-拟合值图中的空间模式——曲线、漏斗、分组。在时间序列回归中,您还需要检查残差是否随时间相关,因为自相关违反独立性假设并使标准误不可靠。将残差与时间索引作图,留意趋势或振荡模式;Durbin-Watson 统计量也可用于检验一阶自相关。单靠残差-拟合值图无法捕捉这一点。

主题
数据分析
数据科学

与 DataCamp 一起学习

Courses

统计思维案例研习

4小时
16.2K
将统计思维应用于真实数据集,提炼可执行洞察,迈向精通。
查看详情Right Arrow
开始课程
查看更多Right Arrow