上个月有个在医院做科研的朋友来找我,手里拿着一份三组病人数据,每组才6例。Kruskal-Wallis H检验跑出来p=0.081,她的主任看了一眼说“没差异,写结论吧”。她不甘心,跑来问我:“如果样本量再大一倍,还会是这个结果吗?会不会是因为我人太少才不显著?”
这个问题特别典型,几乎是每个用非参数检验的人都会撞上的墙。Kruskal-Wallis H检验作为多组独立样本比较中最常用的非参数方法,大家默认它“不用正态、很稳健”,但很少有人真正讲清楚:样本量到底在哪个环节影响结果、影响有多大、小到大各会踩什么坑。这篇文章我想从统计量本身出发,结合蒙特卡洛模拟和功效计算,把样本量与KW检验的关系完整拆开。
1. KW检验到底在算什么?样本量又是从哪里“插手”的
1.1 非参数检验没有抛弃数据,只是先换成“名次”
很多材料一上来就讲KW检验是“多组中位数比较”,这话其实只对了一半。Kruskal-Wallis H检验的原假设是所有组来自同一个分布,或者说各组在位置参数上没有差异。它不要求数据服从正态分布,这是它比单因素方差分析(ANOVA)更常被选用的原因。
但它并不是不用数据,而是先把所有组的观测值混在一起,从小到大排序,用“秩”替换原始数值。你可以把它想象成让所有人按身高排成一队,然后只看每个人排第几,不再看具体身高是多少厘米。第1名、第2名……第N名就是秩。第i组所有成员的秩加起来,得到第i组的秩和R_i。如果某一组的秩和明显偏大或偏小,说明这一组的数值整体偏高或偏低,H检验就会拒绝原假设。
这个过程里样本量已经在“暗处”起作用了:秩的稳定性完全依赖于总人数N和每组人数n_i。一个人单独排出来的名次,受其他组人数影响很大。你想判断的是组与组之间的差异,但每个组能贡献多少信息,首先就取决于这个组里有多少观测值。
1.2 H统计量公式里写满了n,只是很多人没细看
Kruskal-Wallis H统计量的常用形式是:
H = [12 / (N(N+1))] × Σ(R_i² / n_i) − 3(N+1)
其中k是组数,n_i是第i组的样本量,N是所有组样本量之和,R_i是第i组的秩和。理解这个公式,就能直观看到样本量是怎么影响结果的。
第一层影响在分母里:n_i作为除数,把各组秩和“按人头归一化”。如果某一组样本量很大,它的秩和天然容易偏大,除以n_i后才能和其他组公平比较。第二层影响在总样本量N:公式最外面的12/[N(N+1)],本质上是把所有秩的波动标准化到理论方差。N越大,标准化的精度越高。第三层影响最隐蔽,也最关键:H统计量只有在样本量足够大时,才近似服从自由度为k−1的卡方分布。实际检验里的p值,几乎都是拿这个H值去查卡方分布算出来的,而“近似”两个字恰恰就是小样本问题的大本营。
1.3 只看总样本量会骗人,真正决定命运的是“每个组”
做KW检验的人经常会报“我一共100个样本”,好像数字很大就很放心。但KW检验是分组比较,100个样本如果分成90、5、5三组,最关键的比较其实建立在那两组只有5例的数据上,信息量非常稀薄。H统计量对不同组的秩和做的是等权比较,单个组的秩和方差会随该组人数减少而急剧变大,这会直接稀释整个检验对组间差异的敏感度。
所以,“样本量对KW检验的影响”这句话背后,最重要的其实不是总N,而是“组数”“每组最小样本量”“组间样本量是否悬殊”这三个维度的组合。后面讲小样本和大样本的问题时,我会反复用到这个观点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 样本量太小:p=0.08未必表示“没有差异”
2.1 小样本下“卡方近似”可能变成一张空头支票
KW检验的p值,默认是以H统计量近似卡方分布为前提的。这个近似是否可靠,主要取决于样本量和组数。经验上每组样本量大于等于5时,近似已经能用了,但如果某组样本量只有3、4甚至更少,H统计量的真实抽样分布是离散的、跳跃的,而你拿一个连续的卡方分布去套它,p值自然会有偏差。
更麻烦的是,这种偏差在不同数据分布下方向还不一样。连续数据、没有太多重复值时,小样本KW
