
SPSS操作:多个相关样本的非参数检验(Cochran's Q检验)
一、问题与数据
某康复科医生拟评价康复训练对卒中后患者体能恢复的效果。患者分别在开始康复、康复3个月和康复6个月时进行体能测试。为了保证一致性,三次体能测试内容是一样的,体能测试的结果为“通过”和“不通过”。该医生想知道卒中后患者体能测试的结果为“通过”的比例是否一直上升。
该研究随机选取了63例进行康复训练的卒中后患者,并收集了所有研究对象的开始康复时的体能测试结果 (initial_fitness_test),康复3个月时的体能测试结果 (month3_fitness_test)和康复6个月时的体能测试结果 (final_fitness_test)。结果均为“通过(Passed)”和“不通过(Failed)”的形式(分别赋值为1和2)。部分数据如下图。
其中,Individual scores for each paticipant列出了每一个研究对象的情况,而Total count data (frequencies)则是对相同情况研究对象的数据进行了汇总。
二、对问题的分析
要检验三组或多组相关样本中,分类变量是否存在差异,可以使用Cochran's Q 检验,但需要考虑以下4个假设。
假设1:结局变量为二分类,且两类之间互斥。互斥是指一个研究对象只能在一个分组中,不可能同时出现在两个组中。例如 “安全”和“不安全”,“及格”和“不及格”等。
假设2:分组变量包含3个及以上分类,且各组之间相关。(当分组变量只有2个分类时,可使用McNemar’s检验)
假设3:样本是来自于研究人群的随机样本。然而实际中,样本并非都是随机样本。
假设4:样本量足够。当样本量n≥4且nk≥24(k为分组变量数)时,可以采用Cochran's Q检验;否则采用“精确” Cochran's Q检验。
本研究中,结局变量有两个分组且互斥(“通过”和“不通过”),符合假设1;分组变量包含3个分类(开始康复、康复3个月和康复6个月时),各组之间相关,符合假设2;研究对象是随机选取,符合假设3。
那么应该如何检验假设4,并进行比较呢?
三、SPSS操作
3.1 检验假设4:样本量足够
1. 转换数据格式
如果原始数据格式是Total count data (frequencies),则可以跳过此步。如果原始数据格式是Individual scores for each paticipant,则需要将数据转换成Total count data (frequencies)格式。
在主界面点击Data→Aggregate,出现Aggregate Data对话框。将变量initial_fitness_test、month3_fitness_test和final_fitness_test选入Break Variable(s)框中。
点击下方Number of cases框,并在Name框中填入“freq”。在Save下方勾选Create a new dataset containing only the aggregated variables,并在Dataset name框中填入新数据集的名字(例如“cochran_q_freq”)。
点击OK,产生新数据集。在新数据集中,可以看到新变量“freq”,代表每一种自变量组合的频数。
2. 数据加权
使用Total count data (frequencies)格式数据,并在主界面点击Data→Weight Cases,弹出Weight Cases对话框后,点击Weight cases by,激活Frequency Variable窗口。将freq变量放入Frequency Variable栏,点击OK。
3. 计算样本量
本研究的总样本数N=63,但计算Cochran's Q 检验的样本量时,需要减去三次测试结果都一致的样本数。如下突出显示所示,全部为“Failed”有20例,全部为“Passed”有7例,所以三次测试结果都一致的样本数为20+7=27,Cochran's Q 检验的样本量n=63-27=36。
其次,需要确定nk的大小。由于本研究共有三个分组,所以k=3,nk=36*3=108。
综上,n≥4且nk≥24,符合假设4。
3.2 计算比例
在主界面点击Descriptive Statistics→Frequencies,在Frequencies对话框中,将变量initial_fitness_test、month3_fitness_test和final_fitness_test选入Variable(s):框中,点击OK。
3.3 符合假设4的Cochran's Q检验
在主界面点击Analyze→Nonparametric Tests→Related Samples,出现Nonparametric Tests: Two or More Related Samples对话框。确认在What is your objective?区域勾选了Automatically compare observed data to hypothesized。
点击Fields,将变量initial_fitness_test、month3_fitness_test和final_fitness_test选入Test Fields框中。
点击Settings→Customize tests,勾选Cochran's Q (k samples)。
点击Define Success,在Cochran's Q: Define Success对话框中,点击Combine values into success category,在Success框中填入1(这里是“成功”对应的编码,本例中即为通过体能测试,“Passed”对应的是1,所以这里填“1”)。
点击OK→Run,输出结果。
3.4 不符合假设4的“精确”Cochran's Q检验
当不符合假设4时,需要使用“精确”Cochran's Q检验。在主界面点击Analyze→Nonparametric Tests→Legacy Dialogs→K Related Samples,出现Tests for Several Related Samples对话框。
将变量initial_fitness_test、month3_fitness_test和final_fitness_test选入Test Variables框中。在Test Type 下方去掉Friedman,然后勾选Cochran's Q。(如果数据符合假设4,则此时点击OK,结果与3.3部分的操作结果一致)
点击Exact,在Exact Tests对话框中,点击Exact,点击Continue→OK。
3.5 “精确”Cochran's Q检验后的两两比较
对于符合假设4的Cochran's Q检验(3.3部分),事后的两两比较将在结果解释部分展示(4.2部分)。
对于不符合假设4的“精确”Cochran's Q检验(3.4部分)事后的两两比较,可采用经Bonferroni法校正的多重McNemar检验。
在主界面点击Analyze→Nonparametric Tests→Legacy Dialogs→2 Related Samples。在Two-Related-Samples Tests对话框中,依次选择两两比较的变量,分别将变量initial_fitness_test和month3_fitness_test、变量initial_fitness_test和final_fitness_test、变量month3_fitness_test和final_fitness_test选入右侧Test Pairs中。 去掉Test Type下方的Wilcoxon,勾选McNemar。
点击Exact,在Exact Tests对话框中,点击Exact,点击Continue→OK。
四、结果解释
4.1 统计描述
3.2部分的操作后,得到的频数结果见下图。康复开始、康复3个月和康复6个月时培的体能测试的通过率分别为22.2%、44.4% 和 60.3%。
4.2 符合假设4的Cochran's Q检验及事后两两比较
3.3部分的操作后,得到Cochran's Q检验的结果如下图。
上图中,第一列(Null Hypothesis)是本研究的零假设。第二列(Test)显示本研究的假设检验方法,即Cochran's Q检验。第三列(Sig.)是假设检验的统计结果,即P值。第四列(Decision)是根据假设检验做出的判断,即判断是否拒绝零假设。
本研究Cochran's Q检验的P<0.001,拒绝零假设。即开始康复、康复3个月和康复6个月时,研究对象体能测试结果的差异具有统计学意义。
双击该表,SPSS会自动弹出Model Viewer界面,帮助我们进一步了解Hypothesis Test Summary表的结果。
Cochran's Q检验统计量服从自由度为k-1的 χ2分布。本研究的统计量为24.222,此时统计量可记为 χ2 = 24.222, P<0.001。
在该视图下方的View的下拉选项框中,选择“Pairwise Comparisons”,可以得到两两比较的结果。两两比较的方法为Dunn’s检验(经Bonferroni法校正)。
在Pairwise Comparisons图中(此处略),连接线代表两两比较的结果,黑色连接线代表两组间差异无统计学意义,橘黄色连接线代表两组差异具有统计学意义。
下方的表格(如下图)给出了更多的信息:比较的组别、统计量、标准误、标准化的统计量(=统计量/标准误)、P值和调整后的P值。
由于是事后的两两比较(Post hoc test),因此需要调整显著性水平(调整α水平),作为判断两两比较的显著性水平。依据Bonferroni法,调整α水平=原α水平÷比较次数。本研究共比较了3次,调整α水平=0.05÷3=0.0167。因此,最终得到的P值(上图中Sig.一列),需要和0.0167比较,小于0.0167则认为差异有统计学意义。
另外,SPSS也提供了调整后P值(上图中Adj. Sig.一列),其思想还是采用Bonferroni法调整α水平。该列是将原始P值乘以比较次数得到,因此可以直接和0.05比较,小于0.05则认为差异有统计学意义。
以上结果可以描述为:康复开始和康复3个月时研究对象体能测试结果的差异有统计学意义(调整后P=0.013),康复开始和康复6个月时研究对象体能测试结果的差异有统计学意义(调整后P<0.001),而康复3个月和康复6个月时研究对象体能测试结果的差异无统计学意义。
4.3 不符合假设4的“精确”Cochran's Q检验
3.4部分的操作中,既可以得到Cochran's Q检验的结果,也可以得到“精确”Cochran's Q检验的结果(取决于是否选择Exact选项)。
结果如下图。在Test Statistics表格中,左侧是Cochran's Q检验结果,右侧是“精确”Cochran's Q检验结果。
如果数据符合假设4,则Cochran's Q检验统计量服从自由度为k-1的 χ2分布。左侧表格中的P值为“Asymp. Sig.”所对应的“0.000”,即P<0.001。本研究的统计量为24.222,此时统计量可记为 χ2 = 24.222,P<0.001。
如果数据不符合假设4,则右侧表格中的P值为“Exact. Sig.”所对应的“0.000”,即P<0.001。本研究的统计量为24.222,此时统计量可记为Cochran's Q = 24.222, P<0.001。
4.4 “精确”Cochran's Q检验后的两两比较
当不满足假设4时,3.5部分的操作可得到经Bonferroni法校正的多重McNemar检验的结果。
由于是事后的两两比较(Post hoc test),因此需要调整显著性水平(调整α水平),作为判断两两比较的显著性水平。依据Bonferroni法,调整α水平=原α水平÷比较次数。本研究共比较了3次,调整α水平=0.05÷3=0.0167。因此,最终得到的P值(上图中Exact Sig. (2-tailed)一行),需要和0.0167比较,小于0.0167则认为差异有统计学意义。
以上结果可以描述为:康复开始和康复3个月时研究对象体能测试结果的差异有统计学意义(P=0.007),康复开始和康复6个月时研究对象体能测试结果的差异有统计学意义(P<0.001),而康复3个月和康复6个月时研究对象体能测试结果的差异无统计学意义。
五、撰写结论
1. 符合假设4时(即样本量足够)
开始康复、康复3个月和康复6个月时,卒中后患者体能测试的通过率分别为22.2%、44.4%和60.3%。运用Cochran's Q 检验对三个时间点体能测试通过率进行检验,三个时间点通过率的差异具有统计学意义,χ2 = 24.222, P<0.001。
采用Dunn’s检验(经Bonferroni法校正)进行事后的两两比较,康复开始和康复3个月时研究对象体能测试结果的差异有统计学意义(调整后P=0.013),康复开始和康复6个月时研究对象体能测试结果的差异有统计学意义(调整后P<0.001),而康复3个月和康复6个月时研究对象体能测试结果的差异无统计学意义(调整后P=0.124)。
2. 不符合假设4时
开始康复、康复3个月和康复6个月时,卒中后患者体能测试的通过率分别为22.2%、44.4%和60.3%。运用Cochran's Q 检验对三个时间点体能测试通过率进行检验,三个时间点通过率的差异具有统计学意义, Cochran's Q = 24.222, P<0.001。
运用“精确”McNemar’s检验进行事后的两两比较(经Bonferroni法校正的α=0.0167)。康复开始和康复3个月时研究对象体能测试结果的差异有统计学意义(P=0.007),康复开始和康复6个月时研究对象体能测试结果的差异有统计学意义(P<0.001),而康复3个月和康复6个月时研究对象体能测试结果的差异无统计学意义(P=0.031)。
推荐学习书籍
《CDA一级教材》适合CDA一级考生备考,也适合业务及数据分析岗位的从业者提升自我。完整电子版已上线CDA网校,累计已有10万+在读~
免费加入阅读:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
当 “算法” 成为数据科学、人工智能、业务决策领域的高频词时,一种隐形的认知误区正悄然蔓延 —— 有人将分析结果不佳归咎于 ...
2025-09-22在数据分析、金融计算、工程评估等领域,“平均数” 是描述数据集中趋势最常用的工具之一。但多数人提及 “平均数” 时,默认指 ...
2025-09-22CDA 数据分析师:参数估计助力数据决策的核心力量 在数字化浪潮席卷各行各业的当下,数据已成为驱动业务增长、优化运营效率的核 ...
2025-09-22训练与验证损失骤升:机器学习训练中的异常诊断与解决方案 在机器学习模型训练过程中,“损失曲线” 是反映模型学习状态的核心指 ...
2025-09-19解析 DataHub 与 Kafka:数据生态中两类核心工具的差异与协同 在数字化转型加速的今天,企业对数据的需求已从 “存储” 转向 “ ...
2025-09-19CDA 数据分析师:让统计基本概念成为业务决策的底层逻辑 统计基本概念是商业数据分析的 “基础语言”—— 从描述数据分布的 “均 ...
2025-09-19CDA 数据分析师:表结构数据 “获取 - 加工 - 使用” 全流程的赋能者 表结构数据(如数据库表、Excel 表、CSV 文件)是企业数字 ...
2025-09-19SQL Server 中 CONVERT 函数的日期转换:从基础用法到实战优化 在 SQL Server 的数据处理中,日期格式转换是高频需求 —— 无论 ...
2025-09-18MySQL 大表拆分与关联查询效率:打破 “拆分必慢” 的认知误区 在 MySQL 数据库管理中,“大表” 始终是性能优化绕不开的话题。 ...
2025-09-18DSGE 模型中的 Et:理性预期算子的内涵、作用与应用解析 动态随机一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明确:TIF 中的地名有哪两种存在形式? 在开始提取前,需先判断 TIF 文件的类型 —— ...
2025-09-17CDA 数据分析师:解锁表结构数据特征价值的专业核心 表结构数据(以 “行 - 列” 规范存储的结构化数据,如数据库表、Excel 表、 ...
2025-09-17Excel 导入数据含缺失值?详解 dropna 函数的功能与实战应用 在用 Python(如 pandas 库)处理 Excel 数据时,“缺失值” 是高频 ...
2025-09-16深入解析卡方检验与 t 检验:差异、适用场景与实践应用 在数据分析与统计学领域,假设检验是验证研究假设、判断数据差异是否 “ ...
2025-09-16CDA 数据分析师:掌控表格结构数据全功能周期的专业操盘手 表格结构数据(以 “行 - 列” 存储的结构化数据,如 Excel 表、数据 ...
2025-09-16MySQL 执行计划中 rows 数量的准确性解析:原理、影响因素与优化 在 MySQL SQL 调优中,EXPLAIN执行计划是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 对象的 text 与 content:区别、场景与实践指南 在 Python 进行 HTTP 网络请求开发时(如使用requests ...
2025-09-15CDA 数据分析师:激活表格结构数据价值的核心操盘手 表格结构数据(如 Excel 表格、数据库表)是企业最基础、最核心的数据形态 ...
2025-09-15Python HTTP 请求工具对比:urllib.request 与 requests 的核心差异与选择指南 在 Python 处理 HTTP 请求(如接口调用、数据爬取 ...
2025-09-12解决 pd.read_csv 读取长浮点数据的科学计数法问题 为帮助 Python 数据从业者解决pd.read_csv读取长浮点数据时的科学计数法问题 ...
2025-09-12