Wilcoxon 秩和 / 符号秩检验 Wilcoxon Rank-Sum / Signed-Rank Test (Wilcoxon)
用秩而非原始数值比较两组独立样本,或检验配对差值的位置变化。
统计原理
把两组观测合并后从小到大赋秩,再比较一组的秩和。没有并列值时,组 1 的 Mann-Whitney 统计量可写为:
其中 是组 1 的秩和。检验利用相对次序,因此对单调变换不敏感,也比均值检验更不受极端值影响;但它检验的是分布位置,而不自动等同于“中位数之差”。
上排保留原值,下排显示把两组合并排序后的秩;同色连线追踪同一名受试者,并列值共享平均秩。
口径example.csv:20 个 Week 8 CHG;Drug A 秩和 R=58,按本页定义 U=3。
什么时候用
当 estimand 事前定义为分布/秩位置比较,或终点本质上是有序评分且不适合均值模型时,可按 SAP 使用非参数检验。两独立组用 Wilcoxon rank-sum(Mann-Whitney U);成对数据用 Wilcoxon signed-rank。不能只因正态性检验不显著或数据看起来偏态,就在运行后把预设的均值 estimand 换成秩比较。
SAP 里长这样:
Change from baseline in the pain score at Week 8 will be compared between treatment groups using the Wilcoxon rank-sum test (Mann-Whitney U test). For small samples, an exact or Monte Carlo p-value will be reported. Within-subject paired changes may be assessed using the Wilcoxon signed-rank test.
看到 Wilcoxon rank-sum / Mann-Whitney U / signed-rank / non-parametric / exact p-value,即可定位到本页。
适用条件速查卡
| 项 | 条件 |
|---|---|
| 终点类型 | 连续型或有序型,可排序 |
| 组数 | 本页核心代码为 2 个独立组;配对版本要求真实成对观测 |
| 分析数据范围 | 示例限定 PARAMCD='PAINNRS'、AVISIT='Week 8'、ANL01FL='Y',每名受试者一行 |
| 解释前提 | 若解释为位置/中位数差,两组分布形状应大致相似 |
| 备选方法 | 近似正态且关注均值 → t 检验;有协变量的非参数分析需按 SAP 另行指定 |
核心 SAS 代码
proc import datafile="example.csv" out=adeff_raw dbms=csv replace;
guessingrows=max;
run;
data adeff;
set adeff_raw;
where paramcd='PAINNRS' and avisit='Week 8' and anl01fl='Y';
run;
/* Shell 中位数与四分位数的描述部分 */
proc univariate data=adeff noprint;
class trt01p;
var chg;
output out=summary n=n median=median q1=q1 q3=q3;
run;
/* 两独立组 Wilcoxon 秩和检验 */
proc npar1way data=adeff wilcoxon;
class trt01p;
var chg;
exact wilcoxon;
run;
/* 配对示例:同一受试者的基线与 Week 8,只演示 Drug A 组内差值 */
data paired_druga;
set adeff(where=(trt01p='Drug A'));
paired_diff=aval-base;
run;
ods output TestsForLocation=paired_location_tests;
proc univariate data=paired_druga mu0=0;
var paired_diff;
run;
ods output close;
data paired_signed_rank;
set paired_location_tests;
where upcase(test)='SIGNED RANK';
run;
proc print data=paired_signed_rank noobs;
run;
PROC NPAR1WAY的CLASS变量在本例必须只有 Drug A 和 Placebo 两个水平。- 本页只有 20 例,
EXACT WILCOXON直接枚举精确分布,不使用 Monte Carlo,因而没有随机种子和重复运行波动。数据较大而必须用 MC 时,应在 SAP/程序中显式固定N=和正整数SEED=,并报告 Monte Carlo 误差。 - 配对 signed-rank 不是把
CLASS改名即可,需要以稳定的 pair/USUBJID 对齐两次测量,先构造每对差值,再对差值做单样本符号秩分析。本 CSV 每人同时有BASE和AVAL,因此示例用PAIRED_DIFF=AVAL-BASE。 PROC UNIVARIATE MU0=0中TestsForLocation的Signed Rank行回答 Drug A 组内 Week 8 相对基线的差值位置是否为 0。它不是 Drug A 与 Placebo 的治疗间对比,不能冒充随机化比较的主效应。
变量解释表
| 变量 | 含义 | 典型来源 |
|---|---|---|
| USUBJID | 受试者唯一标识 | ADSL.USUBJID |
| TRT01P | 计划治疗组 | ADSL.TRT01P |
| PARAMCD | 分析参数代码 | ADEFF.PARAMCD |
| AVISIT | 分析访视 | ADEFF.AVISIT |
| ANL01FL | 主分析记录标志 | ADEFF.ANL01FL |
| BASE / AVAL / CHG | 基线值、分析值及较基线变化 | ADEFF |
输出对照
以下为字段定位,不预填未经 SAS 9.4 核验的数值。
| SAS 输出 | 编号 | 对应 shell |
|---|---|---|
| UNIVARIATE 输出 N | ① | 每组 n |
| Median | ② | 每组 Median |
| Q1 / Q3 | ③ | 每组 Q1, Q3 或 IQR |
| Wilcoxon Two-Sample Test 的 Z | ④ | 正态近似检验统计量(若 shell 要求) |
| Pr > |Z| | ⑤ | 正态近似双侧 p-value |
| Exact 双侧 p-value | ⑥ | 小样本方案指定的直接 exact p-value |
PAIRED_SIGNED_RANK / Signed Rank | ⑦ | Drug A 组内 AVAL-BASE 相对 0 的符号秩统计量和 p-value(配对教学示例) |
典型非参数 shell 的描述行填写 ①、② (③);独立两组检验行按 SAP 在 ⑤ 与 ⑥ 中选择,只有预设的组内配对问题才读取 ⑦。Hodges-Lehmann 位置差及其 CI 若被要求,需使用经验证的独立估计步骤,不能由本表字段臆算。
示例数据与程序
- example.csv — 含并列秩的 20 例原创模拟疼痛评分数据
- example.sas — 中位数汇总、独立秩和的直接 exact,以及 Drug A 组内配对 signed-rank 教学示例
常见坑
常见坑
- 把 p 值解释成中位数差检验:只有分布形状相近时,位置差才可近似用中位数描述。
- 并列值很多仍忽略校正:量表数据常有大量 ties,应核对正态近似的并列秩修正或方案指定的 exact 结果。
- MC 结果不可复现:如果指定
/ MC却留下默认 10,000 次且不设SEED=,p 值会随运行改变。小样本可直接 exact;必须 MC 时同时固定抽样数和 seed。 - rank-sum 与 signed-rank 混用:前者用于独立组,后者用于成对差值。
- 自行补报 Hodges-Lehmann CI:估计方法和 CI 算法必须预先规定并独立验证。
原始方法与 SAS 实现依据:Wilcoxon (1945), Individual Comparisons by Ranking Methods;SAS/STAT 15.3 PROC NPAR1WAY 官方文档。
相关方法
- t 检验(两样本/配对) 比较两个独立组的均值,或比较同一受试者两个时点的配对均值差。