☰
SPSS实现Quade非参数协方差分析完整教程
2026/10/3 18:51:19 网站建设 项目流程

这两年经常有临床、教育、心理方向的学生拿着数据来找我,说分组比较时基线不齐,想做协方差分析,结果Shapiro-Wilk一跑p<0.001,Levene检验也亮红灯。这时候如果你还硬上参数ANCOVA,审稿人大概率会问一句:你的模型假设成立吗?我一般会建议他们试试Quade非参数协方差分析。这个方法的核心是把原始因变量和协变量都换成秩,再在线性回归框架下剔除协变量影响,最后比较组间差异。优点很实在:SPSS不需要额外模块,基础菜单几步就能做。但要注意,SPSS并没有提供名为“Quade”的现成对话框,得手动分几步完成。这篇文章就把整个流程完整走一遍,从数据格式、前置检验、排秩、回归残差,到最终在论文里怎么报告结果,全部讲清楚,你用的时候照着操作即可。

1. 为什么需要Quade非参数协方差分析

1.1 参数ANCOVA的三个硬门槛

协方差分析在原理上可以看成“先回归、再方差分析”:先让协变量把因变量的变异解释掉一部分,然后看分组变量是否还有额外解释力。这种做法相当于是把基线差异“先剔除掉”,再比较处理后各组的表现,在随机分组不完全均衡时特别有用。

但参数ANCOVA有三个前提条件,任何一条不满足都会让结论站不住脚。

  • 因变量在协变量水平上呈正态分布,且各组总体方差相等。实际数据里,尤其量表得分、计数资料、明显偏态的生物指标,正态性经常不成立。
  • 协变量与因变量之间呈线性关系。这个还好,画散点图通常能看出来;但非线性时参数模型会低估或高估调整效果。
  • 各组的回归线斜率相同,也就是“回归平行性”。如果斜率不同,协变量的调整作用在不同组里不一致,一个全域调整系数是没意义的。

我在实际咨询里见过很多硬做的情况:变量是0-10分的疼痛评分,分布呈明显的双峰,样本量只有二十几,Shapiro-Wilk p值小数点后好几个0,Levene也拒绝方差齐性,最后还是强行跑ANCOVA。等到审稿意见回来,第一条就是“请解释为什么在违反假设的情况下仍使用参数方法”。这种事其实完全可以提前避免。

1.2 Quade的核心思路:把“药”换成“秩”

Quade非参数协方差分析的思想,说白了就是“田忌赛马”式的比较。不去看原始得分,而是把所有样本放在一起按得分从低到高排名次。原始值是不是正态?没关系,名次之间没有那么极端。协变量是不是线性?先排秩,再对秩做回归,把非线性成分压缩掉一部分。

具体逻辑可以拆成三句话。

第一,分别对协变量和因变量做全样本排秩,得到每个观测的协变量秩R_X和因变量秩R_Y。第二,用R_Y对R_X做普通最小二乘回归,得到回归残差。这个残差的意义就是“排除了协变量秩影响后,因变量秩中还没被解释掉的部分”。第三,比较不同组之间残差的差异,组间残差有明显差别,说明分组效应在控制协变量后仍然存在。

换句话说,参数ANCOVA是在原始量尺上做“平行线平移”,Quade做法是在名次量尺上做同一件事。它不要求原始数据的正态性,对方差齐性的敏感度也低很多,所以特别适合作为参数ANCOVA的稳健替代。

1.3 什么时候该用Quade

不是所有协方差问题都要上Quade,我一般建议在以下几种场景考虑:

  • 因变量是明显偏态分布、有序分类测量(比如量表单项分)或存在大量离群值,参数ANCOVA的正态假设无法满足。
  • Levene检验或残差图显示方差不齐,且样本量不大,没法依赖中心极限定理兜底。
  • 协变量与因变量的关系不是特别线性,但又不想做更复杂的非线性模型。
  • 审稿人明确质疑参数ANCOVA假设时,作为敏感性分析,报告“参数方法和Quade方法结论一致”是很有说服力的。

反过来,如果数据基本满足正态、方差齐、回归平行,参数ANCOVA检验功效更高,不必绕这一圈。非参数方法毕竟会丢掉一部分原始信息,功效通常略低,但它换来的结论稳健性往往更值钱。

2. 数据准备与前置检验

2.1 一个治疗评估的示例数据

