失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > R语言差异检验:非参数检验

R语言差异检验:非参数检验

时间:2020-06-28 11:29:21

相关推荐

R语言差异检验:非参数检验

文章目录

@[toc]Mann-Whitney U检验适用条件R语言示例Wilcoxon配对秩和检验适用条件R语言示例Kruskal-Wallis检验适用条件R语言示例Friedman检验适用条件R语言示例

非参数检验是在总体方差未知或知道甚少的情况下,利用样本数据对总体分布形态进行推断的方法。它利用数据的大小间的次序关系(秩Rank),而不是具体数值信息,得出推断结论。

它是参数检验所需要的某些条件不满足时所使用的方法。

和参数检验相比,非参数检验的优势如下:

稳健性。对总体分布的条件要求放宽对数据类型要求不严格,适用有序分类变量适用范围广

劣势:

没有利用实际数值,损失了部分信息,检验的有效性较差。

非参数性检验的方法非常多,基于方法的检验功效性角度,本文只涉及

双独立样本:Mann-Whitney U检验双配对样本:Wilcoxon配对秩和检验多独立样本:Kruskal-Wallis检验多配对样本:Friedman检验

Mann-Whitney U检验

曼-惠特尼U检验(曼-惠特尼秩和检验),是由H.B.Mann和D.R.Whitney于1947年提出的。它假设两个样本分别来自除了总体均值以外完全相同的两个总体,目的是检验这两个总体的均值是否有显著的差别。

适用条件

双独立样本检验

R语言示例

函数及格式:wilcox.test(y~x,data)

其中,y是连续变量,x是一个二分变量。

也可以使用这种形式:

wilcox.test(y1,y2)

其中,y1和y2为变量名。可选参数data的取值为一个包含这些变量的矩阵或数据框。

示例:

#载入MASS包library(MASS)#使用UScrime数据集#Prob为监禁率,So为是否南方地区#检验美国监禁率是否存在南方和非南方差异#wilcox.test检验wilcox.test(Prob~So,data = UScrime)#结果Wilcoxon rank sum testdata: Prob by SoW = 81, p-value = 8.488e-05alternative hypothesis: true location shift is not equal to 0#结果显示P小于0.001,美国监禁率存在南方和非南方地区差异。

Wilcoxon配对秩和检验

Wilcoxon配对秩和检验是对Sign符号检验的改进。它的假设被归结为总体中位数是否为0。

适用条件

双配对样本检验

R语言示例

Wilcoxon配对秩和检验调用函数格式与Mann-Whitney U检验相同。不同之处在于可以添加paired=TRUE参数。

示例:

#u1(14-24岁年龄段城市男性失业率)#u2(35-39岁年龄段城市男性失业率)#检验失业率是否在两个年龄段存在差异#Wilcoxon配对秩和检验with(UScrime,wilcox.test(U1,U2,paired = TRUE))#结果Wilcoxon signed rank test with continuity correctiondata: U1 and U2V = 1128, p-value = 2.464e-09alternative hypothesis: true location shift is not equal to 0#结果显示,存在差别。

Kruskal-Wallis检验

由克罗斯考尔和瓦里斯1952年提出,用来解决多独立样本难以满足方差分析条件(独立性、正态性、方差齐性)时统计推断问题。

适用条件

多独立样本检验

R语言示例

函数格式:

kruskal.test(y~A,data)

其中,y为连续变量,A为两个或更多水平的分组变量。

示例:

#检验美国四个地区文盲率是否存在差异#数据皆来自R自带数据集#通过state.region数据集获取地区名称,即分组变量。states <- data.frame(state.region,state.x77)#调用kruskal.test函数kruskal.test(Illiteracy~state.region,data = states)#结果Kruskal-Wallis rank sum testdata: Illiteracy by state.regionKruskal-Wallis chi-squared = 22.672, df = 3, p-value =4.726e-05#结果显示,文盲率存在地区差异。

Friedman检验

Friedman检验也称弗里德曼双向评秩方差分析。由Friedman在1937年提出,基本思想是独立对每一个区组分别对数据进行排秩,消除区组间的差异以检验各种处理之间是否存在差异。

适用条件

多配对样本检验

Fiedman检验在样本量有限的情况下,实际应用价值不大。

R语言示例

函数格式:

friedman.test(y~A|B,data)

其中,y为连续变量,A是一个分组变量,B是一个用以认定匹配观测的区组变量。

或者

friedman.test(data=matrix格式)

其中,data要求矩阵格式。可以通过as.matrix转换

示例:

(虚构)有30名女性分为三组每组10人,试吃三种药。经过一段时间后,药效如下。问三种药药效是否有区别。

药1

4.4,5,5.8,4.6,4.9,4.8,6,5.9,4.3,5.1

药2

6.2,5.2,5.5,5,4.4,5.4,5,6.4,5.8,6.2

药3

7.0,6.2,5.9,6,4.6,6.4,5,6.4,5.8,6.2

#生成数据集drug1 <- c(4.4,5,5.8,4.6,4.9,4.8,6,5.9,4.3,5.1)drug2 <- c(6.2,5.2,5.5,5,4.4,5.4,5,6.4,5.8,6.2)drug3 <- c(7.0,6.2,5.9,6,4.6,6.4,5,6.4,5.8,6.2)#矩阵data <- matrix(c(drug1,drug2,drug3),nrow = 10,dimnames = list(ID=1:10,c('drug1','drug2','drug3')))#查看数据dataID drug1 drug2 drug31 4.4 6.2 7.02 5.0 5.2 6.23 5.8 5.5 5.94 4.6 5.0 6.05 4.9 4.4 4.66 4.8 5.4 6.47 6.0 5.0 5.08 5.9 6.4 6.49 4.3 5.8 5.810 5.1 6.2 6.2#调用friedman.test函数friedman.test(data)Friedman rank sum testdata: dataFriedman chi-squared = 6.8889, df = 2, p-value =0.03192#结果显示,三种药之间存在区别。

R语言小白速通R语言小白速通R语言小白速通

懂点R语言懂点R语言懂点R语言

欢迎分享收藏关注欢迎分享收藏关注欢迎分享收藏关注

如果觉得《R语言差异检验:非参数检验》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。