上一节我们盯着一列数据看:中心在哪里,数据散不散,有没有极端值。现在把第二列数据放到旁边,问题就变了。我们不再只问“考试成绩通常是多少”,而会问“学习时间较长的人,成绩是不是也往往较高”;不再只问“每天有多少人去游泳”,而会问“天气越热,下水人数是不是越多”。
这种“两个变量是否一起变化”的问题,最容易诱发一个很自然、也很危险的跳跃:既然它们一起变化,那一定是一个导致了另一个。
先看开头那个经典例子。某城市天气越热,冰淇淋销量越高,水边救援记录也越多。于是冰淇淋销量和救援记录呈正相关。可你大概不会真的相信“冰淇淋让人溺水”。更合理的解释是:气温升高以后,人们既更愿意买冰淇淋,也更愿意下水。气温同时推高了两个量。
这就是这一节要反复练习的停顿:先承认数据里的关系,再问这个关系是怎样产生的。
相关回答的是“两个变量怎样一起变化”,因果回答的是“改变一个变量会不会让另一个变量跟着改变”。前者可以从数据中直接描述,后者需要研究设计和替代解释的共同检验。
散点图不是把两列互不相干的数据随便画在一起。图上的每一个点,都必须来自同一个观察对象。
假设我们记录 5 名学生一周的自主学习时间和小测成绩:
甲对应点 ,乙对应点 ,依此类推。横坐标和纵坐标必须属于同一名学生。如果把一列重新排序后再画,配对关系被打乱,图上的趋势也就没有原来的含义了。
通常把用来解释或预测的变量放在横轴,叫解释变量;把我们关心的结果放在纵轴,叫响应变量。不过,轴放在哪边是由研究问题决定的,不是由数据大小决定的。
第一次看散点图,不要急着找一个数字。先按下面的顺序观察:

点云从左下向右上倾斜,叫正相关:横轴变量较大时,纵轴变量通常也较大。点云从左上向右下倾斜,叫负相关:横轴变量较大时,纵轴变量通常较小。
这里的“通常”很重要。正相关不是说每一个靠右的点都必须比左边的点高。真实数据有波动,方向描述的是整体趋势。
一团点可能大致围着直线,也可能沿着 U 形、倒 U 形或其他曲线排布。还可能出现两团各自很紧的点,说明数据背后也许混合了两个群体。
所以“无明显线性方向”不等于“完全没有关系”。如果点整齐地排成 U 形,横轴当然提供了关于纵轴的信息,只是这份信息不能由一条斜直线概括。
强弱说的是点云围绕主要形状有多紧。两幅图都向右上倾斜,其中一幅点几乎贴成窄带,另一幅散得很开;它们方向相同,但前者的关系更强。
强关系也不等于因果关系。气温和季节可能让两个变量形成很紧的同步变化,却依然不是其中一个直接推动另一个。
一个远点可能是录入错误,也可能是一个真实但特殊的对象。两团点可能对应不同年龄、地区、产品类型或风险层级。看到这些结构时,先查背景,不要立刻删除,也不要急着把所有点压成一个结论。
下面的交互可以调节点云的方向和噪声。先试“强正”和“强负”,再逐渐增加噪声。你会看到,方向决定相关的正负,点偏离直线的程度会削弱线性相关。
先画图,再计算相关系数。一个数字看不出 U 形、分组和异常点,也无法告诉你某个点为什么特殊。散点图不是装饰,它是相关分析的第一道检查。
当两个变量都是定量变量,而且我们关心的是线性关系时,常用皮尔逊相关系数 概括方向和强弱。它一定在 和 之间:

不要把 读成“有 70% 的点符合关系”,也不要读成“横轴变量解释了纵轴变量的 70%”。 不是比例。它是一个没有单位的线性关系指标。
相关系数的计算式是:
公式看起来长,核心动作只有两步。
第一步,把每个观测值换成“离本列平均数多少个标准差”。例如 的标准化值为:
这样一来,原来用小时、厘米、元或摄氏度记录的数,都被换成了没有单位的相对位置。
第二步,把同一个点的两个标准化值相乘。
把这些同向和反向的贡献平均起来,就得到 。大部分点同向, 为正;大部分点反向, 为负;同向和反向互相抵消, 就靠近 。
把身高从厘米换成米,或把降雨量从毫米换成厘米,只是在整列数据上做正比例缩放。标准化以后,每个观测值离平均数仍是相同的标准差倍数,所以 不变。
摄氏温度换成华氏温度还会加上常数,但减去平均数时,这个常数会一起消失。因此,只要单位换算没有把数轴方向倒过来,相关系数就不变。
学习时间和成绩的相关系数,与成绩和学习时间的相关系数相同:
这是因为相关只描述两个变量的对称关系,不指定谁是原因,也不指定用谁预测谁。
靠近 ,只能说明“一条斜直线概括不了这组关系”。U 形、周期形或其他弯曲关系可能非常清楚, 却仍然接近 。
一个横坐标和纵坐标都远离主体点云的点,可能把 明显推高或压低。尤其是横向离点云中心很远的点,它对拟合直线有更大的拉动能力。
有人习惯把 叫强相关,但这个门槛不是数学定律。测量噪声很大的领域里, 可能已经提供不少信息;高度可控的测量里, 可能还不够。描述强弱时,要把图形、样本量、测量质量和实际问题放在一起。
某班记录 30 名学生最近两周的自主学习时间和一次小测成绩,得到 。这句话能说明什么?
先看符号。 为正,所以在这 30 名学生中,学习时间较长的人通常也有较高的小测成绩。
再看绝对值。点云应该有比较清楚的右上直线趋势,但不代表所有点都贴在线上,也不代表每多学一小时成绩都会固定增加。
接着确认范围。这个结论描述的是这 30 名学生。若他们不是从目标学生群体中合理抽取的,就不能自然推广到所有学生。
一句稳妥的结论是:“在这 30 名学生中,自主学习时间与小测成绩呈较明显的线性正相关。”
相关系数把一团点压成一个强弱分数,但很多实际问题还会继续追问:“如果横轴变量是这个值,纵轴变量大概是多少?”这时就要从描述关系走到简单线性回归。
“简单”表示模型里只有一个解释变量 ;“线性”表示我们用一条直线概括 与响应变量 的平均关系。样本拟合出的直线写成:
是实际观察值, 读作“ 帽”,表示直线给出的预测值。 是截距, 是斜率。
继续使用开头 5 名学生的数据。 是一周自主学习时间, 是小测成绩:
这 5 个点有明显的右上趋势。我们希望找一条直线,让它尽量靠近所有点,而不是只穿过其中两个点。
斜率的计算式是:
截距再由两个样本平均数确定:
这保证拟合直线会经过点 。对这组数据,、。
先计算横坐标的离均差平方和。5 个学习时间离平均数 的平方和为:
截距 是 时的预测成绩。不过,这批数据只观察了 2 到 8 小时,0 小时在范围之外,所以截距在这里主要负责确定直线位置,不必硬解释成“完全不学习就会考 53.42 分”。
这组数据的相关系数约为 。它没有单位,描述点云有很强的线性正相关。斜率约为 分/小时,带有单位,描述预测成绩随学习时间变化的速度。
在线性回归中,两者满足:
这条式子也解释了为什么换单位会改变斜率,却不会改变 。如果身高与体重的回归斜率是 千克/厘米,把厘米改成米以后,斜率会变成 千克/米,相关系数却不变。
交换横纵轴时,相关系数仍然不变;回归斜率通常会改变,而且一般不是原斜率的倒数。因为“用学习时间预测成绩”和“用成绩预测学习时间”是两个不同的预测问题。
相关系数不是斜率。看到 ,不能说“横轴每增加 1,纵轴增加 0.65”。要解释单位变化,必须读回归斜率。
直线不可能穿过所有真实数据点。第 个点的实际值与预测值之差叫残差:
残差为正,说明实际点在直线上方,模型低估了结果;残差为负,说明实际点在直线下方,模型高估了结果。
把 5 名学生逐个代入 ,得到:
例如,学习 5 小时的学生实际得 73 分,模型预测约 77.15 分,所以:
这个负残差表示模型高估了约 4.15 分。残差不是“学生的错误”,而是这条直线没有解释掉的那一部分。
我们当然能在点云上画出许多条线。最小二乘法的规则是:选择让残差平方和最小的截距和斜率。
残差直接相加会让正负互相抵消;平方以后,每个偏差都变成正数,较大的偏差还会受到更重的惩罚。对当前直线,残差平方和约为:
“最小”是相对于所有可能直线而言。它不表示残差已经很小,也不表示直线一定适合数据。若真实关系是 U 形,最小二乘仍会给出一条“最不差的直线”,但这条线依然可能讲错故事。
残差图把横轴保留为 或预测值 ,纵轴改成残差 ,并在 处画一条水平线。一个合适的简单线性模型,残差通常会在 0 上下无明显规律地散开。
如果残差图出现结构,就要停下来:
在不考虑计算舍入时,带截距的最小二乘直线会让样本残差之和恰好为 0。这个性质不能证明模型很好,因为正负残差本来就被算法平衡掉了;真正要看的是残差有没有形状,以及偏差大小是否可以接受。
先用所有成绩离平均成绩的平方和表示模型拟合前的总波动:
再比较拟合后剩下的残差平方和:
当前数据中,、,所以:
可以说:“在这 5 个观测值中,学习时间与成绩的线性模型概括了约 的成绩波动。”在只有一个解释变量且包含截距的简单线性回归里,还有:
但不能说“学习时间造成了 93.9% 的成绩”,也不能把高 当成因果证据。它只评价这条线对当前样本纵向波动的概括程度,而且样本只有 5 人,数值很容易对新数据失去稳定性。
在观测到的 范围内预测叫内插。这批学习时间介于 2 到 8 小时,用模型预测 7 小时对应的成绩属于内插:
把直线伸到观测范围之外叫外推。若预测 12 小时:
考试满分只有 100,结果已经暴露出外推的危险。数据范围内近似线性的趋势,不保证到了范围外还会继续。即使做内插,预测值也是平均趋势,不是对某个学生的保证。
横坐标远离 的点叫高杠杆点,因为它有更长的“力臂”拉动回归线。高杠杆不一定有害:如果它顺着主体趋势落在直线附近,拟合结果可能变化不大。
如果删掉某个点后,斜率、截距、预测或结论明显改变,这个点就是影响点。一个点可以有很大残差却没有高杠杆,也可以有高杠杆却几乎没有残差。判断影响不能只看它离直线多远,还要比较“有它”和“没有它”时模型怎样变化。
这里的 是 5 名学生给出的样本斜率。若换一批学生, 通常会改变。总体中真正想了解的线性斜率常记作 ,它固定但未知。
后面学习统计推断时,我们会给 构造置信区间;到第 11 页的显著性检验,还会把“总体线性斜率为 0”写成原假设:
再用斜率离 0 有多少个标准误来衡量证据。那一步需要独立观察、近似线性、误差波动大致稳定,以及小样本时误差分布没有明显偏斜和极端点等条件。本页先不计算区间和 值,只把样本回归线、残差和模型检查打牢。
斜率显著不为 0,回答的是“总体线性关联是否有证据不同于 0”,仍不自动回答“改变 是否会导致 改变”。因果解释依然取决于数据如何产生。
想象汽车在一条 U 形山谷里行驶。离谷底越远,不论向左还是向右,海拔都越高。横向位置和海拔显然有稳定关系,但一条向上或向下的斜直线都描述不好它。
如果点云左右对称,左半边的负方向和右半边的正方向会在计算中互相抵消,最后可能得到 。这个结果没有算错。错的是把“线性相关很弱”翻译成“变量没有关系”。
再想象 11 家规模相近的小店。它们的广告费和销售额散成一团,没有明显方向。第 12 家是大型门店,广告费和销售额都远高于其他店。把它算进去,相关系数可能突然变得很大。
这个远点既可能是异常点,也可能有高杠杆。所谓高杠杆,是它的横坐标离主体点云很远,因此很能拉动拟合直线。如果删掉它以后直线斜率和结论发生明显改变,它还是一个影响点。
异常点不等于错误点。遇到它时,按这个顺序处理:

为了让结论“更漂亮”而删除异常点,会把分析变成挑选证据。可以检查异常点,可以做敏感性比较,但不能只因为它破坏了想要的趋势就把它扔掉。
某研究小组记录 12 家门店的广告费用和当月销售额。前 11 家点分布很散;第 12 家的广告费与销售额都远高于其余门店。全部数据的 ,去掉第 12 家后 。怎样写结论?
先描述图。主体的 11 家门店没有明显线性趋势,第 12 家在横向和纵向都远离主体点云。
再比较数字。 从 变成 ,说明整体的强正相关几乎由这个点决定,结论对它非常敏感。
有时每个分组内部都有一个方向,合并之后却出现另一个方向,甚至正负完全反转。这叫辛普森悖论。
它听起来像数学魔术,其实是加权比例在起作用:不同组的基准难度不同,而两种方案进入各组的人数比例又不同。合并数据时,组别构成可能盖过组内差异。
某培训机构比较两种学习方案。学员同时来自基础课程和进阶课程,进阶课程更难。结果如下:
在基础课程里,方案甲通过率更高;在进阶课程里,还是方案甲更高。直觉会说:那合起来当然也是甲更高。
但实际合并后:
总体上反而是方案乙更高。
原因不在算术,而在分组构成。方案甲的大多数人参加更难的进阶课程,方案乙的大多数人参加较容易的基础课程。课程难度同时影响方案选择结构和通过率。把难度藏起来,合并比例就讲出了相反的故事。
先比较同一难度内的方案。基础课程中甲为 、乙为 ;进阶课程中甲为 、乙为 。组内都是甲更高。
辛普森悖论给我们一个很实用的习惯:既看整体,也看有意义的分组。 但不能无限切分数据直到得到喜欢的答案。分组应该来自研究背景,例如年龄、难度、地区、风险等级,而不是事后试出来的漂亮结果。
回到冰淇淋和水边救援记录。我们观察到:冰淇淋销量高的日子,水边救援记录往往也多。
设冰淇淋销量为 ,救援记录为 ,气温为 。表面上只看到 与 一起上升,实际可能是:
气温既与解释变量有关,也与响应变量有关,还会影响我们对两者关系的判断。这种第三变量叫混杂变量。