为了把操作讲清楚,我构造一个最常见的场景:比较三种康复方案的效果。因变量Y是治疗后第4周的功能评分,分数越高越好;协变量X是治疗前的基线评分;分组变量group取值1、2、3,每组假设12例,总共36例。数据在SPSS里的基本结构只有三列,长格式,一行一个观测:

groupX_baselineY_followup
135.242.1
128.937.6
234.148.3
240.549.2
330.041.8
.........

这里的关键是group必须是数值型,但要在Variable View里把“Measure”设置成Nominal或Ordinal,否则后面有些对话框会把组别当成连续变量。X_baseline和Y_followup都设置为Scale。

如果做多中心或分层设计,可能有center、block这样的变量。Quade方法的分层扩展比较复杂,本文先不考虑,只讲单因素设计。数据里如果有缺失值,排秩时会比较麻烦,建议先做缺失值处理,不要留空。若只有极个别缺失,可以用序列均值或回归插补,但要在论文里写明。

2.2 先跑正态性和方差齐性

很多教程一上来就让排秩,我习惯先做两个快速检查,目的不是“决定要不要用Quade”,而是“知道你的数据糟糕在哪儿,后面写结果才好解释”。

第一个是正态性检验。菜单路径:Analyze → Descriptive Statistics → Explore,把Y_followup选入Dependent List,group选入Factor List,打开Plots选项卡,勾选Normality plots with tests,其他默认。输出里主要看Shapiro-Wilk表。如果p值小于0.05,说明数据显著偏离正态。这里的“显著”要看样本量,小样本下Shapiro-Wilk检验效力不足,p>0.05也不代表一定正态,最好结合直方图和Q-Q图一起判断。

第二个是方差齐性检验。最简单的方式是Analyze → Compare Means → One-Way ANOVA,在Options里勾选Homogeneity of variance test,输出Levene统计量。如果Levene检验p<0.05,说明原始Y的组间方差不可比。

需要提醒一点:Quade是对排秩后的数据进行计算,理论上并不假设原始Y方差齐。所以Levene检验结果不是Quade的适用性前提,而是用来对比的参数ANCOVA是否可行的证据。如果Levene不显著,你继续用参数ANCOVA也没问题;如果显著,Quade就是更稳妥的选择。我在报告里通常写的是:“因Levene检验显示方差不齐(F=3.21,p=0.048),故采用Quade非参数协方差分析作为主要结论依据。”

2.3 回归平行性怎么查

回归平行性是ANCOVA特别重要的一条假设。参数版本在SPSS里用Analyze → General Linear Model → Univariate,把Y_followup选入Dependent,group选入Fixed Factor,X_baseline选入Covariate,然后在Model里构建“group*X_baseline”交互项。如果交互项不显著,说明各组的回归斜率没有明显差异。

在Quade框架下,检验方式不变,只是把变量换成秩。也就是用R_Y做因变量,R_X做协变量,group做固定因子,模型里加入group*R_X交互项。如果交互项p>0.05,可以认为平行性大致满足。如果交互项显著,就意味着各组在协变量上的调整趋势不同,此时不仅参数ANCOVA受影响,Quade的可解释性也会打折。这种情况我会建议干脆不要做协方差分析,而是分组单独描述回归关系,或者直接改为交互模型。

很多人会忽略这一步,但我必须强调:协变量的回归斜率不平行,Quade得到的“调整后组间差异”实际上可能掩盖了组内异质性。宁可多花两分钟查一下,也别让审稿人帮你查。

3. SPSS手动实现完整流程

3.1 第一步:对因变量和协变量分别排秩

Quade方法的第一步,是把Y_followup和X_baseline都转换成秩。

SPSS菜单路径:Transform → Rank Cases。在弹出对话框中,把X_baseline和Y_followup同时选入Variable(s)框。Rank Types默认勾选Rank,这就是普通秩1、2、3……N。如果有并列,SPSS默认取平均秩。这个设置可以保持默认,因为Quade本身对同分处理没有特殊要求,平均秩是稳妥选择。

点击OK后,数据编辑器里会多出两列,默认变量名是RX_baseline和RY_followup,实际命名规则是“R+原变量名”。本质上,SPSS会把所有36个观测的X从最小值到最大值编成1到36号,Y也单独编成1到36号。注意这里的“排名”是混合所有组一起排的,不是在组内单独排。这一点很关键,如果分别在组内排秩,就失去了跨组比较的意义。

