没听说过多因素ANOVA?那你可就OUT了!| 协和八
我们上一集讲了重复测量 ANOVA,它利用了同一个个体贡献了多个数据点,从总平方和扣除由于个体差异引起的误差,得到更真实的结果。
进一步思考个体差异,它其实有很大一部分是来自于我们在实验中没有控制的因素。
正如上一集的例子里面,我们只考虑到了睡眠时间对算数测试成绩的影响,但没有考虑到平时成绩的影响。也许平时成绩优异的测试成绩受睡眠时间影响不大,而平时常常挂科的受睡眠影响比较大,想要验证这一假说,就得用到多因素 ANOVA(multi-factor ANOVA)了。
多因素 ANOVA 顾名思义就是会同时检验多个因素对测量值的影响,多因素 ANOVA 应用非常广泛,比如研究新型药物对疾病的治愈能力往往还要考虑到患者的年龄性别等因素,研究学历对薪水的影响也要考虑到家庭背景等其它社会因素才能让结果更有说服力。
多因素 ANOVA 不仅考虑每个因素单独对要检验的量的影响,还会考虑到因素之间的交互效应。比如经过多因素 ANOVA 分析,可以得知某种新型药物虽然对治疗心脏病是有效的,但是对于女性患者的效果要远远小于男性患者,这种一个因素的对要检验的量的影响依赖于另一个因素的情况叫做交互作用。
与之前讲过的单因素 ANOVA 类似, 多因素 ANOVA 也将总平方和分解成组内平方和和组间平方和。由于有多个因素,组间平方和又可以分解为每个因素单独的对平方和的贡献和它们相互作用贡献的平方和 。
蓝精灵们想调查不同食堂师傅会不会影响包子的质量, 但是他们也意识到,除了制作包子的师傅,包子馅儿也会影响包子质量。
为了研究食堂师傅(格格巫,康师傅和王师傅)和包子馅儿(有菜和肉两种情况)对包子大小的共同影响,蓝精灵们随机对每一个师傅制作的每一种包子都进行了样本量为 4 的抽样,一共有六组数据,24 个数据点,如下表所示。
格格巫 (B1) | 康师傅 (B2) | 王师傅 (B3) | |
肉馅 (A1) | 23.7,24.8,26.0,27.7 | 46.8,47.5,45.6,49.3 | 45.2,44.3,44.8,43.6 |
菜馅 (A2) | 47.3,50.4,49.7,51.8 | 70.9,68.7,64.5,64.8 | 62.1,61.5,60.0,61.2 |
表格 1:包子 39 37684 39 14985 0 0 2623 0 0:00:14 0:00:05 0:00:09 2852重量的原始数据
在我们开始计算用双因素 ANOVA 来计算各种平方和之前,我们先从另外一个角度理解一下 ANOVA 的原理——
样本里面每个包子的重量之所以不同,一方面是由于馅儿和制作师傅不同,另外一方面是同一个师傅制作同一个馅儿的包子的重量也会有随机波动。如果一个因素对预测包子重量很有帮助,就说明这个因素对包子重量影响很大。
如果先把随机误差放在一边,每组包子重量的平均值就可以由馅儿,包子师傅,以及两者交互效应共同决定。双因素 ANOVA 假设了特定组包子的平均重量是所有包子的平均重量加上这三个因素的共同作用。
我们用 A1、、A2 代表不同包子馅儿,B1、B2、B3 代表三位师傅,双因素 ANOVA 的数学模型为:
这里 μij 是特定组包子的平均值,这是我们数学模型最终需要预测的量。μ 是所有样品包子质量的平均值,它是在不知道包子馅儿和包子师傅的情况下,对包子质量最简单粗暴的估计。
但是如果我们知道了包子馅,就可以用同一个馅儿的包子重量的平均值(原始数据的每一行的平均值)作为接近 μij 真实值的估计,如下表中的黄色区域。
格格巫 (B1) | 康师傅 (B2) | 王师傅 (B3) | ||
肉馅 (A1) | 25.5 | 47.3 | 44.4 | 39.1 (μ+A1) |
菜馅 (A2) | 49.8 | 67.2 | 61.2 | 59.4 (μ+A2) |
37.7 (μ+B1) | 57.3 (μ+B2) | 52.8 (μ+B3) | 49.2 (μ) |
表格 2:由原始数据计算出的组内平均值(蓝色区域),只考虑包子馅的平均值(黄色区域),只考虑制作包子师傅的平均值(红色区域),所有样本的总平均值 μ 。
同一个馅儿的包子重量的平均值与总平均值的差距就是数学模型中的 Ai ,可以理解为在只知道包子馅儿的情况下对包子质量估计的调整,或者理解为在不考虑包子是谁做的情况下,包子馅儿这一因素对包子质量的贡献。
这里肉包子A1 = -10.1,菜包子 A2 = 10.1,说明肉包子比菜包子平均要小 20.2 g 。既然是对粗暴的平均值估计的一个调整,就会有的组高于所有样本的平均,有的组低于平均, 而调整量之和应该等于零,即 A1 + A2 = 0。
同样的,Bj 是在只知道包子制作师傅的情况下对包子质量估计的调整,是每一个师傅做的包子重量的平均值与总平均值的差距。
格格巫常常偷工减料 B1 = -11.5,康师傅最大方 B2 = 8.1,王师傅最中庸 B3 = 3.6,同样我们看到 B1 + B2 + B3 = 0(这里不完全为 0 因为四舍五入)。
上面 μ + Ai 是在不知道师傅是谁而只知道包子是肉的还是菜的情况下对包子质量的估计,而 μ + Bi 是在不知道包子馅儿的情况下的估计,那要是知道包子是格格巫做的而且是肉馅的,是不是质量就是 μ + A1 + B1 = μ - 10.1 - 11.5 = 27.6 g? 但是实际上测量到的平均值是 25.5 g,说明格格巫对肉包子格外地偷工减料了。这样一来,虽然格格巫的包子比总体平均少了 11.5 g,算到肉包子头上是减少了 13.6 g。
为了考虑到这种情形,公式的最后多出了一项 ABij ,它在同时确定了包子馅儿和师傅之后进一步对包子的质量做了的进一步的调整,计算公式是 ABij = μij - ( μ + Ai + Bj ),表示的是水平 Ai 与水平 Bj 的交互效应。注意这里的 ABij 并不代表 Ai 乘以 Bj,只是为了表示两者之间的交互效应。
从交互效应的表达式可以看出,只要两个因素的共同效应不能直接等于单独作用的简单相加就存在交互效应。也可以理解为当一个因素的效应与另外一个因素相关时,就存在交互效应。
用数据可视化可以更直观地理解两个因素的交互作用(图 1),可以看到菜馅儿的包子总是比肉馅儿的重,但是菜包子比肉包子重多少跟包子出自哪位师傅之手有关,格格巫组差距似乎比其它组更大,说明有可能有交互作用。
图 1
我们之前提到,多因素 ANOVA 也通过把总平方和分解成组内平方和和组间平方和。在双因素 ANOVA 的例子里,要分别考虑三种组间平方和:包子馅,包子师傅,还有它们的交互作用。
包子馅的组间平方和是 Ai 的平方和:
这里 4 × 3 是因为每组有四个数据点且一个包子馅对应三组数据。
类似的,包子师傅的组间平方和是 Bj 的平方和:
两者相互作用的平方和:
即使是同一个实验条件下的包子重量也会有一些波动,这是与实验条件无关的误差项,等于每一组内包子减去平均质量,其平方和就是组内平方和。
格格巫肉馅组的组内平方和:
以此类推可以计算出所有六组的组内平方和为 59.4 。
我们辛辛苦苦计算出这么多平方和可不是吃饱了撑着的,有了这些平方和,我们就可以用 F 检验来检验下面这三个假设:
✔ 原假设:包子馅对包子质量没有影响,即 A1 = A2 = 0;备择假设:A1,A2 不全为 0
✔ 原假设:做包子的师傅对包子质量没有影响,即 B1 = B2 = B3 = 0;备择假设:B1,B2,B3 不全为 0
✔ 原假设:包子馅和做包子的师傅对包子质量没有交互效应,即 AB11 = AB12 =⋯= AB23 = 0;备择假设:AB11 ,AB12 ,⋯, AB23 不全为 0
检验这三个假设,需要分别用前面提到的三种组间平方和与组内平方和的比值,在检验不同假设的时候分母总是相同的,只有分子会变化。
为了检验包子馅对包子质量没有影响,
我们可以用类似的方法算出包子师傅对包子质量也有显著影响,最后就是检验两者的相互作用了,相互作用的组间平方和我们已经计算过了,唯一不知道的就是自由度。包子馅儿和包子师傅的自由度分别是(nA - 1)和(nB - 1),两者相互作用的自由度是(nA - 1)*(nB - 1)= 1 * 2 = 2 就不奇怪了。可以算出 F ( 2,18 ) = 8.7,对应的 p 值小于 0.05,说明包子馅和包子师傅的有显著的相互作用,与我们图 1 显示的结果相吻合。爱动脑子的读者也可以想想在不同的假设成立是图 1 应该是什么样子的。
最后与单因素 ANOVA 一样,多因素 ANOVA 需要每个条件下的数据都服从正态分布,且不同组的数据方差相等,也就是说在我们在计算组内平方和时用到的误差项要服从正态分布。另外和之前讲过的所有检验方法一样,每一个数据样本也要相互独立。
在这一集的例子里面,蓝精灵们对每个实验分组都采集了相同数量的样本,这又叫做等重复实验的方差分析( balanced design ANOVA)。如果有的包子样本在测重量前就被偷吃了,导致每组的样本并不相等,那么就不满足等重复实验的条件,需要用到更加通用的线性回归的思路来进行假设检验。
精选每日一题
更多精选题可回顾历史推送文末
题目来源:临床执业医师资格考试往届真题
本期主播:冬日暖阳
回复「统计学」可查看「说人话的统计学」系列合辑,
或点击下方标题可阅读本系列任意文章
>>> 干货 <<<
>>> 自检 <<<
>>> 番外篇 <<<
作者:田菊
编辑:黑草乌叶🍁