重复测量ANOVA:你要知道的事儿都在这里啦 | 协和八
上一集我们为大家介绍了方差分析(ANOVA)的一种特殊技巧,叫做重复测量ANOVA(repeated-measures ANOVA)。它的功能和成对样本的 t 检验相似,是为了比较在同一组个体上进行多次测量(不同时间点、不同实验条件等)后,得到的平均值是否有差异。
从概念上来说,重复测量 ANOVA 和普通的 ANOVA 并没有什么两样,都是将表示所有数据点围绕全体平均值之间波动情况的总平方和划分为不同的成分。这些成分有些与我们想考察的因素有关(常规 ANOVA 中的组间平方和,重复测量 ANOVA 中的「时间点间平方和」或「条件间平方和」),而有些无关(常规 ANOVA 中的组内平方和,重复测量 ANOVA 中的「时间点内/条件内平方和」等)。
重复测量 ANOVA 的特别之处,就是利用同一个个体贡献了多个数据点这一信息,在总平方和中进一步划出去一个与个体本身固有性质有关、而与时间点或实验条件无关的部分,称之为「个体间平方和」。这样一来,最后剩下的、被我们认为是误差的那部分平方和就变小了。上集文末的示意图(见下图)说的就是这个事儿。
图1 ANOVA 与重复测量 ANOVA 原理比较(同上集图 3)
说了这些,希望大家不要被这些五花八门的平方和给绕晕了,而忘记了我们的初衷——比较不同分组的平均值是否有差异。
在开始介绍 ANOVA 时,我们说过,要判断差异的显著性,我们需要找出与我们感兴趣的因素相关的、组与组或条件与条件间的差异(也就是组间/条件间平方和),把它和由随机误差引起的差异来比较一下。
直观上来说,如果前者比后者大得多,我们就有更充分的理由相信,不同组别之间平均值的差异是真实存在的;反之,我们则不能否定组间无差异的原假设(戳此处回顾《 ANOVA 在手,多组比较不犯愁》)。
▣▣▣▣
讨论了这么多原理,现在该是挽起袖子来大干一场的时候了!
下面,就让我们回到上集讲过的蓝精灵研究睡眠时间对做算术题正确率影响的例子里,看看重复测量 ANOVA 的具体计算。
首先,让我们来重温一下这组数据——6 只蓝精灵分别在充分休息后体验三种实验条件(夜间睡眠 3、6、9 小时),然后做 50 道算术题,记下每人每个条件下答对的题数。以下散点图就是上集我们见过的那幅,为了大家的方便再次附在这里。而下面的表 1 则是具体的数值。
图 2 三种实验条件下的算术测试得分(用颜色标注不同个体,同上集图 2 )
表1 三种实验条件下的算术测试得分
3小时 | 6小时 | 9小时 | 各个体平均值 | |
绿精灵 | 40 | 42 | 50 | 44 |
粉精灵 | 37 | 46 | 48 | 43.7 |
黄精灵 | 27 | 26 | 37 | 30 |
红精灵 | 25 | 30 | 42 | 32.3 |
深蓝精灵 | 30 | 35 | 44 | 36.3 |
蔚蓝精灵 | 26 | 27 | 28 | 27 |
各条件平均值 | 30.8 | 34.3 | 41.5 | 总平均值:35.6 |
有了数据,现在我们就把那些平方和一个个算过来。按照《 ANOVA 在手,多组比较不犯愁》里的方法,条件间平方和(等同于之前的「组间平方和」)就是各实验条件下的平均值围绕总平均值的波动,而且还要各自乘以该组的个体数量。换言之,我们要找出表 1 里每一列的平均值与总平均值之间差异的加权平方和:
而条件内平方和(等同于之前的「组内平方和」)则是各数据点围绕它们所在的实验条件下的平均值的波动。和以前一样,为了清晰起见,我们分别算出每个条件的平方和,再把它们加起来:
相信你还记得,在常规的 ANOVA 里,这个条件内平方和(组内平方和)就是误差平方和,统计推断就建立在它与组间平方和的比较上。但是,在重复测量 ANOVA 里,我们还要从里头刨掉一块个体间平方和,剩下的才是误差平方和。
那么,个体间平方和应该怎么算?
在这一集的开头以及上一集里,我们都说过,之所以要有个体间平方和,是因为我们想要抓住个体间差异所造成的、而与分组、时间点或实验条件无关的数据波动。
在上面这个例子里,说的就是不同蓝精灵本身算术水平的差异,而这个差异是在不同的实验条件下都稳定存在的。要注意,我们并不是说蓝精灵解算术题的表现不受实验条件的影响,而是说我们能测量到的解题得分里,既体现了不同蓝精灵自身水平的差异,也体现了睡眠时间的作用。既然说,个体间的差异在不同的实验条件下都稳定存在,那么我们可以把三个实验条件合并起来取个平均。也就是说,表 1 最右边的一列「各个体平均值」就代表了这六位蓝精灵本身的算术水平,因而我们算出它们围绕总平均值的波动,就是个体间平方和了。同样,考虑到实验条件的数量,我们还得像以前那样,给平方和乘上实验条件的个数作为加权:
对比这个式子和前面计算条件间平方和的算式,你会发现它们非常相似。其实,我们可以把「个体」作为另一种条件或者实验分组,个体间平方和只不过是这一条件围绕总平均值波动的大小而已。
有了个体间平方和,我们已经把这个样本里变异性的两个系统性的来源(实验条件造成的差异和个体本身的差异)都考虑到了。在没有其他额外信息的情况下,还剩下的数据变异性就只能认为是随机误差导致的了。因而,要得到误差平方和,我们只需求出条件间平方和与个体间平方和之差:
所以,对于这一组数据,如果我们没有利用实验设计中重复测量的优势,把它当成三组互相独立的数据,就会认为误差平方和有 855.7 那么多。但在重复测量的条件下,其实在 855.7 里面,有 756.4 是由个体差异造成的,在这个条件下,我们认为总平方和里只有 99.3 来自误差。
熟习 ANOVA 心法的你一定知道,ANOVA 的本质就是组间/条件间变异性和随机误差之间的比较。误差平方和小了,组间/条件间平方和与之相比就更大了。
▣▣▣▣
这是否意味着重复测量 ANOVA 得到的显著性一定就比常规 ANOVA 更大( p 值更小)呢?多数情况下是的(比如我们上集提到过对于蓝精灵这组数据的结果),但也并不绝对。
为什么?原因在于,当我们利用平方和进行统计推断时,并不是简单地看组间/条件间平方和与误差平方和之间的比例,还需要有一些稍微有点烦人的技术细节。
在《 ANOVA的基本招式你掌握了吗?》里,我们介绍过,在常规的 ANOVA 中,要得到 p 值,我们要利用组间平方和与组内平方和构建这么一个 F 统计量:
其中,n 为样本量(所有各组中数据点个数的总和),s 为组数。在前面的例子里,n 为 18,s 为 3。
在数据满足一定假设条件(见《 ANOVA的基本招式你掌握了吗?》的前提下,如果原假设为真(各组平均值之间没有差异),这个 F 统计量会服从自由度为(s-1, n-s)的 F 分布。要得到 p 值,只需要找出在这个分布之下,F 统计量取到比根据数据算出的 F 更大的数值的概率(各组平均值相互差异越大,组间和组内平方和的比值就越大,在原假设下的概率就越小),这事咱们就交给统计学软件包办了。
重复测量 ANOVA 呢?道理都是一样的,关键就在于条件间平方和与误差平方和之间孰大孰小。基于和之前同样的原因,我们需要对条件和个体的数量进行校正,因此在 F 统计量中,两个平方和底下也要除以两个自由度:
其中,s 和之前一样,为分组(实验条件)数,而 m 为不同个体的数量。在前面的例子里,s 为 3,而 m 为 6 。要从 F 统计量算出 p 值,我们同样需要数据满足一定的假设(稍后会具体介绍),这时如果原假设为真,那么 F 统计量将服从自由度为 ( s-1,(s-1)(m-1)) 的 F 分布。
比较两个 F 统计量的式子,对于同一组数据,分子是一样的,区别主要在分母上。一方面,经过我们前面的介绍和计算示例,重复测量 ANOVA 的误差平方和会比常规 ANOVA 的组内平方和小;另一方面,重复测量 ANOVA 里 (s-1)(m-1) 又会比常规 ANOVA 的 (n-s) 小(想想看为什么?提示一下,n 能够用 m 和 s 怎样表示?)。最后,自由度为 (s-1,n-s) 的 F 分布的形状又会和自由度为 (s-1,(s-1)(m-1)) 的 F 分布有所不同——后者因为第二个自由度小,整个趋向正无穷的尾巴会更高一些,因而同样的 F 统计量对应的 p 值会大一些。读着有点儿晕?没关系,只需要知道这些因素搅和在一起,重复测量 ANOVA 并不一定总是功效比常规 ANOVA 更高,还得靠具体数据说话。
需要强调的是,我们今天对两种 ANOVA 的比较,是从帮助大家理解两者异同的角度出发的,并不是说实际使用时能够随意选择,更不意味着可以哪个算出来 p 值小就用哪个。正如我们反复强调过的,选择哪种 ANOVA,决定因素只能是实验设计:数据来自几组互不相关的个体,就应当使用普通的 ANOVA;数据来自对同一组个体在不同条件下的多次测量,就应当使用重复测量 ANOVA;如果两者皆有,那么就需要用到以后再为大家介绍的更复杂的混合设计 ANOVA一类的方法。
▣▣▣▣
在这集的最后,让我们来简单谈谈重复测量 ANOVA 需要满足哪些假设:
❖ 与普通 ANOVA 相同,各分组或条件中的各数据点需要服从或近似服从正态分布,而且各个体互相独立(比方说,在蓝精灵这个例子里,如果蔚蓝精灵和深蓝精灵是孪生兄弟,而其他蓝精灵互相都没有血缘关系,这样就不独立了)。在这里,我们以前介绍过的检验正态性的方法(如 Shapiro-Wilk 检验),还有将非正态数据转化为接近正态数据的技巧,就都可以派上用场了。
❖ 重复测量 ANOVA 有一个特殊的假设,就是要求所有条件间来自同一个体的两两数据点之差的方差(variance)相等。这个假设有个专门的术语,称为球面性(sphericity)。大家可以参看下面的表2:在我们的例子里,球面性要求的是 3 小时减 6 小时、3 小时减 9 小时、6 小时减 9 小时这三组差值的方差相等。
表 2 重复测量 ANOVA 中的球面性假设
3小时 | 6小时 | 9小时 | 3小时-6小时 | 3小时-9小时 | 6小时-9小时 | |
绿精灵 | 40 | 42 | 50 | -2 | -10 | -8 |
粉精灵 | 37 | 46 | 48 | -9 | -11 | -2 |
黄精灵 | 27 | 26 | 37 | 1 | -10 | -11 |
红精灵 | 25 | 30 | 42 | -5 | -17 | -12 |
深蓝精灵 | 30 | 35 | 44 | -5 | -14 | -9 |
蔚蓝精灵 | 26 | 27 | 28 | -1 | -2 | -1 |
方差 | 12.7 | 25.5 | 21.4 |
这样一个假设是哪儿冒出来的?咱们可以从两个角度来理解。
首先,如果大家还记得常规 ANOVA 的假设(回顾《 ANOVA 的基本招式你掌握了吗?》),里头也有一个(各组数据)等方差性的要求,这里的球面性只不过是重复测量情形下的特殊形式罢了。那么为什么要求各条件中两两数据点之差的方差相等呢?回想一下,重复测量 ANOVA 是成对样本 t 检验的一种延伸,而成对样本 t 检验表面上有两组数据,实际的对象却是两组数据对应数据点的差值。在重复检验 ANOVA 中也是一样的——它实际上关心的并非各条件的数据本身,而是在 s 个条件中两两组合的差值。
从上面的表 2 中,这三组差值的方差看起来似乎相差不小。怎样才能知道球面性假设是否成立?和正态性检验类似,有一个专门的统计学检验,称为 Mauchly 氏球面性检验(Mauchly’s Test of Sphericity),它是各大统计学软件在重复测量 ANOVA 功能中的默认标配。这个检验的原假设是「重复测量数据具有球面性」,因此当该检验的 p 值小于 0.05 时,我们认为数据违背了球面性假设; p 值大于 0.05 时,我们则认为球面性得到了满足。
如果数据不满足球面性,那么我们需要对 F 统计量的自由度进行修正,最常用的修正方法是 Greenhouse-Geisser 校正(Greenhouse-Geisser correction)。在 SPSS 及其他统计学软件中,我们只需根据 Mauchly 氏球面性检验的结果读取相应的 F 检验结果报告即可。当然,写论文的时候也别忘了把选用的校正方法以及修正后的自由度写清楚哦!
精选每日一题
更多精选题可回顾历史推送文末
题目来源:临床执业医师资格考试往届真题
本期主播:铩羽
回复「统计学」可查看「说人话的统计学」系列合辑,
点击下方标题可阅读本系列任意文章
>>> 干货 <<<
>>> 自检 <<<
>>> 番外篇 <<<
作者:张之昊
编辑:黑草乌叶🍃