我建议在排秩前先对原变量按group做一下排序,或者至少看一眼前几条记录,确认新生成的R列和原始顺序对应得上。以前有学生把排秩后的数据当成新数据,覆盖了原始列,后来想重跑参数ANCOVA又得重来。所以养成好习惯:Rank Cases生成新变量时,原始列保留不变。

3.2 第二步:用秩做回归,保存残差

排秩完成后,需要把协变量的秩作为自变量,因变量的秩作为因变量,做一次线性回归,并保存残差。

菜单路径:Analyze → Regression → Linear。在Linear Regression对话框中,Dependent选RY_followup,Independent(s)选RX_baseline。Method保持Enter。这是求R_Y对R_X的一条普通最小二乘回归线。

关键在Save按钮。点击Save,在Residuals区域勾选Unstandardized,其他可以不动。点击Continue,再点OK。SPSS会输出一张回归结果表,同时在数据表里新增一列,变量名通常是RES_1。这一列就是每个观测的“未标准化残差”,也是Quade方法的核心中间量。

这步的统计含义要解释一下:线性回归拟合出来的预测值,代表“如果你只看协变量秩的排位,因变量秩大概处于什么位置”。残差则是“实际名次比预测名次高多少或低多少”。如果某组残差整体为正,说明控制了基线秩之后,这组功能评分排名普遍高于平均水平;残差整体为负则反之。

回归表里的R方、F值这些先不用太关心,至少看一个东西:RX_baseline的回归系数b和显著性。如果协变量秩和因变量秩关系不显著,说明基线评分对随访评分的预测作用有限,但后面组间检验仍然有效,只是“调整”的意义没那么大。这时可以顺便报告一句“秩回归中协变量效应不显著”,让读者了解数据特性。

3.3 第三步:对残差做组间检验

现在手里有一列RES_1,这就是剔除协变量秩影响后每个观测的调整后结果。接下来只需要判断这列残差在不同group之间有没有差异。

最经典的Quade流程是使用单因素方差分析:Analyze → Compare Means → One-Way ANOVA,Dependent选RES_1,Factor选group。Options里勾选Descriptive和Homogeneity of variance test,如果需要稳健检验,还可以勾选Welch。点击OK后,核心看ANOVA表的F值和显著性。

如果残差的方差齐性仍然不满足,可以使用非参数的单因素检验。菜单路径:Analyze → Nonparametric Tests → Independent Samples,目标变量选RES_1,分组变量选group,在Settings里选择Custom,第三个Kruskal-Wallis 1-way ANOVA(k samples)。这样得到的是Kruskal-Wallis H统计量。这相当于在“Quade残差”上再做一次非参数比较,是对经典方法的一种稳健扩展。实际应用中,如果数据偏态很严重,我通常会用H检验的结果做辅助判断。

注意,这两种检验背后的原假设一致:各组调整后残差的分布位置相同。若p<0.05,则拒绝原假设,认为至少有一组与其余组不同。

3.4 用UNIANOVA快速复核

上面三步操作是从“回归残差+方差分析”的角度还原Quade。另一种更直接的复核方法,是跳过一次回归,直接用二秩变量跑一般线性模型。

菜单路径:Analyze → General Linear Model → Univariate,选RY_followup为Dependent Variable,group为Fixed Factor(s),RX_baseline为Covariate(s)。模型默认包含主效应。Options里可以勾选Parameter estimates和Descriptive statistics。

这个模型等价于“把普通ANCOVA的原始值换成秩之后直接做”,输出中的“Tests of Between-Subjects Effects”表里,group那行的F值就是控制了协变量秩后分组效应的检验结果。它的自由度算法和“残差+单因素ANOVA”不太一样(UNIANOVA会额外扣除协变量用的自由度),但多数情况下结论方向一致。我习惯把UNIANOVA作为敏感性复核:如果残差ANOVA和UNIANOVA的F值差别很大,我会回去检查数据是不是排错了秩。

这里要提醒一句:很多文献说“Quade method = rank ANCOVA”,其实就是UNIANOVA的做法;另一些文献则描述为“残差ANOVA”。两种在统计本质上高度接近,但不完全等价。如果论文没特别指定,我建议主报告残差ANOVA结果,然后在脚注或方法部分补充一句“使用秩ANCOVA复核得到类似结论”,这样最稳妥。

4. 结果解读与论文报告指南

