第六章 方差分析
当我们想要比较的不再是两组,而是三个乃至更多个处理组的均值是否存在差异时,t 检验已无力承担——反复两两比较不仅繁琐,更会因多次检验抬高第一类错误的概率。方差分析(Analysis of Variance,简称 ANOVA)正是为解决这一类多组均值比较问题而生的工具。它与前一章的 t 检验共享同一种思维底色:用变异的分解去衡量"组间差异"是否大到足以对抗"组内随机波动"。
6.1 方差分析的基本思想
方差分析的出发点,是把观测值围绕总均值的离差平方和(即总变异)劈成两半。其中的一半归因于不同处理组之间的系统差别,称作组间变异;另一半则来自同一组内部个案之间不可避免的随机起伏,称作组内变异。组间变异刻画的是处理因素可能带来的效应,组内变异则构成了衡量这种效应是否可信的"背景噪声"。
把两部分的离差平方和各自除以对应的自由度,就得到组间均方(MS_between)与组内均方(MS_within)。二者之比构造出 F 统计量:
F = MS_between / MS_within
如果各个组的真实均值其实并无差别,那么组间均方与组内均方都在估计同一片噪声,F 值理应游走在 1 附近;一旦处理因素确实造成了均值偏移,组间均方会被显著抬高,F 值随之偏离 1。于是检验的核心问题变成了:观测到的 F 值大到什么程度,才能让我们放心地说"这不是随机噪声造成的"。
要让这套推断逻辑站得住脚,方差分析对数据提出了三项前提假设:
- 独立性:各个个案的观测彼此独立,一组的得分不应牵动另一组。
- 正态性:在每个处理组内,因变量近似服从正态分布。
- 方差齐性:各个处理组的因变量总体方差相等(即同方差)。
前两项假设在温和偏离时,方差分析的结论通常仍具稳健性;方差齐性一旦被严重破坏,尤当各组样本量又不均衡之际,F 检验的结果就会失真。本章随后的 6.4 节将专门讨论如何通过 Levene 检验审视这一前提,以及在齐性不成立时该怎么办。
回到数据本身,一个因素所取的不同取值称作"水平"(level),例如施肥处理这一因素可有 A、B、C 三个水平。方差分析所比较的,正是这些水平对应的因变量均值。单因素方差分析与线性回归实为同一族模型的两种面目:把分类因素编码为虚拟变量后,回归的 F 检验与 ANOVA 的 F 检验在数学上完全等价。这也解释了为何 PSPP 用一个统一的 GLM 去承载更复杂的多因素设计——它本质上就是把方差分析写进了一般线性模型的框架里。
6.2 单因素方差分析
只含一个分类自变量(因素)的方差分析,在 PSPP 中由 ONEWAY 命令承担。它专司单因素场景,能够通过子命令直接索取描述统计、方差齐性检验,以及一组事后多重比较。
图形界面下,这条分析位于菜单 Analyze → Compare Means → One-Way ANOVA(界面推断,手册未逐项文档化)。不过在数据录入稳定后,直接书写语法往往更清晰、更可复现:
ONEWAY yield BY treatment
/STATISTICS=DESCRIPTIVES HOMOGENEITY
/POSTHOC=TUKEY ALPHA(0.05).其中 BY 之后的 treatment 为分类因素变量,yield 为连续型因变量;/STATISTICS=DESCRIPTIVES 输出各组均值、标准差与个案数,HOMOGENEITY 则请求 Levene 方差齐性检验;/POSTHOC=TUKEY ALPHA(0.05) 在整体 F 检验显著之后,对所有组对执行 Tukey 诚实显著差异(HSD)比较,显著性水平设为 0.05。
在正式跑出 F 值之前,稳妥的做法是先对数据做一番体检。EXAMINE 命令可针对每个处理组输出描述统计与箱线图,并附带 Shapiro-Wilk 正态性检验,帮助判断 6.1 节所列前提是否被严重违反。若正态性或独立性存疑,在跑 ANOVA 之前先考虑非参数替代或更严谨的取样设计,往往比事后补救更可靠。
下面沿用手册随附示例数据集 horticulture.sav(虚构数据,仅供教学,不可用于研究)的思路,构想一组三类施肥处理对作物产量的比较。为便于直接运行,这里改用 DATA LIST 内嵌数据:
DATA LIST LIST /treatment (A8) yield (F8.2).
BEGIN DATA.
A 14.2
A 15.1
A 13.8
B 17.6
B 18.3
B 16.9
C 12.4
C 13.0
C 12.1
END DATA.
VARIABLE LABELS yield '作物产量(吨/公顷)'.
ONEWAY yield BY treatment
/STATISTICS=DESCRIPTIVES HOMOGENEITY
/POSTHOC=TUKEY ALPHA(0.05).输出结果可沿着四个层次解读:
- Descriptives 表:逐一给出 A、B、C 三组的均值、标准差与样本量。若 B 组均值明显高于其余两组,便为后续推断埋下伏笔。
- 方差齐性检验(Test of Homogeneity of Variances):即 Levene 统计量及其显著性。若显著性大于 0.05,可认为各组方差齐性成立,F 检验的前提得到满足;否则需警惕,参见 6.4 节。
- ANOVA 表:列出组间与组内的平方和、自由度、均方,以及最终的 F 值与显著性。当显著性小于 0.05 时,可断定至少有一个组的均值与其他组不同——但 ANOVA 本身不指明究竟是哪几组有别。
- Tukey 多重比较表:在整体显著的前提下,逐对比较三组。表中会标注哪些组对之间的差异达到显著,从而把"至少有一处不同"的笼统结论落实到具体的组与组之间。
6.3 双因素方差分析
当研究同时引入两个分类因素,并希望考察它们各自的主效应以及二者是否叠加出交互效应时,便进入了双因素(乃至多因素)方差分析的领地。这里必须郑重提醒一个 PSPP 的关键事实:SPSS 习惯使用的 UNIANOVA 与 ANOVA 命令在 PSPP 中均未实现,双因素及多因素方差分析必须改走 GLM 命令。 直接书写 UNIANOVA 或 ANOVA 会在 PSPP 中报错,切勿当作可直接操作的步骤。
GLM 以 BY 引导固定因素(fixed factors),并以 /DESIGN 子命令显式声明要纳入的项,交互项用星号 * 连接。一条典型的双因素语法如下:
GLM 因变量 BY 固定因素1 固定因素2
/DESIGN = 固定因素1 固定因素2 固定因素1*固定因素2.沿用手册 MTBF BY factory BY environment 的分析思路——研究不同工厂(factory)与不同运行环境(environment)对设备平均无故障时间(mtbf)的影响——可这样组织命令:
GLM mtbf BY factory environment
/DESIGN = factory environment factory*environment
/METHOD = SSTYPE(3).这里 factory 与 environment 均为分类因素,/DESIGN 同时写入两个主效应项与一个交互项 factory*environment。/METHOD=SSTYPE(3) 指定III型平方和,这也是 GLM 的默认设定,对不均衡设计尤为稳妥;若设计完全均衡,I、II、III 型平方和结果一致。
输出中需要重点关注两类效应:
- 主效应:在
factory这一行,我们读到工厂因素对 mtbf 的单独影响,它剥离了环境因素的贡献;同理,environment一行反映环境因素的单独作用。显著性小于 0.05 即表明该因素的主效应存在。 - 交互效应:
factory*environment一行检验两个因素是否相互牵制——例如某工厂在干燥环境下表现优异,在潮湿环境下却一落千丈。一旦交互效应显著,单纯罗列主效应便可能产生误导,此时应当绘制交互作用轮廓图,并在各环境水平内分别比较工厂间的差异。
若要衡量效应的强弱,可参考 GLM 输出的偏 eta 方(partial η²)等效应量指标,它告诉我们某一个因素所解释的变异在剔除其他项之后仍占多大比重——显著性只回答"有没有",效应量才回答"有多大"。需要说明,GLM 的固定因素应当是分类变量;若误将连续变量放入 BY 之后,PSPP 会按其取值层级处理,结果往往并非分析者本意。
解读交互效应最忌笼统。当 factory*environment 显著时,意味着"工厂的优劣取决于环境"——主效应表上的 factory 均值差,只是把两种环境混在一起后的平均印象,可能掩盖了真实的此消彼长。规范的后续做法是拆分(probe)交互:固定 environment 的某一水平,在该水平内单独比较各 factory;或反过来固定 factory 比较各 environment。这类分层比较俗称简单效应分析,其结论应当结合交互轮廓图的走势来陈述,而非仅凭主效应表的显著性下判断。
6.4 方差齐性检验
方差齐性(各组总体方差相等)是 F 检验赖以成立的前提之一。PSPP 在 ONEWAY 与 GLM 中均可通过 Levene 检验对此进行审查,二者指向同一统计量:它对"各组绝对离差围绕其组均值的离散程度是否一致"作出判断,对正态性假设不如 Bartlett 检验那般敏感,故而更为常用。
在 ONEWAY 中,齐性检验由 /STATISTICS=HOMOGENEITY 触发,输出落在名为 Test of Homogeneity of Variances 的表中(参见 6.2 节)。在 GLM 中,Levene 检验同样可在相应子命令下索取,其数值含义与 ONEWAY 完全一致,只是表头随模型表述略有差异。解读时看显著性(Sig.)一列:取值大于 0.05,说明没有足够证据推翻"方差齐"的原假设,可放心沿用标准的 F 检验;取值小于或等于 0.05,则提示至少两组方差存在显著差异。
齐性受阻之后的处理路线有三条。其一,当样本量在各组大致均衡时,方差分析对轻微不齐仍具稳健性,可谨慎报告结果并如实说明局限。其二,对因变量作对数、平方根等变换,常能压平方差随均值攀升的趋势,使齐性得以恢复后重新拟合。其三,若变换无济于事,应转向不依赖方差齐性的替代方案——例如第六章未直接覆盖的非参数单因素方法(Kruskal-Wallis 检验,对应 NPAR TESTS),或在 ONEWAY 的事后比较中选用对不齐性较宽容的 Games-Howell 法(见 6.5 节)。
实务中有个常被忽视的细节:Levene 检验本身对样本量敏感,小样本下它力不从心,容易放过真实的不齐;大样本下又过于严苛,连临床上无足轻重的微小差异也判为显著。因此显著性数字之外,还应直接观察各组标准差的比值——经验上若最大组标准差超过最小组的二倍,齐性假设便值得认真对待。
6.5 多重比较与事后检验
当整体的 F 检验告诉我们"组间均值不全相等"之后,下一个自然的问题是:究竟是哪几组彼此不同?逐对做 t 检验会放大第一类错误,因此方差分析通常配套一组受控的事后比较(post hoc comparisons)。ONEWAY 通过 /POSTHOC 子命令提供丰富的选项:
ONEWAY yield BY treatment
/POSTHOC=LSD TUKEY BONFERRONI SCHEFFE SIDAK GH ALPHA(0.05).各方法的取向有别:
- LSD(Least Significant Difference):对每对比较不做额外校正,检验最灵敏却也容易冒出假阳性,适合作为探索性筛查。
- TUKEY(Tukey HSD):控制"所有组对比较家族"的误差率,均衡设计时效率尤高,是 pairwise 比较的默认首选。
- BONFERRONI:以简单 Bonferroni 校正收紧每对的显著性门槛,稳健而略显保守。
- SCHEFFE:可比较任意线性对比(不限于成对),最为保守,适合复杂的对照规划。
- SIDAK:基于 Sidák 不等式校正,功效通常略优于等价的 Bonferroni。
- GH(Games-Howell):不对方差齐性作要求,当 Levene 检验提示齐性受阻时是理想的补充手段。
这些方法背后的共同关怀,是"家族wise 误差率"(familywise error rate,FWER):若对 k 个组做全部 C(k,2) 对比较,每对单独以 0.05 为门槛,累计犯至少一次第一类错误的概率会远高于 0.05。LSD 几乎不加防护,所以灵敏度最高也最易误报;TUKEY、BONFERRONI、SIDAK、SCHEFFE 则通过不同策略把这个累计概率压回 0.05 附近。选型时有个朴素准绳:组数不多且只关心成对比较,TUKEY 通常最称手;对照方案预先定好且涉及复杂线性组合,SCHEFFE 更周全;方差不齐则直接交给 GH。
ALPHA(value) 设定家族wise 显著性水平,缺省即 0.05;可与其他方法并列书写。
至于 GLM 框架下的多重比较,PSPP 官方手册在本章节节点未给出逐项语法与输出说明,故此处依据通用统计知识作一补充:在双因素及多因素模型中,研究者往往需要在某个因素的主效应显著之后,对其各水平做 pairwise 比较,或在交互效应显著时于另一因素各水平内分层比较。其统计原理与 ONEWAY 的事后检验一脉相承——同样是在控制家族误差率的前提下,借助 Tukey、Bonferroni 等校正区分真实差异与随机起伏。实际操作时,宜先将预期比较写清于分析方案,再据手册对应节点所支持的语法落实,避免在数据窥探之后临时增补比较而损害推断的有效性。