非参数检验
一、直观理解:不依赖“必须正态”的比较方法
经典 t 检验、ANOVA 常假设数据来自正态分布(或大样本近似)。当数据明显偏态、有序等级、存在异常值,或测量本身只是名次时,强行参数检验可能失效。
非参数检验(更准确常叫分布自由 / 基于秩的方法)不估计均值方差等参数分布,而是利用:
- 数据的符号(正负);
- 秩次(谁大谁小的排序);
- 或置换/重采样下的参考分布。
直观例子:比较两种止痛药的效果评分(1–10 分,明显偏态)。不必假设正态,把所有分数混合排序,看其中一组的秩和是否异常地高或低——这就是 Mann–Whitney U / Wilcoxon 秩和思想。
非参数不是“没有假设”,而是假设更弱(如独立、连续分布、随机抽样),对分布形状更宽容。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 偏态、重尾、有序分类、小样本且正态可疑;异常值难以删除;只关心分布位置/随机优势,不坚持均值参数。 |
| 核心优点 | 对离群点更稳健;适用于等级数据;假设更弱;许多方法有清晰的效应量(如概率 )。 |
| 局限与缺点 | 正态且同方差时通常比 t/ANOVA 功效低;原假设常关于分布相同,不只是均值相同;结值(相同分数)多时需校正;结果解释有时不如均值差直观。 |
常用对应关系:
| 参数方法 | 非参数替代 |
|---|---|
| 单样本 t | Wilcoxon 符号秩、符号检验 |
| 独立两样本 t | Mann–Whitney U / Wilcoxon 秩和 |
| 配对 t | Wilcoxon 符号秩 |
| 单因素 ANOVA | Kruskal–Wallis |
| 重复测量 ANOVA | Friedman |
| Pearson 相关 | Spearman / Kendall |
三、核心原理
1. Wilcoxon 符号秩检验(单样本/配对)
对差值 (或 )去掉 0 后,按 赋秩,再把正号差值的秩相加得 。若分布对称且中位数为 0,则 的分布已知(小样本精确,大样本正态近似)。
2. Mann–Whitney U / Wilcoxon 秩和(两独立样本)
混合两组共 个观测排序,计算一组的秩和 。统计量
通常是:两组来自同一连续分布。拒绝时解释为随机优势或随机对照下的位置差异,而不一定是“均值不同”。
3. Kruskal–Wallis(多组)
全体混合赋秩,各组秩和平均,构造类似 ANOVA 的统计量,渐近 。它是 Mann–Whitney 向多组的推广。
4. Friedman(随机区组/重复测量)
每个区组内单独排序,再比较处理间的秩。适合同一受试者接受多种处理的设计。
5. 效应量思路
两样本可报告
的估计(有时称 common language effect size),或秩二列相关。比只给 p 值更有信息。
四、关键决策
1. 什么时候必须非参数?
- 明显偏态 + 小样本;
- 明显异常值且不宜删除;
- 因变量本身是名次/等级;
- 方差极度不齐且变换无效。
大样本时 t 检验因 CLT 往往仍可用,但可与非参数对照做稳健性证明。
2. 原假设到底是什么?
许多秩检验的 是分布相同。若只想测均值差而允许分布形状不同,解释要谨慎,或改用置换检验、分位数回归。
3. 结值与离散分数
李克特量表大量相同分会降低分辨力,需结值校正;必要时用精确排列检验。
4. 多重比较
Kruskal–Wallis 显著后,用 Bonferroni 校正的两两 Mann–Whitney,或 Dunn 检验。
五、MATLAB 示例
rng(4);
% ---- 两独立样本:偏态数据 ----
a = exprnd(2, 15, 1); % 指数偏态
b = exprnd(2, 16, 1) + 0.8; % 位置偏高
[p_mw, h, stats] = ranksum(a, b);
fprintf("Mann-Whitney / ranksum p=%.4g, ranksum=%.1f\n", p_mw, stats.ranksum);
% 对照:t 检验
[~, p_t] = ttest2(a, b);
fprintf("Welch-t p=%.4g(对照)\n", p_t);
% 效应:P(A<B) 的简单估计(对所有配对)
cmp = a < b'; % 广播
% 更稳妥的双重循环估计
cnt = 0; tot = 0;
for i = 1:numel(a)
for j = 1:numel(b)
tot = tot + 1;
cnt = cnt + (a(i) < b(j)) + 0.5*(a(i)==b(j));
end
end
fprintf("P(A<B)+0.5P(=) 估计 = %.3f\n", cnt/tot);
% ---- 配对:符号秩 ----
pre = [20 18 22 30 25 19 28 24];
post = [17 16 21 25 24 18 27 20];
[p_sr, ~, st_sr] = signrank(pre, post);
fprintf("Wilcoxon 符号秩 p=%.4g, signedrank=%.1f\n", p_sr, st_sr.signedrank);
% ---- 多组:Kruskal-Wallis ----
x = [a; b; exprnd(2,14,1)+1.5];
g = [ones(size(a)); 2*ones(size(b)); 3*ones(14,1)];
[p_kw, tbl, stats_kw] = kruskalwallis(x, g, "off");
fprintf("Kruskal-Wallis p=%.4g\n", p_kw);
disp(tbl);
% 事后两两(示意:Bonferroni)
pairs = nchoosek(1:3, 2);
for k = 1:size(pairs,1)
i = pairs(k,1); j = pairs(k,2);
pk = ranksum(x(g==i), x(g==j));
fprintf("组%d vs 组%d: p=%.4g, Bonferroni=%.4g\n", i, j, pk, min(1,3*pk));
end
六、如何解释结果
- 说明为何选择非参数(分布形态、量尺、异常值);
- 报告中位数、四分位距,而不只是均值;
- 给出检验名称、统计量、p 值;
- 补充效应量或优势概率;
- 多组时报告全局检验 + 校正后的两两比较;
- 说明 的准确含义(分布相同 / 中位数为 0 等)。
示例:“两组评分中位数分别为 3 与 5(IQR 略),Mann–Whitney p=0.012;估计 P(对照组<处理组)≈0.71。因评分偏态且样本量小,采用秩检验较 t 检验更稳妥。”
七、常见误区
1. 认为非参数“完全没有假定”
仍要求独立观测等;违反独立性时结果同样不可信。
2. 把秩检验显著直接说成“均值显著不同”
更稳妥的说法是分布位置/随机优势存在差异。
3. 正态大样本时无脑弃用 t
此时 t 往往功效更好,非参数可作为稳健性附录,而非唯一选择。
4. 有结值却不处理
大量相同秩会改变零分布,应使用软件自带的结值校正。
5. 多组两两比较不校正
与参数情形一样会通胀假阳性。
八、小结
非参数检验的核心是:
在较弱分布假定下,用符号、秩或置换来比较位置与分布差异。
当数据不适合 t/ANOVA 时,它们是建模中的标准后备与稳健性工具。选择时写清动机,报告中位数与效应量,并准确陈述原假设,才能避免“换了方法却仍错误解释”的问题。