ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SPSS中Quade非参数协方差分析:手动实现完整指南

SPSS中Quade非参数协方差分析:手动实现完整指南 上周一个做教育测量的学生来找我手里数据大概是这样的三组学生用不同方法教学记录了前测和后测成绩想比较三种方法的效果差异同时要把前测成绩当作协变量控制掉。问题在于后测成绩明显右偏方差不齐样本量也只有三十出头。SPSS里自带的分析——协方差分析——跑起来倒是没什么障碍但残差正态性检验和方差齐性检验几乎全军覆没结果写进论文心里完全没底。我给他指了一条路Quade非参数协方差分析。这个方法在SPSS里没有一键菜单网上也很少有人把完整流程讲明白但其实手动实现非常清晰核心就是一句话先编秩、再回归、后比较。这篇文章就把从数据准备到结果解读的每一步都摊开讲清楚顺便给出可以直接在SPSS中复现的完整操作。如果你手头的数据不满足正态性、方差不齐或者本来就是等级资料、小样本传统的参数协方差分析做不了那这个方法是目前最实用的替代方案之一。我默认读者已经能分清自变量、因变量、协变量这三个概念也知道SPSS的基本界面操作但不需要你很懂统计原理。跟着走一遍你就能自己把分析跑完并且知道每一步在干什么、为什么这么干。1. 为什么协方差分析需要非参数版本1.1 参数协方差分析的三道坎传统协方差分析ANCOVA听起来很美好先回归掉协变量的影响再比较组间差异。但很多人在实际项目中忽略了它的前提条件。SPSS的Univariate过程能直接输出很多检验但真正决定结果能否站得住脚的是下面三条硬性假设。第一是正态性。要求的是各组内因变量Y在控制协变量X后的残差呈现正态分布不是原始Y的正态分布很多人一开始就搞错。偏偏教育、心理、管理、生物实验的数据像满意度评分、行为次数、生理指标经常是偏态的有的甚至呈明显的长尾分布。残差一旦偏离正态F检验的p值就不准了样本量越小偏差越明显。第二是方差齐性。要求各组残差的方差大体相同。如果组间样本量差距大或者其中一组数据特别分散方差齐性很容易被破坏此时参数ANCOVA的第一类错误率会明显上升也就是本来没差异却容易做出有差异的错误结论。第三是线性关系和回归斜率平行。协变量X对Y的影响在所有组里应该方向一致、强度相近否则组间比较会被X和组的交互作用污染。实际操作中这个假设一旦违反后面所有校正都是白搭。问题的关键在于这三条假设同时满足的概率在真实数据里远比你想象的低。尤其是小样本研究想检验这些假设本身就很困难检验功效不足检验通过了也不代表真的满足。1.2 秩变换解决问题的基本思路既然原始数据不满足那些规矩那就换一种尺度去看待它。秩变换的思路非常朴素不再关心数值本身到底是多少只关心它在所有观测里的相对位置。比如后测成绩分别是62分、65分、68分编成秩就是1、2、3。这样做的好处是把偏态分布、异常值、方差不齐这些形状问题全部抹平了剩下的只有排序信息。但这里要注意秩变换不是简单地把Y编个秩然后就去做方差分析。那样的话协变量X的影响还在数据里你没有控制它。Quade检验的核心思路是把协变量X也变成秩然后在秩空间里做一次回归把X秩对Y秩的影响剔除掉再用剩下的残差去比较组间差异。整个过程完全绕开了正态性和方差齐性的要求因为你处理的是排位而不是原始分布。1.3 Quade检验的两种常见实现路径Quade在1967年提出秩协方差分析之后一直没有进入SPSS的内置菜单所以实操中大家用的都是手动实现的版本。目前我见过的主流做法有两种。第一种是秩-秩回归残差法也是本文重点演示的方法把X和Y分别编秩用Y秩对X秩做线性回归提取未标准化残差再对残差做组间检验。这个方法计算量小思路直观SPSS几步就能完成。第二种是分层秩调整法把X秩分成若干层在每一层内对Y秩做中心化调整然后用调整后的值比较组间差异。这个方法更接近区组设计的逻辑但SPSS里操作起来很绕需要自己写很多中间变量实际应用中没有第一种普遍。两种方法在大样本情况下结论通常一致对于绝大多数论文和课题来说掌握第一种就够了。2. 算法拆解秩-秩回归残差法2.1 编秩把数值大小换成排位无论是协变量X还是因变量Y都要先做一次编秩。SPSS的Rank Cases功能可以同时处理多个变量它会把所有个案混合在一起排序最小的赋秩1最大的赋秩N。编秩时有几个细节需要注意。如果数据存在并列SPSS默认采用平均秩也就是并列的几个数取它们所占位置的平均值。比如两个并列第5和第6名它们的秩就是5.5。这个默认设置不要改它是最标准的处理方式。另外编秩时千万不能把分组变量放进By框里放进去了就会变成组内编秩也就是每组内部各自排1到n秩的意义完全不同整个分析就废了。编完秩之后X和Y各自多出一列新变量这两列就是后续计算的原材料。2.2 回归取残差在秩空间里剔除协变量影响这一步是整个方法的核心。用Y的秩作为因变量X的秩作为自变量做一元线性回归然后保存每个观测的未标准化残差。很多人不理解为什么这样能控制协变量。其实道理和参数协方差分析完全一样只不过把原始值换成了秩。回归线描述的是随着X秩升高Y秩平均会升高多少。残差则是实际Y秩减去回归预测值代表的是在剔除X秩影响之后这个样本的Y秩相对偏高还是偏低。残差为正说明这个观测的因变量排名高于X排名所预期的位置残差为负说明低于预期。这个预期位置就是协变量带来的影响剔除掉之后剩下的部分就是组别效应加上随机误差。2.3 组间比较残差再做一次检验得到残差值后用分组变量对残差做单因素方差分析。由于残差经过秩空间的回归处理通常已经比较对称用参数F检验是可以接受的。如果残差仍然有明显偏态也可以改用Kruskal-Wallis检验来比较三组的残差分布位置。这里要提醒一句很多教程走到这一步就直接拿秩做比较完全跳过回归取残差那是把Quade检验做成了普通的Kruskal-Wallis检验没有控制任何协变量。回归这一步绝对不能省。2.4 一个生活化类比我把这个过程类比成选篮球队员X是身高Y是弹跳测试成绩分组代表三种训练方法。身高会影响弹跳但不是你想比较的那个东西。于是你先画一条身高-弹跳的关系线看看160厘米的人大概跳多高、190厘米的人大概跳多高然后看每个人实际跳的高度偏离这条线多少。偏离量大说明这个人的弹跳超出或低于身高带来的预期。最后比较三个训练组的偏离量是否有差别。Quade检验做的就是这件事只不过把身高和弹跳都换成了名次。这个例子能说明一个容易被忽视的点Quade检验控制的是线性排序意义上的影响它没法捕捉非常复杂的非线性关系。如果X和Y之间的关系本身就很奇特比如U形、倒U形秩回归的拟合效果会比较差方法仍然可以用但解释要谨慎。3. 手动计算演示15条数据完整走一遍3.1 示例数据与场景为了把每一步都摊开让你看清楚我用一个15个样本的小数据来演示。背景是三种训练方法对某项技能成绩的影响协变量X是训练前的基础测试成绩Y是训练后的测试成绩。数据故意选得没那么完美里面有两个地方出现了并列的X值正好用来演示平均秩的处理方式。三组数据如下表。样本编号组别X前测Y后测1组145792组152913组148774组155895组150846组240737组242708组238769组2457210组2447411组3356612组3386213组3306814组3336315组33765注意看X这一列38出现了两次45也出现了两次这在真实数据里非常常见。3.2 编秩结果与秩均值把所有15个X混在一起排序。完整排序后X的秩如下两个38并列第5和第6位平均秩为5.5两个45并列第10和第11位平均秩为10.5。Y没有并列所以Y的秩就是普通的1到15。编秩结果汇总如下表。样本编号组别X秩Y秩1组110.5122组114153组112114组115145组113136组2787组2868组25.5109组210.5710组29911组33412组35.5113组31514组32215组343如果你想核对计算有几个关键数字可以先记下来。N15X秩的总和是120Y秩的总和也是120因为秩的总和永远等于1一直加到N。总均值都是8。X秩的离差平方和Sxx279Y秩的离差平方和Syy280两者的交叉乘积和Sxy239。这里有个小细节值得注意X秩由于存在并列Sxx279而不是理论上无并列时的280这就是平均秩带来的微小影响。3.3 回归计算与残差表用Y秩对X秩做线性回归回归系数为b Sxy / Sxx 239 / 279 0.8566截距为a 8 - 0.8566 × 8 1.1470回归方程为Y秩预测值 1.1470 0.8566 × X秩把每个样本的X秩代入得到预测值再用实际Y秩减去预测值就得到残差。下面是逐组残差结果。组1残差1.85841.8602-0.42650.00360.7168。这组残差的平均值约为0.8025。组2残差0.8566-2.00004.1416-3.14160.1434。平均值约为0。组3残差0.2832-4.85842.9964-0.8602-1.5735。平均值约为-0.8025。三组残差均值加起来约等于0这是回归残差本身的数学性质决定的可以用来核对计算有没有出错。残差总平方和等于75.2652这个值是后面方差分析的基础。3.4 组间检验F统计量手算现在拿残差去做单因素方差分析。总均值为0组间平方和为组间SS 5 × 0.8025² 5 × 0² 5 × (-0.8025)² 6.4402组内平方和等于总平方和减去组间平方和组内SS 75.2652 - 6.4402 68.8250自由度方面组间自由度为2组内自由度为12。于是组间均方 6.4402 / 2 3.2201 组内均方 68.8250 / 12 5.7354 F 3.2201 / 5.7354 0.5614对应的p值大约是0.58。这个结果在0.05水平上完全不显著。如果改用Kruskal-Wallis检验对这三组残差做比较先对15个残差编秩得到三组秩和分别为48、39、33算出的H统计量为1.14p值同样约为0.57。两种检验方式结论一致。3.5 怎么解读这套结果这个结果的意义是在控制了前测成绩的秩影响之后三种训练方法的后测成绩秩残差没有统计学上的显著差异。也就是说当前数据提供的证据不足以认为三种方法的效果存在区别。不显著不等于没有差异。看残差均值你会发现组1比组2高约0.8个秩位组2又比组3高约0.8个秩位趋势是存在的只是组内的个体差异太大淹没了组间信号。用效应量来感受一下eta平方等于组间SS除以总SS即6.44除以75.27约等于0.086属于中等偏小的效应。在只有每组5个样本的情况下检出这种效应需要非常好的运气。4. SPSS实操全流程4.1 数据表怎么整理在SPSS里新建数据文件三列就够了。第一列group用1、2、3分别表示三个组第二列X放前测成绩第三列Y放后测成绩。变量视图里把group的值标签设置一下方便后续看结果。注意不要用组别的中文汉字当数值后续很多分析都要求分组变量是数值型。4.2 编秩操作与注意事项点击菜单转换 → 排名个案。把X和Y选入变量框下面那个分组的变量框保持空白。再点秩的类型按钮默认的秩就是我们要的其他选项不用勾选。点绑定按钮可以看到默认的并列处理方式是平均值这正是平均秩保持默认。确定之后SPSS会生成两列新变量名字通常是RX和RY代表X的秩和Y的秩。这一步最常见的错误就是把group放进分组的变量框。放进去之后SPSS会在分组内部各自编秩每组都有自己的1、2、3、4、5这样X秩的总和就不再是120后面回归和检验全部失去意义。4.3 回归保存残差点击菜单分析 → 回归 → 线性。因变量选择RY也就是Y秩那一列自变量选择RX。关键是点击保存按钮在残差区域勾选未标准化。确定之后数据视图会新增一列残差变量SPSS默认命名为RES_1。这里再强调一次因变量和自变量都必须用秩变量不能写成原始X和Y。如果写成原始变量得到的就是普通线性回归残差分析对象就变了你做的就不是Quade检验。4.4 残差组间检验两条路线第一条路线是用单因素方差分析。点击菜单分析 → 比较均值 → 单因素ANOVA。因变量选择RES_1因子选择group。这个分析会输出F值和p值对应我们手算的F0.561和p≈0.58。第二条路线是Kruskal-Wallis检验。点击菜单分析 → 非参数检验 → 旧对话框 → K个独立样本。检验变量选择RES_1分组变量选择group点击定义范围填入最小值1和最大值3检验类型勾选Kruskal-Wallis H。输出的H统计量约为1.14p值约为0.57。两条路线给出的结论一致。一般来说残差经过秩回归之后形态通常比较对称用F检验问题不大如果你特别谨慎可以两种都跑把Kruskal-Wallis的结果作为稳健性证据写进论文。4.5 论文里的报告模板如果你要把这套结果写进论文可以参考下面的写法。以前测成绩为协变量采用Quade非参数协方差分析比较三种训练方法的效应。先分别对前测成绩和后测成绩编秩以后测成绩秩对前测成绩秩回归取残差再对残差进行组间比较。结果显示残差均值在三个组分别为0.80、0.00和-0.80组间差异无统计学意义F0.56p0.58Kruskal-Wallis H1.14p0.57。建议F检验和Kruskal-Wallis检验的结果同时报告审稿人会觉得你做得更严谨。5. 常见问题与避坑手册5.1 并列数据会影响编秩吗几乎不影响。SPSS用平均秩处理并列之后Quade检验依然有效。并列的数量越多秩的信息量损失越大检验功效会受到一些影响但结论的方向不会偏。如果并列数据非常多比如超过三分之一建议考虑改用二分法处理或使用其他针对序数数据的模型。5.2 残差检验用参数F还是非参数H没有绝对标准。我的习惯是以F检验为主因为秩回归后的残差通常接近对称F检验的稳健性足够再用Kruskal-Wallis做敏感性分析两者一致就在报告里写两者不一致就以Kruskal-Wallis为准并说明原因。毕竟我们选择非参数分析的原因就是担心分布假设不成立没必要在最后一步重新迷信参数方法。5.3 跑出来不显著怎么办不显著是正常的尤其在小样本情况下。记住你报告出来的不是没有差异而是现有数据不足以证明有差异。可以补充效应量比如本例的eta平方为0.086说明组别解释了约8.6%的残差变异。在此基础上建议审慎解释趋势并基于功效分析说明适当增加样本量后检验可能得到不同结果。我在实际项目里见过不少p0.06、0.07的情况强行解释很容易翻车如实报告效应量和置信区间才是稳的。5.4 和参数ANCOVA结果不一致怎么解释这是经常遇到的情况尤其是参数ANCOVA显著、Quade检验不显著的时候。先回头检查参数方法的假设残差正态性、方差齐性、斜率平行是否真的满足。如果参数方法的前提条件有严重问题优先相信秩方法的结果因为参数p值本身已经失真。如果参数方法的前提都满足而秩方法不显著那可能是样本量下秩方法功效不足此时可以把两种结果都写在论文里作为一种敏感性分析来呈现。5.5 关于样本量的经验秩方法损失了一部分数值信息相对功效天然低于参数方法。我个人经验是每组的样本量不少于8到10个总体本量超过30结果才开始稳定。如果你每组只有5个样本就像前面演示的案例即便真实效应存在也很难跑出显著性。如果条件允许优先加大样本量这比选择哪一版检验方法更重要。5.6 常见操作错误清单我在帮别人检查分析流程时发现错误总是集中在几个地方整理成清单方便你对照排查。编秩时把分组变量放进了分组的变量框导致组内编秩而非全局编秩回归时误用原始X和Y而不是X秩和Y秩忘了保存未标准化残差直接拿Y秩去做组间比较等于没有控制协变量Kruskal-Wallis检验里忘记定义分组变量的取值范围SPSS报错或者只比较了其中两组编秩和回归两步之间插入了筛选或排序操作导致数据错位以上每个问题我都见过真实案例。只要核对清楚这几点整套流程基本不会跑偏。我自己的习惯是拿到数据先做一次完整的参数ANCOVA再做一次Quade检验两份结果对比着看。如果两者结论一致说明数据无论用什么尺度都稳定如果不一致往往正是数据分布或者方差结构出问题的信号。这种对比本身就能让论文的分析部分更耐看也更容易让审稿人买账。秩方法不是万能的但它在那些参数方法做不了的数据上是真的能救场。
返回列表