4.1 从回归开始看协变量的调整效果

结果解读有顺序,别一上来就盯p值。先看第二步回归的结果:如果RY_followup对RX_baseline的回归系数显著,说明基线排名对随访排名有正向预测作用。回归系数b大约是0.6,就表示协变量排名每前进1位,因变量排名平均前进0.6位。此时使用协方差的“调整”是真的在起作用。

然后看残差列的描述性统计。SPSS会为每个group输出RES_1的均值。这个均值代表该组在剔除协变量影响后的平均排名缺口,也是Quade分析中最接近“调整后均值”的东西。比如三组残差均值可能是:

group残差均值标准差
11.864.55
2-2.433.92
30.574.10

这说明在控制基线排名后,组1的平均排名比预测值高出约1.86位,组2低约2.43位。数值本身没有直接的单位,但方向清楚:组1表现最好,组2表现最差。

此时可以先有个直观判断,再看显著性检验。

4.2 核心结果:组间检验的F值和p值

这是全文最需要写清楚的地方。如果采用残差+单因素ANOVA,报告的是F统计量。假设我们得到的结果是F(2,33)=4.87,p=0.014,就可以解释为:在基线功能评分秩被剔除以调整后,三种康复方案的治疗后功能评分秩残差差异有统计学意义。也就是说,治疗方案对随访评分的影响在调整基线后仍然存在。

如果采用Kruskal-Wallis,则报告H统计量,比如H(2)=8.12,p=0.017,说明组间残差秩的位置分布不全相同。对非参数读者来说,H检验更“保险”,因为你绕开了ANOVA对残差正态性的潜在要求。但经典Quade本身并不需要在最后再上非参数检验,F检验更常见。所以我的建议是:正文报告F值,若担心方差齐性,把H检验作为稳健性结果放在补充材料或脚注里。

有些论文会只说“Quade非参数协方差分析结果显示组间差异有统计学意义”,这太模糊了。至少要给出检验统计量、自由度和p值,否则别人无法评估你的结果。

4.3 调整后的秩均值与事后比较

组间检验显著之后,还要回答“到底哪两组有差异”。此时可以观察各组残差均值,但更好的做法是做事后比较。在One-Way ANOVA对话框里点击Post Hoc,对于残差数据可以选择Bonferroni或Tukey,如果方差不齐则选择Games-Howell。SPSS会给出一张多重比较表,报告两两比较的均值差、标准误和调整后p值。

因为残差是秩回归的产物,两两比较使用的“均值差”实质上是调整后秩残差均值之差。它不像原始量尺上的均数差那样直观,但方向和相对大小仍有意义。比如组1与组2的残差均值差为4.29,p=0.021,就可以写“在控制基线评分后,方案1的调整后等级优于方案2”。

也有研究者喜欢用UNIANOVA中的“Estimated Marginal Means”来比较分组,这等价于在秩ANCOVA模型下预测各组均值。如果你主报告残差ANOVA,事后比较用Games-Howell或Bonferroni即可;如果主报告UNIANOVA,那就在GLM的Options里勾选Estimated Marginal Means并选择group,然后看成对比较表。

4.4 论文报告模板

下面是直接可以改写进论文或研究报告的模板段落:

“由于治疗后评分不满足正态性与方差齐性假设,采用Quade非参数协方差分析比较三组患者的随访功能评分。该方法首先将基线评分X与随访评分Y在全样本中转换为秩;随后以协变量秩R_X为自变量、因变量秩R_Y为因变量进行线性回归并保存残差;最后以残差为结局变量进行单因素方差分析。结果显示,在控制基线评分影响后,三组随访评分的秩残差差异具有统计学意义(F(2,33)=4.87,p=0.014)。两两比较显示,方案1与方案2组差异显著(p=0.021),其余组间差异无统计学意义。”

这段模板里,建议把具体的F值、p值替换成自己的结果,并注明SPSS版本。如果担心读者不了解方法,可以在方法部分加一句引用:Quade(1967)提出的基于秩的协方差分析方法。这样文章既规范又清晰。

5. 常见问题与避坑实录

5.1 SPSS菜单里找不到Quade怎么办

这不是版本问题,SPSS始终没有提供一键quade方法。也不需要安装额外模块。你只要按第3部分的“排秩→回归→残差→ONE-WAY ANOVA”走一遍,结果就是Quade分析。有些教程建议用Syntax写宏,但手动操作已经足够,还能让自己更清楚每一步在算什么。

