City Background
统计

理解误差

LOSSES

上帝有一块石碑,记录了这个世界上的一切事实。但是作为凡夫俗子,我们没有瞥见其一角的能力,只能用我们自己的双手丈量这个世界,以图看到一部分的真实。这就是统计学在做的事情。

我们没有能力测量世界上每一个人的每一个每一个细胞尺寸为何、如何工作。所以我们牺牲了一些精确性,这是与科学研究相伴的必要妥协。这种被损失掉的精确性就是「误差」。

比如你想要知道「全世界所有人类的平均体重」。但你又不可能把所有人都量一遍,你能做的只是抽一批样本,用样本的均值去逼近那个真实的总体均值。尽管上帝石碑上那个值是固定不变的,但你每次抽到的样本不同,算出来的均值就不同。

用统计话语来描述,我们在做的就是 用有噪声的、有限的样本,去推断一个永远不可直接观测的总体特征。 我们永远得不到精确解,只能找最优解。

我们在做任何统计行为的时候,都是在通过各种技术猜测上帝石碑上的数字。它是固定的常数,不是随机变量,没有分布。但我们用数据估计出来的统计量存在一个「抽样分布」,因为它会随着你每次抽到的样本不同而跳动。

造成这个随机跳动的就是误差。

让我们把这种跳动看得更清楚一点。假设你真的想知道全人类的平均体重,但你图省事,只测了附近一所高中里所有学生的体重,然后拿这个数字当作全人类的均值。会发生什么?

高中生的体重分布和全人类肯定不一样,他们的体重普遍更轻,这个群体里面不会有七八十岁的老人或三岁的幼儿。你的样本里缺了老人,缺了小孩,缺了那些不去上学的人。我们通过一个有偏的抽样方法,算出来了一个均值自然是有偏的,离「全人类的平均体重」差着一截。

这就是一种误差,一种由抽样方式造成的误差:你抽到的人不能代表你想了解的整体。

观测量 = 模型 + 误差

误差并不只是这一种。还有一种误差,和你抽到谁无关,而是和你「想到了什么」有关。哪怕你把全人类每个人都量了一遍,只要你没有把所有影响体重的因素都考虑进去,你的模型和现实之间仍然会有差距。这种不一致是误差的另一种来源。

任何统计模型都可以写成这个形式:

观测量 = 模型能解释的部分 + 模型解释不了的部分

模型能解释的部分,是你放进去的那些参数和自变量共同决定的,模型解释不了的部分,是我们没有穷尽所有变量导致的随机扰动。

举个例子,比如你想要研究「摄入热量」对「体重」的影响。你希望控制各种无关的额外变量,但让我们掰手指数数到底有多少种潜在需要被控制的变量:菜是谁种的、调料加多少、在哪里吃的、吃的时候开不开心……我们可以坐在这里列三天三夜,永远都不肯能列举得完。

所以我们只能根据研究者的经验列入主要的影响因素,并且舍弃那些次要的或者不好测量的因素,承认他们是模型无法解释的部分。这个「解释不了的部分」是模型设定误差 ε,是另外一种由模型结构设计造成的误差。

误差需要满足什么条件

假设我们要建立一个线性回归模型,预测「给定热量摄入,一个人的体重是多少」。这个模型有两个参数:斜率告诉你多摄入一千卡体重会增加多少,截距告诉你当热量摄入为零时体重的基准值。

我们用样本均值去逼近石碑上的真值,误差是每次抽样都会产生的随机跳动。但「随机跳动」有一个隐含的前提:随机跳动无限次之后,积累的均值必须为零,而不是系统性的偏向某一侧。如果误差系统性地偏向一侧,那不管你抽多少次样本,样本均值收敛的终点就不是石碑上的真值,反而变成了一个偏移之后的错误位置。这就是误差必须满足的核心条件: E(ε) = 0。错误的抽样手段、错误的模型结构设计都有可能会导致这个预期被违反,进而引导研究者得出错误的结论。

误差可以大可以小,可以这次正那次负,但平均下来必须是零。

这个条件不能靠数据来验证,因为你永远看不见真值,也就永远算不出真正的误差。它只能靠实验设计来保证,是研究者在动手之前就必须回答的问题:我的抽样方式、测量方式,有没有任何系统性的原因会让误差整体偏向某一侧?

如果这个条件被破坏,会发生什么,取决于那个偏移和自变量有没有关联。