下面的交互用同一套模拟数据展示这个过程。所有月份混在一起时,冰淇淋销量和救援记录的线性相关很强;按相近气温分层以后,各层里的相关会明显减弱。你可以切换分组开关,亲手看“整体趋势”是怎样由气温层之间的差异堆出来的。
“控制了几个变量”不等于“消除了所有混杂”。没测量到的变量、测得不准的变量和错误的分组方式仍可能留下偏差。观察数据里的调整能让比较更公平,却不能自动变成随机实验。
看到 与 相关时,别只在“A 导致 B”这一条路上走。至少要同时考虑下面五种解释。

例如,在其他条件得到良好控制时,给植物增加适量光照可能改变其生长速度。这是人们最容易想到的解释,但“容易想到”不是证据。
假设观察到“使用学习 App 越频繁的学生,成绩提高越多”。可能是 App 帮助了学习,也可能是成绩开始提高以后,学生更有动力继续使用 App。
判断反向因果,第一步是检查时间顺序。原因必须发生在结果之前。但时间在前也只是必要条件,不是充分条件。
冰淇淋和水边救援的共同原因可能是气温。鞋码和儿童阅读分数的共同原因可能是年龄。防晒霜使用量和皮肤损伤风险的表面正相关,可能来自日晒时间:晒得久的人既更常用防晒霜,也暴露在更高风险中。
即使两个变量在总体中毫无关系,小样本也可能碰巧排出一条漂亮斜线。一次分析同时尝试几百组变量时,总会有少数相关系数显得惊人。
这不是计算错误,而是随机波动。样本越小、尝试的比较越多、只展示“有意思”的结果,偶然相关越容易伪装成发现。
网上某商品有一半评价是差评,不能直接推出一半购买者都不满意。愿意主动评价的人不是从所有购买者中随机抽来的;体验特别糟或特别好的人更可能发声,沉默的大多数没有出现在数据里。
同样,只调查健身房里的会员来估计全城运动量,只用仍在使用某 App 的用户评价产品效果,只统计完成随访的病人,都会让“进入数据的方式”改变结论。
选择偏差与混杂有时会同时发生。它们的共同点是:观察到的比较对象并不代表我们以为自己正在比较的对象。
第 2 页已经详细讲过数据如何产生,这里只保留判断相关与回归结论所需的几条线。
因此,睡眠时间与成绩的观察回归线可以用来描述或预测这组学生的趋势,却不能仅凭正斜率说“强迫每个人多睡一小时就会提高多少分”。若研究者把合适的参与者随机分派到不同睡眠干预,保持其他流程一致,并妥善处理失访、未遵从方案和测量偏差,因果解释才有更坚实的起点。
随机分派支持的是处理对研究参与者的因果效应;结论能否推广到更广人群,还要看招募、随机抽样和真实使用情境。研究设计是回归分析的前提,、斜率、 或很小的残差都不能替代它。
下次看到“多做某事能提高某结果”“某食品导致某疾病”或“某城市政策降低了事故”时,可以按下面的顺序检查。

