协方差分析(ANOVA)说白了就是用来问:“这道菜到底咸不咸?”要么“那个新视频到底能不能留住人?”这种难题。我们平时做实验,往往想看看两组东西之间有没有啥差别,比如新药和旧药,要么两种肥料,要么两个不同的教学班级。
这时候,均值比较(t 检验)有时候不够用,出于万一两组数据根本是一模一样的,t 检验就报个“不显著”,你就不知道到底是不是没啥区别。
这时候就得请协方差分析来帮忙了。 ANOVA 的核心逻辑实际上挺好办,就是一个数学上叫“平方和”的东西。想象一下你在造房子,砌墙的时候特别费劲,那肯定是出于墙的面积大,要么墙厚了。
反过来,要是墙的面积小,那自然就省钱了。协方差分析就是想算出“不同处理组之间的差异有多大”。我们把所有数据往两个方向分开看。
一方面看那些在同一个组里,数值重复出现的次数多少;另一方面看那些不同组之间,数值重复的总次数。总重复次数减去组内重复次数,剩下的就是组间的重复次数。
这个数越大,说明组间的差异越明显。 公式这东西看着吓人,实际上是个分拆。总平方和(SST)等于组间平方和(SSB)加组内平方和(SSE)。公式里那个 n 是总样本量,那个 s 是组内自由度,那个 e 是组间自由度。
这个公式有点绕,但它的物理意义实际上挺直白。SSB 代表了组间差异带来的“噪音”要么“结构”,SSE 代表了组内混乱带来的“噪音”。
要是方差分析出来显著,说明这种组间的差异不是随机乱来的,是真存有的。 举个例子,咱们去超市做个小实验。想看看不同品牌的土豆粉哪个更耐煮。买 100 个土豆粉,分成了三组,每组 30 个,分别用了 A、B、C 三种品牌。煮的时候煮 5 分钟,量一下重量。结局发现,A 品牌煮了 24 分钟才刚好熟,B 品牌煮了 30 分钟,C 品牌煮了 15 分钟。
这里有个数据陷阱,C 品牌的样本量只有 10 个,出于总共有 100 个,减去 A 的 30 个和 B 的 30 个,只剩 10 个。
这种样本量忒少了,根据中心极限定理,C 组的均值估摸误差会比 A、B 大,这时候结论就得慎重。 这时候就用到系数了。组内平方和的系数是 1(出于每组内部都是配对观测,自由度是 k-1),组间平方和的系数是 1(出于每组之间也是独立分组,自由度是 k-1),什么的。算出来 SST 是 100,SSB 是 300,SSE 是 200。
看看这个数,SSB 占了 SST 的 300%,SSE 占了 200%。
这说明组间的差异贼大,远超组内的随机波动。
这时候再回头看看那个 t 检验,会发现 p 值都是 0.1,也就是不显著。
为啥?出于多了一个组。
要是只有两组,t 检验能直接给结论。但多出一组,自由度就变了,p 值就变了。
本来 p=0.05 的,目前出于自由度增添,p 值变成了 0.1,也就变成了不显著了。
这就是为啥有时候 t 检验和 ANOVA 结局打架的事儿。 实际上 ANOVA 还有一个益处,就是它能把“残差”给解释清楚。残差就是除了每个组内的随机波动之外,剩下的那些看不见的东西。
要是你的残差忒大了,说明你的模型根本没抓住规律,数据全是噪声,这时候就算模型做得再牛也没用。ANOVA 会告诉你,要是你的误差项方差(SSE)特别大,那你的检验统计量(F)就会特别大,结局就会特别显著。
这意味着你发现的差异是真的,而不是偶然。 自然,ANOVA 也不是万能的。
比如要是你要比较三个以上的组,ANOVA 的表出来了,就得把每个组拆出来,单独跑 t 检验,看看具体哪两个组不一样。
要是均值两两比较都显著,但整体不显著,那就是典型的“多重比较”难题。
这时候得用 Bonferroni 校正要么 Tukey 法,不然好办出假阳性。 举个更生活化的例子。
我想研究“早起晚睡”这个行为对人的幸福感有没有影响。我把人群分成了两类:早起的人和晚睡的人。分别问他们的打分。结局发现,早起的人幸福感分是 5.0,晚睡的人是 3.0。
这一看就挺有冲击力。
可是难题来了,我总共有 100 个样本,分给了两组,每组 50 个。
这时候 ANOVA 跑出来,p 值是 0.01,显著了。但要是你再想进一步分析,发现 40 名早起的人和 35 名晚睡人之间差距不大。
这时候就不能光说“早起好”,出于样本量不够大,随机波动忒大,结论毛躁。
这时候得看具体数据分组,发现那个 40 人的子样本里,平均值实际上波动也挺大的。 还有一点挺关键,就是样本量的影响。样本量大了,自由度就大了,p 值就小,显著性就高。但样本量小,自由度就小,p 值就大,好办不显著。
故此有时候 ANOVA 不显著,不是出于组间确实没区别,而是出于数据忒干净利落了,连误差都不明显。
这时候可能需求加大样本量,要么先做标准化,把数据的量纲统一起来。 最终还得提一下,ANOVA 的假设。你假设均值等于均值,方差相等,正态分布。
要是这些假设不成立,比如数据严重偏态,要么方差明显不同,出了啥偏态的分布,那 ANOVA 的结局就全废了。
这时候就得换别的模型,要么做数据转换。
总而言之,ANOVA 是个强大的工具,但它也是个有门槛的工具。用得不好,好办得出毛病的结论;用得好,就能透过现象看本质。