独立样本 Mann-Whitney U 检验
这个方法是做什么的
「独立样本T检验」的非参数替代:一个恰好两个水平的分组变量,加一个(或多个)数值 / 等级检验变量,问两组之间有没有系统性的高低之分。做法是把两组混在一起整体排名次(并列取平均秩),再看某一组的名次是不是整体靠后;U 与秩和满足 U = R₁ − n₁(n₁+1)/2。因为只用名次,一个极端值再离谱也只占一个名次,所以对异常值稳健,而且既不要求正态,也不要求方差齐。它的原假设是“两组总体分布相同(无随机优势)”。
除了显著性,主结果表给出两组的中位数(Q1,Q3)、Hodges-Lehmann 位置差及其 Moses 分布无关 95% 置信区间、U、Z 与 p——请注意这里给的是 H-L 位置差,不是均值差。第四张卡给秩二列相关 r = 2U/(n₁·n₂) − 1(等价于 Cliff's δ)及其置信区间、共同语言效应量 CLES = U/(n₁·n₂)——“随机各抽一人时前一组更大的概率”,这是最好向非统计读者解释的效应量——以及按 Romano 等 (2006) 的四档量级判读。第一张卡除了两组的秩和与平均秩、并列观测的个数与占比,还专门给一列“结论措辞建议”。
需要准备什么数据
- 分组变量 (X):定类变量(分组/标签)
- 检验变量 (Y):定量变量(数值)
数据要求
- 数据表至少 10 行。
- 单列缺失率不超过 30%。
- 不接受取值全都一样的列(零方差列没有可分析的变异)。
- 「分组变量 (X)」必须正好是 2 个类别。
- 「分组变量 (X)」的每一组至少 5 个样本。
以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。
什么时候用它
- 两组独立对象的比较,数据明显偏态或含极端值
- 结果变量本身是等级(满意度 1~5 星、疗效分级)
- 两组样本量都不大,正态性无从判断
- 两组样本量相差悬殊
- 你想回答的本来就是“随便各抽一个,A 组更高的概率是多少”
前提是两组观测互相独立——一个对象只出现在一组里,且取值不受别人影响——这一条由研究设计保证,数据里查不出来;检验变量至少是定序、能排序;分组变量恰好 2 个水平;每组至少 5 个有效观测。小于 5 时渐近 p 值会失真:小样本且没有并列时 SciPy 会自动改走精确法,但并列一多就只能用渐近法,此时结论要谨慎。并列越多,渐近方差的并列校正越要紧,本模块的 σ 已经含了这项校正。
什么时候不要用它
- 两列来自同一批对象(前测 / 后测):独立性前提不成立,用「配对样本Wilcoxon检验」。把配对数据当独立样本算,等于把个体之间的底子差异全部丢进误差里,白白损失精度。
- 分组多于两个水平:用「多独立样本Kruskal-Wallis检验」,不要拆成若干次两两比较——检验做得越多,至少出现一次假阳性的概率就越高。
- 数据近似正态,且你需要一个有单位、好沟通的均值差:用「独立样本T检验」,同样条件下它的效能更高。
- 结果变量是二分类(是否转化、是否达标):只有两个取值时排名次几乎全是并列,秩里没剩多少信息,用「卡方检验」;期望频数太小时用「Fisher精确检验」。
- 想在比较两组时扣掉某个协变量(比较疗效时控制基线值):秩检验没有对应版本,得转到回归框架,如「协方差分析」或「分位数回归」。
容易误读的地方
- 它默认比较的不是中位数,而是两组的秩分布;能不能说“中位数差异”,第一张卡会替你判。 那一列“结论措辞建议”就是干这个用的:以中位数为中心的 Levene 检验不显著时写“离散度可比,结论可表述为『中位数差异』”,显著时写“离散度不齐,结论宜表述为『分布差异』”。为什么要这么小心:如果一组很集中、另一组摊得很开,即使两组中位数完全相同,U 检验也可能显著——它检出的是“随机抽一个 A、一个 B,A 更大的概率不等于 0.5”这种随机优势,跟中位数根本不是同一回事。第五张卡的稳健性提示会照着同一判定改口径,照它写就不会说错。
- 但那条措辞建议背后只是一个不显著的方差齐性检验,别把它当成证明。 决定它给哪句话的只有 Levene 的 p 有没有到 0.05(旁边那列 IQR 大 / 小比是摆给你看的参考,不参与判定)。前提检验不显著从来不等于前提成立:每组只有十几例时,Levene 几乎检不出任何离散度差异,于是一律给你“可比”——这跟正态性检验在小样本里必然放行是同一个逻辑漏洞。样本量小的时候别只看这一句,把两组的 IQR、最小~最大值和第三张卡的箱线图一起看过再定措辞。
- 报告里那个位置差是 Hodges-Lehmann 估计,既不是两组均值之差,也不是两组中位数直接相减。 它取的是“A 组每个值 − B 组每个值”这 n₁×n₂ 个成对差的中位数(示例里是 −4.760),而两组中位数直接相减是 63.630 − 67.670 = −4.040,两个数对不上很正常,因为它们本来就是不同的量。配它的 95% 置信区间是 Moses 分布无关区间,基于成对差的次序统计量,不依赖任何分布假设——这也正是它能和秩检验摆进同一张表的原因。论文里要报的是 H-L 及其区间,别顺手写成“均值差”;t 检验那套“均值差 = 组1均值 − 组2均值”的读法在这里不成立。
- 方向由分组变量取值的排序决定,不由你拖进去的先后决定。 两个水平按取值排序,排在前面的当第一组:U、秩二列 r 与 H-L 位置差的符号全都是相对这个顺序说的(r>0 表示第一组整体大于第二组,H-L 是“第一组值 − 第二组值”的成对差中位数,CLES 也是“第一组 > 第二组”的概率)。所以看到负号,先去看表头写的是哪一组在前,别按“我先拖的是实验组”想当然。同理,一次拖多个检验变量时第四张卡会多出一张 Holm-Bonferroni 校正表,并注明有几个变量校正后由显著转为不显著——那张表才是多变量时该报的结论。
- 不显著不能当作两组相同的证据,用这个方法时尤其如此。 用名次换稳健性是有代价的:数据确实接近正态时,它的效能低于 t 检验,也就是更容易漏掉真实存在的差异,样本量不大时尤甚。要说“两组没有实质差别”,看的是 H-L 位置差的置信区间还容得下多大的差距——若区间是 [−7.3, +0.4],它同时容得下“几乎没差”和“差了 7 个单位”,这离“两组相同”很远。真要论证等效,必须先设定等效界再用等效性检验,那是另一套设计,不能靠一个大于 0.05 的 p 反推。
检验只能拒绝原假设,不能证明它成立。p = 0.42 既可能是真的没有差别,也可能是样本量不够、差别没被检出来,两者从这个 p 值上分不开。规范的写法是「没有证据表明……」;要论证「两者确实相当」,需要另做等价性检验。
左边是同一批对象测两次,分析的是每个人自己的差值,个体差异被抵消掉;右边是两拨不同对象各测一次,分析的是两组的整体水平,个体差异留在组内。数据是哪一种,决定了该用哪一族方法——摆错了不会报错,只会悄悄换掉你在检验的东西。
报告里有什么
- 输出结果一:数据概览与前提检验
- 输出结果二:独立样本 Mann-Whitney U 检验主结果表
- 输出结果三:分组分布可视化(箱线图)
- 输出结果四:效应量与多重比较
- 输出结果五:结论与学术表述
上图展示了变量“治疗后评分”在“常规治疗”和“联合治疗”两组间的分布情况。