SPSS超详细教程:三因素方差分析
在之前的医咖会SPSS统计教程中,我们推送了“单因素方差分析”和“双因素方差分析”的详细教程,今天我们再来和小伙伴们分享“三因素方差分析”的SPSS操作步骤。
一、问题与数据
某研究者想研究某类新药降低胆固醇水平的效果。由于该类新药特殊的分子机制,该研究者假设该类新药对男女的影响不同,也对心脏病风险不同的人影响不同。该类新药有3种药物(药物A、药物B、药物C),该研究者不确定哪种药物更有效。
因此,该研究者招募72位受试者,包括36位男性和36位女性。每种性别中,受试者按心脏病风险分为低风险和高风险亚组。每一亚组均继续分为3组,分别接受A、B、C三种药物中的一种,用药一个月后,收集患者的胆固醇水平。
最终,研究者收集了受试者胆固醇水平(cholesterol)、性别(gender)、心脏病风险(risk)和所用药物(drug)的变量信息,部分数据如下:
对于gender、risk和drug各值对应的含义如下表所示:
二、对问题的分析
研究者已知两个自变量对因变量存在交互作用,想判断第三个自变量对这一交互作用是否存在影响。针对这种情况,我们可以使用三因素方差分析(Three-way ANOVA),但需要先满足6项假设:
假设1:因变量唯一,且是连续变量
假设2:存在三个自变量,且都是分类变量
假设3:具有相互独立的观测值
假设4:自变量的任一分类中因变量不存在显著异常值
假设5:自变量的任一分类中因变量需近似正态分布
假设6:自变量的任一分类中因变量都具有等方差性
三、对假设的判断
那么,用Three-way Anova分析时,如何考虑和处理这6个假设呢?
由于假设1-3都是对研究设计的假设,需要研究者根据研究设计进行判断。本例中因变量只有研究对象的胆固醇水平,是连续变量,符合假设1:因变量唯一,且为连续变量;
共有3个自变量:性别(gender)、心脏病风险(risk)和所用药物(drug),都是分类变量,符合假设2:存在三个自变量,且都是分类变量;
至于假设3,我们之前的章节(如简单线性回归分析)中介绍过使用Durbin-Watson检验判断观测值是否相互独立的方法,这里不再赘述。同时,我们也认为观测值是否相互独立主要与研究设计有关,也需根据实际情况判断。
下面我们主要对数据的假设4-6进行判断。
(一) 检验假设4、5的操作
在检验假设4和假设5之前,我们还需要先拆分数据(即将数据根gender、risk和drug拆分成12类),运行检验操作,再合并数据。
1. 拆分数据
(1) 点击Data→Split File
出现下图:
(2) 点击Compare groups
(3) 将gender、risk和drug放入Groups Based on栏
(4) 点击OK
2. 针对每一分类,检验异常值(假设4)和正态性(假设5)
(1) 点击Analyze→Descriptive Statistics→Explore
出现下图:
(2) 将cholesterol放入Dependent List栏
(3) 点击Plots,弹出下图:
(4) 去掉点选Descriptive栏中的Stem-and-leaf,点选Normality plots with tests
(5) 点击Continue,回到Explore窗口
(6) 在Display栏中点击Plots
(7) 点击OK
(二) 检验假设4:自变量的任一分类中因变量不存在显著异常值
1. 异常值分析结果
与其他方差分析一样,三因素方差分析对异常值非常敏感。这些数据不仅会扭曲各分类之间的差异,还会影响结果的外推性。因此,我们必须充分重视分析中的异常值。
经上述SPSS操作,软件会自动输出本研究中每一分类的箱式图,共12个。以下面两个举例:
左侧是男性、心脏病风险为“low”、使用“drug C”组的箱式图,未提示存在离群值。右侧是女性、心脏病风险为“high”、使用“drug A”组的箱式图,下方的“*”提示异常值。
在SPSS中,将距离箱子边缘超过1.5倍箱身长度的数据点定义为异常值,用“圆圈”表示,右上标为异常值在数据表中所对应的行数,以圆点表示;将距离箱子边缘超过3倍箱身长度的数据点定义为极端值(极端异常值),用“*”表示,右上标代表异常值在数据表中所对应的行数。
本例中,一位心脏病风险为“high”、使用“drug A”的女性,在本组中与其他人比较时,有异常低的胆固醇浓度。
2. 异常值的处理
(1) 导致数据中存在异常值的原因有3种:
1) 数据录入错误:首先应该考虑异常值是否由于数据录入错误所致。如果是,用正确值进行替换并重新进行检验;
2) 测量误差:如果不是由于数据录入错误,接下来考虑是否因为测量误差导致(如仪器故障或超过量程),测量误差往往不能修正,需要把测量错误的数据删除;
3) 真实存在的异常值:如果以上两种原因都不是,那最有可能是一种真实的异常数据。这种异常值不好处理,但也没有理由将其当作无效值看待。目前它的处理方法比较有争议,尚没有一种特别推荐的方法。
需要注意的是,如果存在多个异常值,应先把最极端的异常值去掉后,重新检查异常值情况。这是因为有时最极端异常值去掉后,其他异常值可能会回归正常。
(2) 异常值的处理方法分为2种:
1) 保留异常值:
① 进行更稳健的三因素方差分析,由于SPSS没有办法做更稳健的三因素方差分析,除非有其他程序包时才选此操作;
② 将异常值替换成其他非异常值(如,用第二最大的值替代);
③ 因变量转换成其他形式;
④ 将异常值纳入分析,并坚信其对结果不会产生实质影响。
2) 剔除异常值:
直接删除异常值很简单,但却是没有办法的办法。当我们需要删掉异常值时,应报告异常值大小及其对结果的影响,最好分别报告删除异常值前后的结果。而且,应该考虑有异常值的个体是否符合研究的纳入标准。如果其不属于合格的研究对象,应将其剔除,否则会影响结果的推论。
本研究选择将异常值纳入分析,并坚信其对结果不会产生实质影响。
(三) 检验假设5:自变量的任一分类中因变量近似正态分布
1. 正态分布分析结果
本研究采用Shapiro-Wilk检验数据正态性。看过其他章节(如多重线性回归)后,大家应该知道检验数据正态性的方法有很多种。本研究采用Shapiro-Wilk检验的原因在于每一组中的样本量较小,而Shapiro-Wilk检验主要适用于这种小样本的正态性检验(样本量<50)。
SPSS输出Shapiro-Wilk检验结果如下:
一般来说,如果Shapiro-Wilk检验的P值小于0.05,我们就认为数据不符合正态分布。从上表第二个标黄的位置可知,对于心脏病风险为“high”、使用“drug A”的女性组,其胆固醇水平不正态,除了该组,其他组的P值均大于0.05。
2. 如果数据不服从正态分布,可以有如下4种方法进行处理:
(1) 数据转换:对转换后呈正态分布的数据进行三因素方差分析。当各组因变量的分布形状相同时,正态转换才有可能成功。对于一些常见的分布,有特定的转换形式,但是对于转换后数据的结果解释可能比较复杂。
(2) 直接进行分析:由于方差分析对于偏离正态分布比较稳健,尽管没有专门针对三因素方差分析的验证。实际上,如果样本量不是很小,对于稍微偏态的分布,只要各组偏态分布相似,都不会认为用方差分析有问题。然而,对于偏态程度多大是可以接受的,目前没有一致的意见。因此,如果直接进行检验,需要在结果中对正态分布的偏离的程度进行报告。
(3) 检验模型结果:因为没有可以替代三因素方差分析的非参数检验方法,将转换后和未转换的原始数据分别进行三因素方差分析,如果二者结论相同,则采用未转换的原始数据分析的结果即可。
(4) 选择更稳健的三因素方差模型。
本研究选择直接进行分析。
(四) 合并数据
在在进行三因素方差分析的操作之前之前,我们先来把数据合并,具体操作如下:
(1) 在主菜单点击Data→Split File
出现下图:
(2) 点击Analyze all cases, do not create groups
(3) 点击OK
四、SPSS操作
(一) 三因素方差分析的操作
(1) 在主菜单点击Analyze→General Linear Model→Univariate...,如下图所示:
出现下图:
(2) 分别将cholesterol放入Dependent Variable栏,将gender、risk和drug放入Fixed Factor(s)栏
(3) 点击Options,弹出下图
(4) 将gender*risk*drug放入Display Means For:框中,在Display下方勾选Descriptive statistics和Homogeneity tests,出现下图
(5) 点击Continue→OK
(二) 检验假设6:自变量的任一分类中因变量都具有等方差性
1. 自变量的任一分类中的因变量都具有等方差性,是三因素方差分析的基本假设,可以通过Levene方差齐性检验完成。
通过以上的操作,SPSS输出结果如下:
一般来说,如果Levene方差齐性检验的P值大于0.05,我们就认为数据符合等方差性。从上表可知,本研究中Levene方差齐性检验的P值为0.994,大于0.05,即自变量的任一分类中因变量都具有等方差性,满足假设6。
2. 如果方差不齐,我们可以采取以下2种办法进行处理:
(1) 转换数据;
(2) 如果各组样本量一致、符合正态性并且方差最大组与最小组的比值小于3,那么我们认为即使方差不齐,也可以尝试采用三因素方差分析模型。
五、结果解释
在解释三因素方差分析的结果前,我们需要先了解分析的步骤,共有4步,但不一定都用到,取决于数据的结果:
(1) 判断是否存在三因素交互作用。
(2) 如果存在三因素交互作用,则判断是否存在简单两因素交互作用;如果不存在三因素交互作用,则判断是否存在两因素交互作用。
(3) 如果存在简单两因素交互作用,判断是否存在简单单独效应;如果不存在简单两因素交互作用,结束分析;如果存在两因素交互作用,判断是否存在单独效应;如果不存在两因素交互作用,结束分析;
(4) 如果存在简单单独效应,则判断简单两两比较是否有意义;如果不存在简单单独效应,结束分析;如果存在单独效应,判断两两比较是否有意义;如果不存在单独效应,结束分析。
下图可以更清晰的理解分析步骤:
(一) 判断是否存在三因素交互作用
进行三因素方差分析的主要目的是判断是否存在三因素交互作用。三因素交互作用是指两因素交互作用在另一因素的不同水平对因变量的影响不同。本研究中,SPSS输出结果如下:
如上图所示,在男性中,risk为low与high的人cholesterol随drug的变化曲线不平行,也就是risk*drug交互作用存在;在女性中,risk为low与high的人cholesterol随drug的变化曲线也不平行,说明交互作用也存在。然而,这两个交互作用的形式在男性中和女性中不同,说明交互项risk*drug在因素gender的不同水平对因变量的影响不同,这就是三因素交互作用。
尽管上图可以提供自变量之间交互作用的直观结果,但是我们并不能确定这些样本结果是否可以代表总体,即图形结果是否会受到抽样误差的影响。因此,我们仍需要依据统计检验进行判断。SPSS输出检验结果如下:
在Tests of Within-Subjects Effects表中,如果P>0.05,则表示交互项无统计学意义。如表中突出显示的内容所示,在gender*risk*drug行,三个因素的交互作用具有统计学意义,F(2,60)=7.406,P=0.001。
数值对应的位置见下表:
各个部分对应的含义见下表:
(二) 三因素交互作用存在时的分析步骤
当三因素交互作用有意义时,需要逐一分析简单两因素交互作用(simple two-way interactions)。我们已经知道gender*risk*drug对因变量有统计学意义,即其中两个自变量的交互作用在第三个因变量的不同水平对因变量的影响不同。
所以,我们需要进行简单两因素交互作用的检验,即在任意一因素的不同水平另外两个因素的交互作用是否对因变量有影响。本例中,我们仅选择验证gender的不同水平,risk*drug是否对因变量有影响。
注:简单两因素交互作用是指在三因素交互作用存在时,两因素交互作用在另一自变量的某个水平有意义。
由于是检验risk和drug两个变量之间是否存在交互作用,我们需要对gender各水平内进行两因素方差分析。我们需要分别分析gender为male时和gender为female时的两因素交互作用,如下图所示。
1. 简单两因素交互作用
(1) SPSS操作
首先需要拆分数据
1) 点击Data→Split File
出现下图:
2) 点击Compare groups
3) 将gender放入Groups Based on栏
4) 点击OK
(2) 下面为简单两因素交互作用的SPSS操作
1) 点击Analyze→General Linear Model→Univariate
出现下图:
2) 将gender从Fixed Factor(s):中去掉,如下图所示
3) 点击Paste,弹出IBM SPSS Statistics Syntax Editor界面
4) 在/METHOD=SSTYPE(3)后输入
/TEST=risk*drug VS 5.064887 DF(60),如下:
解释:该语句的含义是在模型中比较两因素交互作用与人为规定的误差项,而非SPSS默认的误差项。这里的误差项是上述三因素方差分析中的误差项结果,如下图所示,5.064887为误差项的平方和,60为误差项的自由度。
5) 点击Run→ALL
(3) 在解释结果之前,我们先来把数据合并,具体操作如下:
1) 在主菜单点击Data→Split File
出现下图:
2) 点击Analyze all cases, do not create groups
3) 点击OK
(4) 简单两因素交互作用的解释
根据上述操作,SPSS会产生很多表格,但我们只需要看Custom Hypothesis Tests部分的Test Results表格,如下图所示:
如下图所示,我们首先需要分析的是男性中,risk*drug是否有统计学意义。
如下图突出显示所示,P=0.008,该P值代表男性中risk*drug的P值,由于其小于0.05(进行了Bonferoni 校正),所以交互项有统计学意义,即risk*drug在男性中有简单两因素交互作用。
下面我们在分析女性中,risk*drug是否有统计学意义。
如下图突出显示所示,P=0.065,该P值代表女性中risk*drug的P值,由于其大于0.05,所以交互项无统计学意义,即risk*drug在女性中无简单两因素交互作用。
2. 简单单独效应
由于risk*drug在男性中有简单两因素交互作用,因此我们进一步判断在男性中risk和drug是否存在简单单独效应。根据上述操作,SPSS会产生很多表格,但我们只需要看Custom Hypothesis Tests部分的Test Results表格,如下图所示,该表是drug的简单单独效应的结果。
我们先看risk为low时,drug的简单单独效应结果,如下图所示突出显示的部分。
如下表突出显示所示,P=0.521>0.05(进行了Bonferoni 校正),所以在男性、risk为low的研究对象中,drug对胆固醇的简单单独效应不具有统计学意义。
注释:有些研究者或统计专家推荐在检验多个简单两因素交互作用时进行校正。一种常用的方法是对统计学显著水平进行Bonferroni校正。该校正方法是对你认定的统计学显著水平(本例中α=0.05)除以待检验简单两因素交互作用的个数(本例中为2),这样得到校正后的统计学显著水平(本例中校正α=0.025)。对本例进行Bonferroni校正,会得到相同的结论。
下面我们分析男性中,risk为high的研究对象中drug的结果。
如下表突出显示所示,P<0.001<0.05,所以在男性、risk为high的研究对象中,drug对胆固醇的简单单独效应具有统计学意义。
3. 简单两两比较
根据上述简单单独效应的结果,drug在男性、risk为high的研究对象中对胆固醇的简单单独效应具有统计学意义,而drug有三个水平(Drug A, Drug B和Drug C),所以需要进行两两比较。
(1) 简单两两比较的SPSS操作
1)在主菜单点击 Analyze > General Linear Model > Univariate... ,如下图所示
出现下图:
2)将gender和risk选入Fixed Factor(s):框中;
3)点击Options,出现下图;
4)去掉勾选Descriptive statistics和Homogeneity tests;
5)点击Continue>Paste,出现IBM SPSS Statistics Syntax Editor 窗口;
6) /EMMEANS=TABLES(gender*risk*drug)后输入
COMPARE(drug) ADJ(Bonferroni)
7)点击Run>All
(2) 简单两两比较的结果解释
如下图所示,Pairwise Comparisons 表给出了所有的两两比较结果,但根据上面的分析我们只需要男性中、risk为high的drug的两两比较结果。
如下表突出显示所示,分别是drugA与drugB的比较、drugA与drugC的比较和drugB与drugC的比较。drugA组的胆固醇水平显著高于drugB组,P<0.001;drugA组的胆固醇水平显著高于drugC组,P<0.001;drugB组的胆固醇水平与drugB组的差异无统计学意义,P=0.897。
注:本例中由于进行Bonferroni校正,校正后的α水平=原α÷比较的次数=0.05÷3=0.017。
(三) 三因素交互作用不存在时的分析步骤
当三因素交互作用不存在时,需要先判断是否存在两因素交互作用。
1. 两因素交互作用
Test of Between-Subjects Effects表给出了三个两因素交互项对因变量的影响结果。在Test of Between -Subjects Effects表中,P<0.05时,交互项对因变量的影响存在统计学意义;P≥0.05时,交互项对因变量的影响不存在统计学意义。
如下图突出显示所示,gender*risk对因变量的影响不具有统计学意义,F(1,60)=0.141,P=0.708, gender*drug对因变量的影响有统计学意义,F(2,60)=3.338,P=0.042,risk*drug对因变量的影响不具有统计学意义,F(2,60)=0.713,P=0.494。
2. 单独效应
由于gender*drug对因变量的影响具有统计学意义,我们需要继续分析单独效应。
(1) 单独效应的SPSS操作
1) 在主界面点击Analyze→General Linear Model→Univariate
出现下图:
2) 点击Options
3) 将gende*risk*drug放回Factor(s) and Factor Interactions:框中,并将gende*drug选入Display Means For:框中,去掉勾选Descriptive statistics和Homogeneity tests,如下图所示:
4) 点击Continue→Paste,弹出IBM SPSS Statistics Syntax Editor界面:
5) /EMMEANS=TABLES(gender*drug) 后输入
COMPARE(drug) ADJ(BONFERRONI),如下:
解释:COMPARE(drug)是指根据drug变量提供单独效应结果;ADJ(BONFERRONI)是指对各组进行成对比较,并对结果进行Bonferroni调整。如果不需要成对比较,也可以去掉这句语法。
解释:COMPARE(gender)是指根据gender变量提供单独效应结果。
6) 点击Run→ALL
(2) 单独效应的解释
1) drug的单独效应
drug的单独效应就是在不同的gender中分析drug的作用。在Estimates表中,分别给出了男女适用不同药物后胆固醇的平均值、标准误和95%的置信区间。但他们之间的差异是否有统计学意义我们需要看Univariate Tests表。
Univariate Tests表给出了对应的结果。如下表突出显示所示,在男性中,使用不同药物的研究对象的胆固醇水平的差异具有统计学意义,P<0.001。
如下表突出显示,在女性中,使用不同药物的研究对象的胆固醇水平的差异不具有统计学意义,P=0.620。
根据上述结果,由于男性中drug存在单独效应,而drug共有三个分组,我们需要继续分析两两比较的结果。Pairwise Comparisons表格给出该组数据的均值比较结果,如下:
下面我们以男性中,drugA和drugB为例,如下表突出显示,两者差值为0.440,P=0.001<0.05,说明使用drugA和drugB的研究对象的胆固醇水平的差异具有统计学意义。
类似的,drugA和drugC的研究对象的胆固醇水平的差异具有统计学意义,p<0.001;drugB和drugC的研究对象的胆固醇水平的差异不具有统计学意义。
2) gender的单独效应
该部分与drug的单独效应分析类似,不过由于gender只有两个水平,所以不需要两两比较。在此不做赘述。
六、撰写结论
采用三因素方差分析gender、risk和drug对胆固醇水平影响。通过箱式图判断,本研究数据存在一个超过3倍箱式长度的异常值,经Shapiro-Wilk检验,除了一个组(女性、risk为high、使用drugA,P=0.009)之外,其他组的胆固醇水平均服从正态分布; Levene方差齐性检验结果显示方差齐(P=0.994)。
在本研究中,gender、risk和drug对胆固醇水平的影响上存在三因素交互作用,F(2, 60) = 7.406,P=0.001。
简单两因素交互分析作用结果显示,在男性中,drug和risk的简单两因素交互作用存在,F(2, 60) = 5.252,P=0.008;在女性中,drug和risk的简单两因素交互作用不存在,F(2, 60) = 2.868,P=0.065。
简单单独效应分析结果显示,在男性、具有心脏病风险为高的研究对象中,drug对胆固醇水平的简单单独效应存在,F(2, 60) = 14.766,P<0.001;但在男性、具有心脏病风险为低的研究对象中,drug对胆固醇水平的简单单独效应不存在,F(2, 60) = 0.660,P=0.521。
除非特殊说明,本研究均使用均数±标准差反映数据情况。采用成对比较分析男性、risk为high组中drug的简单两两比较结果,并用Bonferroni法进行校正。
在该组中,使用Drug A、Drug B和Drug C的研究对象的胆固醇浓度分别为6.13 ± 0.36 mmol/L,5.44 ± 0.33 mmol/L和5.26 ± 0.27 mmol/L。
Drug A与Drug B组中研究对象的胆固醇浓度差值为0.687 (95% CI, 0.274~1.100) mmol/L,P<0.001,差异具有统计学意义;Drug A与Drug C组中研究对象的胆固醇浓度差值为0.863 (95% CI, 0.449~1.276) mmol/L, P<0.001,差异具有统计学意义;而Drug B与Drug C组中研究对象的胆固醇浓度差值为0.176 (95% CI, -0.237~0.589) mmol/L, P=0.897,差异不具有统计学意义。
(如果你想使用文中数据进行练习,请随时给小咖(微信:xys2016ykf)发消息,小咖将原始数据发给你。)
更多阅读
关注医咖会,轻松学习统计学~
有临床研究设计或统计难题?以下三种方式来帮你:
加小咖个人微信(xys2016ykf),拉你进统计讨论群和诸多小伙伴一起交流。
使用电脑进入医咖会官网:http://www.mediecogroup.com/,搜索类似问题及答案,或者直接提问!
直接点击左下角“阅读原文”,提出你的难题!