前言
非参数检验(non-parametric test)是相对于参数检验(parametric test)而言的。如果总体分布为已知的数学形式,用参数检验,反之用非参数检验。当总体分布不能由已知的数学形式表达,没有总体参数时,就无法用参数检验,两个或多个正态总体方差不等,也不能用t检验或F检验的参数检验。对于不满足参数检验条件的数据,一是进行变量变换,使其满足参数检验条件,另外就是用非参数检验。非参检验对总体分布不作严格假定,又称任意分布检验(distribution-free test),《医学统计学》(第三版,孙振球)书中采用的是秩转换的非参数检验,即将数值变量从小到大排列,再计算检验统计量。
非参数检验在总体分布未知时有很大的优越性,在分布未时,如果还假定总体诸如正态分布那样的已知分布,在进行统计推断时就可能产生错误。非参数检验总是比传统检验案例,但是在总体分布形式已经已知时,非参数检验就不如传统方法效率高,这是因为非参数方法利用的利息要少些。往往在传统方法可以拒绝零假设的情况下,非参数检验无法拒绝。用统计的术语来说,在总体分布已知时,传统方法有较大的功效(power),效率要高;但非参数统计在总体分布未知时,效率往往比假定了错误总体分布时的传统方法要高,有时候要高很多。
秩的概念
非参数检验中的秩(rank)是最常用的概念,秩就是该数据按照升序排列后,每个观测值的位置。例如我们有下面的数据(样本量为10),其中第一行为数据本身,第二行就是它们的秩,可以看出,3最小,秩为1,13其次,秩为2,而最大的是98,秩为10,我们使用rank(x)表示x的秩,通常也用Ri表示观测值$x_{i}$的秩,如下所示:
$x_{i}$ | 98 | 67 | 63 | 3 | 38 | 16 | 21 | 53 | 13 | 81 |
---|---|---|---|---|---|---|---|---|---|---|
$R_{i}=rank(x_{i})$ | 10 | 8 | 7 | 1 | 5 | 3 | 4 | 6 | 2 | 9 |
非参数检验的原理
如果零假设中确定了一个中位数$M_{0}$,那么样本点应该以同样的概率出现在$M_{0}$的两边,也就是说,如果每个样本点送去零假设的中位数,那么得到的差值有些为正,有些为负,如果零假设正确,那么正负符号数目应该差不多,如果差得很多,这就意味着零假设有问题,可以拒绝零假设。这也就是所谓的符号检验(sign test)。
这里没有涉及任何总体分布,在零假设下,样本点和$M_{0}$的差值中负号的个数(记为$S^-$)应该服从二项分布Bin(n,α),而正号的个数(记为$S^+$)䚱服从二项分布Bin(n,1-α),注意,对于已知对称的分布,由于中位数和均值相等,对中位数的检验等同于对均值的检验,我们通过一个例子来解释符号检验。
单样本的关于总体中位数的符号检验
案例A,质量监督部门对商店里出售的某厂家的西洋参片进行了抽查,对于25包写明为净重100g的西洋参片的称重结果如下所示:
这里的总体分布未知(我们只是假设未知,其实它的分布是可以计算出来的),用M表示总体中位数,容易计算出,样本中位数为m=98.36,因为人们怀疑厂家包装的西洋参片分量。由于对于重量的总体分布不清楚,决定对其进行符号检验,需要的检验如下所示:
按照零假设,每个观测值(每包西洋参的净重)大于中位数$M_{0}=100$的概率和小于100的概率都是0.5,这应该服从二项分布Bin(25,0.5),容易计算出大于100的只有$S^+=8$,这样的参数为n=25,p=0.5的二项分布变量小于或等于8的概率为0.05388,这就是p值,历引,对于显著性水平α=0.05,根据这个符号检验,我们没有足够的证据拒绝零假设。在R中计算的过程如下所示:
|
|
一般来说,根据样本中位数和零假设中的待检验总体中位数$M_{0}$的比较,我们的检验为下面三种形式之一(记样本中位数为m),如下所示:
这里的关于中位数的符号检验概率,完全可以很容易地推广到关于总体α分位数的符号检验中,如果零假设中确定了一个α分位数$Q_{\alpha0}$
那么,样本点应该以概率α出现在$Q_{\alpha0}$的左边,或者以概率1-α出现在$Q_{\alpha0}$的右边,因此样本点减去$Q_{\alpha0}$差值中铅的个数(记为$S^-$)应该服从二项分布Bin(n,α),而正号的个数(记为$S^+$)应该服从二项分布Bin(n,1-α)。当α=0.5时,总体α分位数就是总体中位数。
单样本的关于对称总体中位数的Wilcoxon符号秩检验
前面的符号检验仅仅用了样本点和零假设的中位数或α分位数的差的符号,我们可以看到,检验的结果p值大于0.05,但是这种检验方法没有利用这些差的大小,下面介绍的Wilcoxn符号秩检验(Wilcoxon signed-rank test)把差的绝对值的秩分别按照不同的符号相加作为其检验统计量,这里把对总体唯一假定是总体具有对称分布,这种检验方法我们可以看到,它的功效要比前面介绍的高(计算出来的p值小于0.05)。
Wilcoxon符号秩检验原理
Wilcoxon符号秩检验的原理是这样的,假定$x_{1},x_{2},\cdots,x_{n}$为来自连续对称总体的一个样本,如果我们的假设检验问题的零假设为中位数(均值)$M=M_{0}$。那么,对于符号检验而言,只需计算$x_{i}-M_{0}(i=1,2,\cdots,n)$中有多少正负符号,即可利用二项分布的概率来计算p值。但对于Wilcoxon符号秩检验,则要把$|x_{i}-M_{0}|$排序,得到$|x_{i}-M_{0}|$的秩。然后把$x_{i}-M_{0}$的符号加到相应的秩上面。于是,就可以得到既带有正号的秩,又带有负号的秩,对带负号的秩的绝对值求和,即把满足$x_{i}-M_{0}<0$的$|x_{i}-M_{0}|$的秩求和,并用$W^+$表示。如果$M_{0}$的确是中位娄和,那么$W^-$和$W^+$应该大体上差不多。如果$W^-$或者$W^+$过大或过小,则应该怀疑中位数$M=M_{0}$的零假设。令$W=min(W^-,W^+)$,则当W太小时,应该拒绝零假设。这个W就是Wilcoxon符号秩检验统计量。
R中的非参数检验函数
在R中进行Wilcoxon检验的函数是wilcoxon.test
,使用方法如下所示:
如果总体不服从正态分布,那么T检验就不再适用,此时我们可以利用非参数方法推断中位数。wilcoxon.test函数可实现符号秩检验,如下所示:
|
|
结果如下所示:
|
|
单个样本Wilcoxon检验案例
案例A
现在我们再看一下前面的那个案例A,使用Wilcoxon检验来看一下,如下所示:
|
|
案例B
现在再看一个案例B,下面是随机挑选了12袋包装上写的重量是15g的干酵母粉,并进行称重所得到的重量的数据,如下所示:
|
|
由于总体中位数是14.1,而零假设的总体均值是15,因此我们可以怀疑这种袋装酵母粉不够分量,相应的关于中位数的检验如下所示:
假定总体是对称分布的,因此可以应用Wilcoxon符号秩检验,如下所示:
|
|
案例C
例8-2 已知某地正常人尿氟含量的中位数为45.30μmol/L 。今在该地某厂随机抽取12名工人,测得尿氟含量见表8-2第(1)栏。问该厂工人的尿氟含量是否高于当地正常人的尿氟含量?(《医学统计学》,第三版,孙振球,P134)
|
|
结果如下所示:
|
|
这个结果与书上有出入,书中提到,p值是小于0.005,则R的计算出来是0.005099,小于0.05,但SPSS的计算结果与R一致。
两个独立样本Wilcoxon检验(Mann-Whitney U检验)
如果是比较两个正态总体均值,那么就是使用t检验(检验均值之差为$\mu_{1}-\mu_{2}$),如果不知道两组数据是否服从哪种特定的总体分布,我们就要考虑比较两组数据的中位数大小,我们需要的唯一定义就是两个总体的分布有类似的形状,但不要求对称。这里介绍的检验的原理很简单,假定第一个样本有m个观测值$x_{1},\cdots,x_{m}$,第二个有n个观测值,$y_{1},\cdots,y_{n}$。把两个样本混合之后把这个m+n个观测值按照大小次序排序,然后记下每个观测值在混合排序下面的秩,之后分别把两个样本所得到的秩相加。记第一个样本观测值的秩的和为$W_{x}$,而第二个样本秩的和为$W_{Y}$。这两个值可以互相推算,称为Wilcoxon统计量。该统计量的分布和两个总体分布无关,,由此分布可以得到p值。直观上看,如果$W_{x}$与$W_{Y}$之中有一个显著地大(或显著地小),则可以选择拒绝零假设。这个检验注称为Wilcoxon秩和检验(Wilcoxon rank-sum test),也称为Mann-Whitney检验或Mann-Whitney-Wilcoxon检验。之所以有两个名称,这是因为Wilcoxon统计量和由Mann-Whitney导出的检验统计量等价。Mann-Whitney统计量也是一对:$W_{XY}$和$W_{YX}$;定义为两个样本中满足$x_{i}>y_{i}$的数目,而$W_{XY}$定义为两个样本中满足$x_{i}<y_{i}$的数目。检验时,一般使用$W=min(W_{XY},W_{YX})$作为检验统计量。
案例A:(《医学统计学》,第三版,孙振球,P136)
对10例肺癌病人和12例矽肺0期工人用X光片测量肺门横径右侧距RD值(cm),结果如下所示:
|
|
问肺癌病人的RD值是否高于矽肺0期工人的RD值?
思路:第一组数据的样本量为10,中位数是5.665,第二组数据的样本量为12,中位数是4.405,这两个中位数看上去有点差异,令这两组数据的总体中位数分别为$M_{1}$和$M_{2}$,现在进行检验,如下所示:
计算过程如下所示:
|
|
从结果中我们可以看到,p值等于0.04318,同时也得到中间结果$W_{XY}=86.5$,因此哦可以说,对于大于p值的显著必不平都可以拒绝零假设,也就是说,这两组数据的中位数有显著性的差异。
配对Wilcoxon符号秩检验
例8-1:对12份血清分别用原方法(检测时间20分钟)和新方法(检测时间10分钟)测谷-丙转氨酶,结果见表8-1的(2)、(3)栏。问两法所得结果有无差别?(《医学统计学》,第三版,孙振球,P132)
结果如下所示:
|
|
有序的秩检验
例8-4 39名吸烟工人和40名不吸烟工人的碳氧血红蛋白HbCO(%)含量见表8-6。问吸烟工人的HbCO(%)含量是否高于不吸烟工人的HbCO(%)含量?
例8-4第1种方法:Wilcox.test检验:
|
|
结果如下所示:
|
|
例8-4第2种方法:Kruskal检验:
Kurskal-Wallis检验是Wilcoxon方法(其实是Mann-Whitney检验)用于多于两个样本的时候的升级版。当对两个样本进行比较的时候,Kurskal-Wallis检验与Mann-Whitney检验是等价的。
|
|
结果如下所示:
|
|
例8-4第2种方法:Ridit检验:
|
|
结果如下所示:
|
|
例8-5
用三种药物杀灭钉螺,每批用200只活钉螺,用药后清点每批钉螺的死亡数、再计算死亡率(%),结果见表8-9。问三种药物杀灭钉螺的效果有无差别?
|
|
例8-6
比较小白鼠接种三种不同菌型伤寒杆菌9D、11C和DSC1后存活日数,结果见表8-10。问小白鼠接种三种不同菌型伤寒杆菌的存活日数有无差别?
例8-7
四种疾病患者痰液内嗜酸性白细胞的检查结果见表8-11。问四种疾病患者痰液内的嗜酸性白细胞有无差别?注:这道例题与《医学统计学及SAS应用》(上海交通大学)的9.11类似
例8-8
对例8-6资料(表8-10)作三个样本间的两两比较,Nemenyi检验。
|
|
例8-9
8名受试对象在相同实验条件下分别接受4种不同频率声音的刺激,他们的反应率(%)资料见表8-12。问4种频率声音刺激的反应率是否有差别?
对两个以上样本进行比较的Kruskal-Wallis 秩和检验
kruskal.test()
kruskal.test(formula, data, subset, na.action, …)
例子 为了比较属于同一类的四种不同食谱的营养效果,将25只老鼠随机的氛围4组,每组分别为8只,4只,7只和6只,采用食谱甲乙丙丁喂养,假设其他条件均值相同,12周后测得体重增加量如表所示,在alpha=0.05水平上,检验各食谱的营养效果是否有显著差异。
|
|
另一种写法
或
利用R做Nemenyi的检验方法有人介绍过,SPSS里面没有现成的方法,需要编程,这里用R来做一下这个检验,原文是在丁香园引用的,参见(R语言)秩和检验后两两比较方法之Nemenyi 检验及其他这篇帖子。
原题:比较以下三组之间的数据,看有无差异
第一组:293,409,392,213,409,57,97,244,254,352,168;
第二组:441,538,390,589,244,409,72,168,254,374 ;
第三组:807,833,409,914,380,883,254,993,667 ;
将上面三组数据录入data20140501,分两列,第一列为cd,第2列为group,存为csv格式。
源代码如下:
这个结果与原代码的运行结果不同
参考资料
- 关于Nemenyi检验的方法是参照丁香园的,原贴地址如下,帖子的作者有把写过《医学统计学及SAS应用》之R语言实现这本电子书,下载地址如下:Nemenyi检验方法
- 《医学统计学及SAS应用》之R语言实现