如果要用程序化方式减少重复劳动,可以学习Record Syntax。SPSS语言里先RANK,再REGRESSION,最后ONEWAY,代码简洁,适合批处理多个数据。但第一次做,还是建议用菜单跑一遍,理解每个输出对应哪一步。

5.2 排秩时同分处理

排秩时如果遇到相同原始值,SPSS默认分配平均秩。例如两个并列第10和第11,都会被赋予10.5。平均秩在后续回归中没有大问题,但大量同分会导致秩变量有很多并列,回归拟合可能不理想。这时候可以查看同分比例:如果超过15%的观测有重复,应考虑是否数据本身信息量不足,或者评估工具分辨率太粗。

另一种处理是对原始分做“分数秩”(fractional rank),SPSS的Rank Types里有Fractional Rank选项,取值除以样本量,相当于百分位排名。Quade原始文献并没有强制规定用哪种秩,所以选择平均秩或分数秩都可以,但要在方法部分写清楚。我个人用平均秩,因为结果解释最自然:残差表示排名比预测高几位。

5.3 协变量与分组交互显著怎么办

做完回归平行性检验,如果group*RX交互显著,最直接的反应是“停下”。因为无论参数还是非参数协方差分析,都假设协变量在各组的作用方向一致。交互显著意味着某些组的基线差异对结局影响更大或更小,统一的调整是不合理的。

这种情况下,可选做法有三种:一是分单组分别报告协变量与结局的回归关系,不进行组间调整比较;二是把交互项纳入模型,把分组效应在协变量不同取值上分开解释;三是改变分析目标,直接比较变化值Y-X,但这需要从临床意义上确认变化值合理。总之不要假装交互不存在。

5.4 残差依然不满足方差齐性

Quade方法是在秩上操作,比原始数据稳健得多,但残差仍可能方差不齐。这时不必慌乱,优先看残差的Levene检验结果。如果p略小于0.05,问题不大,因为F检验对轻微的方差异质性尚可容忍。如果p值很小,建议在第三步使用Welch方差分析或Kruskal-Wallis检验。

我有一次处理疼痛评分数,原始Y严重偏态,秩回归后残差基本对称,Levene p=0.09,F检验顺利通过。所以“排秩”带来的稳健性通常比想象中好,真正的方差不齐反而少见。若真遇到,报告H检验即可,结论照样能写。

5.5 结果与参数ANCOVA冲突怎么解释

这是个好问题,也是最容易在答辩中被追问的点。Quade和参数ANCOVA结论不一致,不等于某个方法“错了”。它们处理数据的方式不同:参数方法对原始值中的极端值很敏感,秩方法会把极端值压缩成同一个相对排名,调整策略不同,结论自然可能不同。

此时可以检查原始数据是否存在离群值。如果去掉一两个极值后参数ANCOVA结论变得和Quade一致,那基本说明极值在驱动原始结果,Quade的稳健性更可信。如果去掉极值后仍然不一致,应该怀疑模型设定,比如协变量关系非线性或分组不平衡,此时必须进一步做数据探索,而不是简单选一个好看的结果放进论文。

5.6 两组样本也能用Quade吗

完全可以。Quade不限于三组,两组设计同样适用。两组时有两种等效做法:一是把第3部分的残差拿出来做独立样本t检验或Mann-Whitney U检验;二是直接看UNIANOVA中group的F值,t的平方等于F,结论一致。实际操作中,两组直接用“排秩→回归→残差→t检验”更简单。但要注意,两组设计本来就可以用Wilcoxon秩和检验处理,Quade的价值在于多了一个协变量需要控制。如果协变量与结局根本不相关,没必要引入Quade,直接做普通非参数比较即可。

写在最后

Quade这个方法在SPSS里需要手动拼装,但正因如此,你会在排秩、回归残差、组间比较的每一步中搞清楚自己到底在做什么。这些年我用它处理过不少临床量表数据和满意度评分数据,比起参数ANCOVA,最大的体会是“心里踏实”——不用一边看审稿意见一边修改假设。你需要记住的核心只有三句话:混合全样本排秩、用秩回归取残差、用残差做组间检验。把这个流程做成自己的SPSS操作模板,以后遇到不满足假设的协方差问题,打开SPSS十分钟内就能出结果,而且每一步都能解释清楚,这在论文写作和毕业答辩论中都很有优势。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询