组间差异的非参数检验

若数据无法满足t检验或ANOVA的参数假设,可使用非参数方法

两组的比较

Mann-Whitney U检验

两组数据独立时使用。
用来判断一个总体中获得更高得分的概率是否比另一个总体要大。

> library(MASS)
> with(UScrime,by(Prob,So,median))
> wilcox.test(Prob~So,data = UScrime)

r语言基因差异表达分析 r语言差异性检验_R

这其中第二句的意思是把UScrime中的Prob数据,按照So的不同,分别进行mean运算得到结果。所以我们看到的是So分别为0和1时(也就是是否位于南方),Prob(也就是监禁率)通过median运算之后得到的中位数。

通过第三句wilcox.test可以拒绝南方各州和非南方各州监禁率相同的假设(p<0.001)。

Wilcoxon符号秩检验

适用于两组称对数据和无法保证正态性假设的情境,可以添加参数paired=TRUE

> sapply(UScrime[c("U1","U2")],median)
> with(UScrime, wilcox.test(U1, U2, paired=TRUE))

r语言基因差异表达分析 r语言差异性检验_Mann-Whitney U_02

sapply批量处理UScrime中的U1(1424岁年龄段城市男性失业率)和U2(3539岁年龄段城市男性失业率),使用medain函数提取它们的中位数。

这里可以得到结论:可以拒绝年长和年轻男性的平均失业率相同的假设。

值得注意的是只有当非参数检验在假设非常不合理时(如对于等级有序数据),这种检验方法才比t检验适用。

多于两组的比较

state.x77数据集中

包含美国各州人口、收入、文盲率、预期寿命、谋杀率、高中毕业率数据

比较美国四个地区的文盲率

如果无法满足ANOVA设计的假设,那么可以使用非参数方法来评估组间的差异

数据格式大致如下:

r语言基因差异表达分析 r语言差异性检验_R_03

Kruskal-Wallis检验(若各组不独立则采用Friedman检验)

kruskal.test(y ~ A, data)

y 是一个数值型结果变量, A 是一个拥有两个或更多水平的分组变量(grouping variable)。
(若有两个水平,则它与Mann-Whitney U检验等价。)

> states<-data.frame(state.region,state.x77)
> kruskal.test(Illiteracy~state.region,data=states)

r语言基因差异表达分析 r语言差异性检验_r语言基因差异表达分析_04

可以看出,结果表明美国四个地区的文盲率各不相同(p<0.001)。

此外还可以对其他选项进行尝试,比如收入、人口与地区之间都是有关系的

r语言基因差异表达分析 r语言差异性检验_Wilcoxon_05


r语言基因差异表达分析 r语言差异性检验_R_06