组间差异的非参数检验
若数据无法满足t检验或ANOVA的参数假设,可使用非参数方法
两组的比较
Mann-Whitney U检验
两组数据独立时使用。
用来判断一个总体中获得更高得分的概率是否比另一个总体要大。
> library(MASS)
> with(UScrime,by(Prob,So,median))
> wilcox.test(Prob~So,data = UScrime)
这其中第二句的意思是把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))
sapply批量处理UScrime中的U1(1424岁年龄段城市男性失业率)和U2(3539岁年龄段城市男性失业率),使用medain函数提取它们的中位数。
这里可以得到结论:可以拒绝年长和年轻男性的平均失业率相同的假设。
值得注意的是只有当非参数检验在假设非常不合理时(如对于等级有序数据),这种检验方法才比t检验适用。
多于两组的比较
state.x77数据集中
包含美国各州人口、收入、文盲率、预期寿命、谋杀率、高中毕业率数据
比较美国四个地区的文盲率
如果无法满足ANOVA设计的假设,那么可以使用非参数方法来评估组间的差异
数据格式大致如下:
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)
可以看出,结果表明美国四个地区的文盲率各不相同(p<0.001)。
此外还可以对其他选项进行尝试,比如收入、人口与地区之间都是有关系的