先把结论拆成解释变量、响应变量和目标人群。连研究对象与变量都说不清,后面的因果句就没有稳定含义。
看原始图和数据质量。关系是直线、曲线还是分组?是否被异常点决定?变量怎样测量?缺失值和失访是否集中在某些人身上?
确认时间顺序。解释变量的变化是否发生在结果之前?如果两者同时测量,反向因果通常很难排除。
主动列出替代解释。至少问一次反向因果、混杂变量、偶然相关和选择偏差,不要只为自己喜欢的故事找理由。
成熟的统计表达不是永远拒绝因果,而是让结论的力度与证据的力度相配。该保守时保守,该下结论时也要说清条件和范围。
某地记录每天最高气温和热饮销量。点云大致从左上走向右下,围绕一条直线分布,但散得比较开。请从方向、形状和强弱三方面描述。
城市间距离用千米记录,行车时间用分钟记录,两者相关系数为 。如果距离改用米、时间改用小时, 会怎样?如果交换横纵轴呢?
继续使用回归直线 。另一名学生一周学习 4 小时,实际小测成绩是 75 分。求预测成绩和残差,并解释残差的正负。
这条学习时间回归线的 ,原始学习时间范围是 2 到 8 小时。怎样解释 ?能否用直线断言“学习 10 小时会考多少分”,或者说学习时间造成了 93.9% 的成绩?
某游乐设施的横向位置 与轨道高度 形成非常整齐的 U 形点云,计算得到 。能不能说 与 没有关系?
一项观察发现,儿童鞋码越大,阅读测试分数通常越高。能不能说“鞋码变大会提高阅读能力”?请给出一个可能的混杂变量。
某公司招募 200 名自愿员工参加实验,并把他们随机分派到“可站立办公桌”和“普通办公桌”两组。三个月后,站立桌组报告的腰背不适更少。这个研究能支持什么?哪里仍要谨慎?
一家餐厅根据网上 800 条自愿评价发现,60% 的评价给了五星,于是宣布“60% 的所有顾客都非常满意”。这一步哪里有问题?
把这句话改得与证据相配:“使用学习 App 的学生平均分更高,所以安装这个 App 会提高每个人的成绩。”已知数据来自一次普通问卷,没有随机分派。
某学校比较两个辅导班的总体及格率,乙班高于甲班;但按基础水平分成“基础较弱”和“基础较强”后,两个层级中都是甲班及格率更高。应该只报告哪个结果?
这一节最核心的习惯,是在“相关”后面多停一步。先看散点图的方向、形状、强弱和异常情况,再用 概括线性关系;遇到曲线、远点或分组时,回到图和背景;想说因果时,检查时间顺序、混杂、反向因果、偶然性、选择偏差和研究设计。
而这里其实已经露出了下一部分的主题。为什么随机抽样能帮助推广?为什么随机分派能让组间差异更可信?为什么毫无关系的变量在小样本里也可能碰巧排出趋势?这些问题都在问同一件事:随机机制会产生怎样的结果,我们该怎样衡量这种不确定性。
下一节开始,我们把“随机”本身放到桌面上,从样本空间、事件和概率说起。
最后限制因果。原有基础、学习方法、作业投入、睡眠和课程难度都可能同时影响学习时间与成绩,所以 本身不能证明“延长学习时间导致成绩提高”。
再把每个学习时间的离均差与对应成绩的离均差相乘并求和:
两者相除得到斜率:
在这组学生中,学习时间每增加 1 小时,模型预测的小测成绩平均增加约 分。这里必须说“预测增加”或“相关联地增加”,不能改写成“多学 1 小时会导致成绩提高 4.75 分”。
用样本平均数计算截距:
因而拟合直线为:
| 2 | 62 | 62.91 | -0.91 |
| 3 | 70 | 67.66 | 2.34 |
| 5 | 73 | 77.15 | -4.15 |
| 6 | 85 | 81.89 | 3.11 |
| 8 | 91 | 91.39 | -0.39 |
接着查背景。大型门店的面积、客流、地段和库存都可能同时推高广告费与销售额,它也许不该和小店直接混为一组。
最后同时报告两种结果。可以说“合并 12 家门店时相关较强,但相似小店内部没有明显线性相关;大型门店对结果有决定性影响”。不能只留下 。
再看每种方案的学员构成。甲有 的学员在进阶课程,乙只有 在进阶课程,两种方案面对的难度构成差异很大。
因此不能只用总体通过率评价方案效果。更合理的做法是按课程难度比较,或用能调整难度构成的方法进行分析。
最后保留一个限制:即使组内甲的通过率更高,这仍不自动证明甲导致更高通过率。选择方案的方式、原有能力和投入时间还可能造成差异。
检查整体和分组。按有实际意义的变量分层后,方向是否保留?有没有辛普森悖论?分组是事先合理,还是为了挑结果?
判断研究设计。是观察研究还是随机实验?有随机抽样吗?有随机分派吗?控制、盲法、失访和依从性做得怎样?
最后让措辞匹配证据。证据只支持关联时,就写“相关”“较高者通常也较高”;证据足够支持因果时,再使用“导致”“提高”“降低”。
残差为正,说明这个点在回归线上方:学生实际成绩比模型根据学习时间给出的预测高约 2.60 分,模型对这个学生低估了成绩。
但 10 小时超出原始的 2 到 8 小时范围,这属于外推。直线关系在范围外可能不再成立,而且成绩有满分上限,所以最多只能把 100.88 视为模型机械延伸出的结果,不能当成可靠承诺。