跳到主要内容

非参数检验

一、直观理解:不依赖“必须正态”的比较方法​

经典 t 检验、ANOVA 常假设数据来自正态分布(或大样本近似)。当数据明显偏态、有序等级、存在异常值,或测量本身只是名次时,强行参数检验可能失效。

非参数检验(更准确常叫分布自由 / 基于秩的方法)不估计均值方差等参数分布,而是利用:

  • 数据的符号(正负);
  • 秩次(谁大谁小的排序);
  • 或置换/重采样下的参考分布。

直观例子:比较两种止痛药的效果评分(1–10 分,明显偏态)。不必假设正态,把所有分数混合排序,看其中一组的秩和是否异常地高或低——这就是 Mann–Whitney U / Wilcoxon 秩和思想。

非参数不是“没有假设”,而是假设更弱(如独立、连续分布、随机抽样),对分布形状更宽容。

二、适用场景与优缺点​

类型说明
适用场景偏态、重尾、有序分类、小样本且正态可疑;异常值难以删除;只关心分布位置/随机优势,不坚持均值参数。
核心优点对离群点更稳健;适用于等级数据;假设更弱;许多方法有清晰的效应量(如概率 P(X>Y)P(X>Y))。
局限与缺点正态且同方差时通常比 t/ANOVA 功效低;原假设常关于分布相同,不只是均值相同;结值(相同分数)多时需校正;结果解释有时不如均值差直观。

常用对应关系:

参数方法非参数替代
单样本 tWilcoxon 符号秩、符号检验
独立两样本 tMann–Whitney U / Wilcoxon 秩和
配对 tWilcoxon 符号秩
单因素 ANOVAKruskal–Wallis
重复测量 ANOVAFriedman
Pearson 相关Spearman / Kendall

三、核心原理​

1. Wilcoxon 符号秩检验(单样本/配对)​

对差值 DiD_i(或 Xi−μ0X_i-\mu_0)去掉 0 后,按 ∣Di∣|D_i| 赋秩,再把正号差值的秩相加得 W+W^+。若分布对称且中位数为 0,则 W+W^+ 的分布已知(小样本精确,大样本正态近似)。

2. Mann–Whitney U / Wilcoxon 秩和(两独立样本)​

混合两组共 n1+n2n_1+n_2 个观测排序,计算一组的秩和 R1R_1。统计量

U=R1−n1(n1+1)2U=R_1-\frac{n_1(n_1+1)}{2}

H0H_0 通常是:两组来自同一连续分布。拒绝时解释为随机优势或随机对照下的位置差异,而不一定是“均值不同”。

3. Kruskal–Wallis(多组)​

全体混合赋秩,各组秩和平均,构造类似 ANOVA 的统计量,渐近 χk−12\chi^2_{k-1}。它是 Mann–Whitney 向多组的推广。

4. Friedman(随机区组/重复测量)​

每个区组内单独排序,再比较处理间的秩。适合同一受试者接受多种处理的设计。

5. 效应量思路​

两样本可报告

p^=P(X>Y)+12P(X=Y)\hat p=P(X>Y)+\tfrac12 P(X=Y)

的估计(有时称 common language effect size),或秩二列相关。比只给 p 值更有信息。

四、关键决策​

1. 什么时候必须非参数?​

  • 明显偏态 + 小样本;
  • 明显异常值且不宜删除;
  • 因变量本身是名次/等级;
  • 方差极度不齐且变换无效。

大样本时 t 检验因 CLT 往往仍可用,但可与非参数对照做稳健性证明。

2. 原假设到底是什么?​

许多秩检验的 H0H_0 是分布相同。若只想测均值差而允许分布形状不同,解释要谨慎,或改用置换检验、分位数回归。

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

六、如何解释结果​

  1. 说明为何选择非参数(分布形态、量尺、异常值);
  2. 报告中位数、四分位距,而不只是均值;
  3. 给出检验名称、统计量、p 值;
  4. 补充效应量或优势概率;
  5. 多组时报告全局检验 + 校正后的两两比较;
  6. 说明 H0H_0 的准确含义(分布相同 / 中位数为 0 等)。

示例:“两组评分中位数分别为 3 与 5(IQR 略),Mann–Whitney p=0.012;估计 P(对照组<处理组)≈0.71。因评分偏态且样本量小,采用秩检验较 t 检验更稳妥。”

七、常见误区​

1. 认为非参数“完全没有假定”​

仍要求独立观测等;违反独立性时结果同样不可信。

2. 把秩检验显著直接说成“均值显著不同”​

更稳妥的说法是分布位置/随机优势存在差异。

3. 正态大样本时无脑弃用 t​

此时 t 往往功效更好,非参数可作为稳健性附录,而非唯一选择。

4. 有结值却不处理​

大量相同秩会改变零分布,应使用软件自带的结值校正。

5. 多组两两比较不校正​

与参数情形一样会通胀假阳性。

八、小结​

非参数检验的核心是:

在较弱分布假定下,用符号、秩或置换来比较位置与分布差异。

当数据不适合 t/ANOVA 时,它们是建模中的标准后备与稳健性工具。选择时写清动机,报告中位数与效应量,并准确陈述原假设,才能避免“换了方法却仍错误解释”的问题。