假设你用来测体重的秤整体偏重两公斤,每个人的体重读数都系统性地多了两公斤。这个偏移和热量摄入没有关系,胖的人不会多偏,瘦的人也不会少偏。这种情况下,OLS 会把这个非零均值整个吸收进截距里,斜率系数不受影响。但截距从此是错的,整条回归线整体上移了两公斤。你对「多摄入一千卡会增重多少」的判断仍然准确,但你用这个模型对任何一个人做出的体重预测,都会系统性地高估两公斤。你以为在预测一个人的体重,实际上预测的是他站上一台坏秤之后的读数。截距的偏误会污染模型给出的每一个预测值。

但假设你遗漏了运动量这个变量。运动量同时影响体重,也和热量摄入相关,你总是得把热量缺口补上不是。这时候误差里藏着运动量的效果,而这个效果和自变量热量摄入是相关的。任何统计模型优化方法都无法区分「热量带来的体重变化」和「运动量带来的体重变化」,只能把两者混在一起归到热量的系数上,这样我们就得到了一个错误的斜率。

你以为在估计热量对体重的纯粹影响,实际上估计的是热量和运动量的混合效果。

你永远看不见真正的误差

让我们再来看看,对于「摄入热量影响体重」这个研究议题,上帝石碑上的东西和我们手头的丈量之间,到底差了什么。

上帝的石碑上有一个近乎无限长的回归模型,事无巨细地列出了每一个会影响体重的因素:菜是谁种的、调料加了多少、吃饭时的心情、睡眠质量、基因、肠道菌群的构成…… (你一定很想看看这个公式到底长什么样,但这不是凡人可以拥有的特权。)

当你决定从这张无限长的清单里,选出你认为最重要的几个变量来研究,那些被你搁在一边的变量可没有消失。它们依然在影响着每个人的体重,只是你选择不去追踪它们了。这些被你忽略的变量加在一起,就自然地构成了误差 ε。

误差不是测量失误,不是仪器不准,它们是你主动做出的取舍的总和。它是上帝石碑上的既定事实,只是你把它推到了模型视野之外。

因为我们永远看不见上帝石碑上的公式,所以同样地我们永远看不到真实的误差,我们只能估算误差为何。这个估算,就是我们手里的回归模型所无法解释的那部分,统计学上把它叫做残差。

残差不是误差本身,它是我们对误差的最佳猜测。你能对模型做的一切诊断,都是拿着残差在做,并默默假设它足够忠实地代理了那个永远不可直视的真实误差。

换言之,这是属于上帝的公式:误差 = 观测量 − 真实模型,而这是属于凡人的公式:残差 = 观测量 − 估计模型。

真实模型我们永远不知道,你只能拿残差来代替误差做诊断。

误差的分布也必须一视同仁

我们说误差必均值为零,这是第一个要求。但其实这还不够。

让我们把研究题目重新 Framing 成「热量摄入如何影响体脂肪」。假设你的数据来自两个渠道:一半受试者在家里用体脂仪测量,另一半在实验室里用 X 光做身体成分分析(DEXA)。家用体脂仪通过微弱电流测定身体阻抗来推算脂肪比例,它的读数会随着你喝了多少水、室温是多少、两只脚踩在电极上的方式而飘动。DEXA 扫描在受控环境下进行,误差小得多,也稳定得多。

这两组人的误差各自平均下来可能都是零,没有系统性偏向,实验设计没有问题。但两组误差的分散程度结构性地不同。家用仪器用户头上顶着一团更大、更混乱的噪声;实验室用户的误差安静得多。

如果我们把这两组数据混在一起建一个模型。模型在拟合的时候,会把每个人的残差当成同等可信的信号来对待。它不知道某些人的残差里有一大块是设备噪声,和热量摄入毫无关系;它也不知道另一些人的残差更干净,更值得被认真倾听。它只是平等地对待了所有人,用一把统一的尺子丈量了两种完全不同的噪声。

「多摄入一千卡,体脂肪会增加多少」这个系数还是能朝上帝石碑上的数字收敛,方向不会出错。但你用来判断「我的估计有多不确定、这个结果值不值得相信」的那把尺子,是建立在「所有人的误差分散程度大致相同」这个假设上的。这个假设在这里是错的,所以那把尺子坏掉了。你找到了方向,却失去了判断自己是否真的找到它的能力。

最后

常见的统计方法没有假设误差一定服从正态分布,如果你有这个印象,那么你是把其他概念跟误差混在一起了。这一点只在小样本上(n < 30)上面才是一个问题,跟抽样的参数分布有关系,本篇不详细展开。但如果你已经决定做小样本了我还是推荐你去用更符合小样本的分析方法而不是在你的分析里硬凑。

Comments

Loading animation

Loading comments...