
这两年经常有临床、教育、心理方向的学生拿着数据来找我说分组比较时基线不齐想做协方差分析结果Shapiro-Wilk一跑p0.001Levene检验也亮红灯。这时候如果你还硬上参数ANCOVA审稿人大概率会问一句你的模型假设成立吗我一般会建议他们试试Quade非参数协方差分析。这个方法的核心是把原始因变量和协变量都换成秩再在线性回归框架下剔除协变量影响最后比较组间差异。优点很实在SPSS不需要额外模块基础菜单几步就能做。但要注意SPSS并没有提供名为“Quade”的现成对话框得手动分几步完成。这篇文章就把整个流程完整走一遍从数据格式、前置检验、排秩、回归残差到最终在论文里怎么报告结果全部讲清楚你用的时候照着操作即可。1. 为什么需要Quade非参数协方差分析1.1 参数ANCOVA的三个硬门槛协方差分析在原理上可以看成“先回归、再方差分析”先让协变量把因变量的变异解释掉一部分然后看分组变量是否还有额外解释力。这种做法相当于是把基线差异“先剔除掉”再比较处理后各组的表现在随机分组不完全均衡时特别有用。但参数ANCOVA有三个前提条件任何一条不满足都会让结论站不住脚。因变量在协变量水平上呈正态分布且各组总体方差相等。实际数据里尤其量表得分、计数资料、明显偏态的生物指标正态性经常不成立。协变量与因变量之间呈线性关系。这个还好画散点图通常能看出来但非线性时参数模型会低估或高估调整效果。各组的回归线斜率相同也就是“回归平行性”。如果斜率不同协变量的调整作用在不同组里不一致一个全域调整系数是没意义的。我在实际咨询里见过很多硬做的情况变量是0-10分的疼痛评分分布呈明显的双峰样本量只有二十几Shapiro-Wilk p值小数点后好几个0Levene也拒绝方差齐性最后还是强行跑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_followup135.242.1128.937.6234.148.3240.549.2330.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 Listgroup选入Factor List打开Plots选项卡勾选Normality plots with tests其他默认。输出里主要看Shapiro-Wilk表。如果p值小于0.05说明数据显著偏离正态。这里的“显著”要看样本量小样本下Shapiro-Wilk检验效力不足p0.05也不代表一定正态最好结合直方图和Q-Q图一起判断。第二个是方差齐性检验。最简单的方式是Analyze → Compare Means → One-Way ANOVA在Options里勾选Homogeneity of variance test输出Levene统计量。如果Levene检验p0.05说明原始Y的组间方差不可比。需要提醒一点Quade是对排秩后的数据进行计算理论上并不假设原始Y方差齐。所以Levene检验结果不是Quade的适用性前提而是用来对比的参数ANCOVA是否可行的证据。如果Levene不显著你继续用参数ANCOVA也没问题如果显著Quade就是更稳妥的选择。我在报告里通常写的是“因Levene检验显示方差不齐F3.21p0.048故采用Quade非参数协方差分析作为主要结论依据。”2.3 回归平行性怎么查回归平行性是ANCOVA特别重要的一条假设。参数版本在SPSS里用Analyze → General Linear Model → Univariate把Y_followup选入Dependentgroup选入Fixed FactorX_baseline选入Covariate然后在Model里构建“group*X_baseline”交互项。如果交互项不显著说明各组的回归斜率没有明显差异。在Quade框架下检验方式不变只是把变量换成秩。也就是用R_Y做因变量R_X做协变量group做固定因子模型里加入group*R_X交互项。如果交互项p0.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_followupIndependent(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 ANOVADependent选RES_1Factor选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 ANOVAk samples。这样得到的是Kruskal-Wallis H统计量。这相当于在“Quade残差”上再做一次非参数比较是对经典方法的一种稳健扩展。实际应用中如果数据偏态很严重我通常会用H检验的结果做辅助判断。注意这两种检验背后的原假设一致各组调整后残差的分布位置相同。若p0.05则拒绝原假设认为至少有一组与其余组不同。3.4 用UNIANOVA快速复核上面三步操作是从“回归残差方差分析”的角度还原Quade。另一种更直接的复核方法是跳过一次回归直接用二秩变量跑一般线性模型。菜单路径Analyze → General Linear Model → Univariate选RY_followup为Dependent Variablegroup为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.552-2.433.9230.574.10这说明在控制基线排名后组1的平均排名比预测值高出约1.86位组2低约2.43位。数值本身没有直接的单位但方向清楚组1表现最好组2表现最差。此时可以先有个直观判断再看显著性检验。4.2 核心结果组间检验的F值和p值这是全文最需要写清楚的地方。如果采用残差单因素ANOVA报告的是F统计量。假设我们得到的结果是F(2,33)4.87p0.014就可以解释为在基线功能评分秩被剔除以调整后三种康复方案的治疗后功能评分秩残差差异有统计学意义。也就是说治疗方案对随访评分的影响在调整基线后仍然存在。如果采用Kruskal-Wallis则报告H统计量比如H(2)8.12p0.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.29p0.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.87p0.014。两两比较显示方案1与方案2组差异显著p0.021其余组间差异无统计学意义。”这段模板里建议把具体的F值、p值替换成自己的结果并注明SPSS版本。如果担心读者不了解方法可以在方法部分加一句引用Quade1967提出的基于秩的协方差分析方法。这样文章既规范又清晰。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 rankSPSS的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 p0.09F检验顺利通过。所以“排秩”带来的稳健性通常比想象中好真正的方差不齐反而少见。若真遇到报告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十分钟内就能出结果而且每一步都能解释清楚这在论文写作和毕业答辩论中都很有优势。