失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > R语言对数据进行非参数检验

R语言对数据进行非参数检验

时间:2023-10-05 23:59:28

相关推荐

R语言对数据进行非参数检验

假设检验:参数检验运用样本的统计量来估计总体的参数,如用样本均值估计总体均值,用样本标准差估计总体标准差。

非参数检验则不考虑数据的具体值,而更多地运用了数据大小排序的信息,因此不可能以此估计总体的参数

1.原假设和备择假设

原假设(null hypothesis)——原假设又称“ 0假设”,总是有符号 =, ≥ 或≤,表示为 H0。是研究者想收集证据予以反对的假设(生产实践中常对应正常情形,如均值与设计一致);一般来说,原假设是一旦拒绝便要采取行动的假设。因此, 原假设总是“受到保护的假设” ,没有充分的证据是不能拒绝原假设的。例如,对一家信誉很好的工厂的产品进行检验,原假设一般是“ 产品合格”。备择假设(alternative hypothesis)——研究者想收集证据予以支持的假设, 一旦发生就要采取行动, 是与原假设对立的假设,也称“研究假设”,总是有符号 ≠, > 或 <,表示为 H1。

同时在实际应用中,我们有不同的需求,因此又有双侧检验和单侧检验的区分。

双侧检验——备择假设没有特定的方向性,并含有符号“=”的假设检验,称为双侧检验或双尾检验(two-tailed test)单侧检验——备择假设具有特定的方向性,并含有符号“>”或“<”的假设检验,称为单侧检验或单尾检验(one-tailed test)。其中备择假设的方向为“<”,称为左侧检验,备择假设的方向为“>”,称为右侧检验。

原假设与备择假设形式:

双侧检验:

左侧检验:

2.非参数检验:

1.正态W检验

例1. 已知15名学生体重如下,问是否服从正态分布

解:

R语言代码:

w <- c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,

66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0)

shapiro.test(w)

P值>0.05,接受原假设,认为来自正态分布总体。

例2 :H0:数据集服从正态分布

H1:数据集不服从正态分布

#是否服从正态分布#随机抽取3000个样本mysample <- error[sample(1:nrow(error), 3000, replace=FALSE),] shapiro.test(mysample$B1)shapiro.test(mysample$Q1)

#显示p值小于2.2e-16,因此认为不服从正太分布

2.Kolmogorov-Smirnov 检验

例3. 假定从分布函数未知的F(x)和G(x)的总体中分别抽出25个和20个观察值的随即样品,其数据由下表所示。现检验F(x)和G(x)是否相同。

R语言代码:

X<-scan( )

0.61 0.29 0.06 0.59 -1.73 -0.74 0.51 -0.56

1.64 0.05 -0.06 0.64 -0.82 0.37 1.77

2.36 1.31 1.05 -0.32 -0.40 1.06 -2.47

0.39 1.09 -1.28

Y<-scan( )

2.20 1.66 1.38 0.20 0.36 0.00

0.96 1.56 0.44 1.50 -0.30 0.66

2.31 3.29 -0.27 -0.37 0.38 0.70

0.52 -0.71

ks.test(X,Y)

P值>0.05,无法拒绝原假设,说明F(x)和G(x)分布函数相同。

例子:

> ks.test(error$B1,error$Q1)Two-sample Kolmogorov-Smirnov testdata: error$B1 and error$Q1D = 0.11508, p-value < 2.2e-16alternative hypothesis: two-sidedTwo-sample Kolmogorov-Smirnov testdata: error$B1 and error$Q1D = 0.11508, p-value < 2.2e-16alternative hypothesis: two-sided

P值<0.05,可以拒绝原假设,说明B1,Q1分布函数相同。

3.列联表数据的检验

例4. 为了研究吸烟是否与患肺癌相关,对63位肺癌患者及43名非肺癌患者(对照组)调查了其中的吸烟人数,得到2x2列联表,如下表所示

解:

进行Pearson卡方检验

R语言代码:

x<-c(60, 3, 32, 11)

dim(x)<- c(2,2)

chisq.test(x,correct = F)

P值<0.05,拒绝原假设,认为吸烟与患肺癌相关。

4.符号检验

例5. 用两种不同的饲料养猪,其增重情况如下表所示。试分析两种饲料养猪有无显著差异。

R语言代码:

x<-scan()

25 30 28 23 27 35 30 28 32 29 30 30 31 16

y<-scan()

19 32 21 19 25 31 31 26 30 25 28 31 25 25

binom.test(sum(x<y), length(x))

sum(x < y)表示样品X小于样品Y的个数。计算出P值大于0.05,无法拒绝原假设,可以认为两种饲料养猪无显著差异。

例子6:H0:两组数据无显著的差别

H1:两组数据有明显的差别

binom.test(sum(error$B1<error$Q1), length(error$B1))

> binom.test(sum(error$B1<error$Q1), length(error$B1))Exact binomial testdata: sum(error$B1 < error$Q1) and length(error$B1)number of successes = 34950, number of trials = 65535, p-value <2.2e-16alternative hypothesis: true probability of success is not equal to 0.595 percent confidence interval:0.5294742 0.5371285sample estimates:probability of success 0.5333028

P<0.05,所以拒绝原假设,接受两组数据有明显的差别

在符号检验法中,只计算符号的个数,而不考虑每个符号差所包含的绝对值的大小,因此常常使用弥补了这个缺点的wilcoxon符号秩检验。

5.符号秩检验

在R中,wilcox.test()函数可以用来做Wilcoxon秩和检验,也可以用于做Mann-Whitney U检验。当参数为单个样本,或者是两个样本相减,或者是两个参数,paired=F时,是Wilcoxon秩和检验。当paired = FALSE(独立样本)时,就是Mann-Whitney U检验,

在R语言中进行符号秩检验可以使用wilcox.test( )

wilcox.test(x, y = NULL,

alternative = c("two.sided", "less", "greater"),

mu = 0, paired = FALSE, exact = NULL, correct = TRUE,

conf.int = FALSE, conf.level = 0.95, ...)

n为整数向量,表示试验的次数,当x为矩阵时,该值无效.

p为向量,表示试验成功的概率,必须与x有相同的维数,且值在0至1之间,默认值为NULL.

alternative为备择假设选项,取"two.sided"(默认值)表示双侧检验;取"less"表示备择假设为“<”的单侧检验,取"greater"表示备择假设为“>”的单侧检验.

conf.level为0~1之间的数值(默认值为0.95),表示置信水平,它将用于计算比率p或比率差p1-p2的置信区间.

correct为逻辑变量,表示是否对统计量作连续修正,默认值为TRUE.

其中x,y是观察数据构成的数据向量。alternative是备择假设,有单侧检验和双侧检验,mu待检参数,如中位数M0.paired是逻辑变量,说明变量x,y是否为成对数据。exact是逻辑变量,说明是否精确计算P值,当样本量较小时,此参数起作用,当样本两较大时,软件采用正态分布近似计算P值。correct是逻辑变量,说明是否对P值的计算采用连续性修正,相同秩次较多时,统计量要校正。conf.int是逻辑变量,说明是否给出相应的置信区间。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

例7. 今测得10名非铅作业工人和7名铅作业工人的血铅值,如下表所示。试用Wilcoxon秩和检验分析两组工人血铅值有无差异。

解:进行Wilcoxon秩和检验R语言同样可以使用wilcox.test( )

R语言代码:

x<-c(24, 26, 29, 34, 43, 58, 63, 72, 87, 101)

y<-c(82, 87, 97, 121, 164, 208, 213)

wilcox.test(x,y,alternative="less",exact=FALSE,correct=FALSE)

P值小于0.05,拒绝原假设,即铅作业工人血铅值高于非作业工人。

例子2:H0:两组数据无显著的差别

H1:两组数据有明显的差别

> wilcox.test(error$B1,error$Q1,alternative="two.sided",exact=FALSE,correct=TRUE)Wilcoxon rank sum test with continuity correctiondata: error$B1 and error$Q1W = 2103600000, p-value = 1.606e-10alternative hypothesis: true location shift is not equal to 0

P<0.05,所以拒绝原假设,两组数据是有差别的

6.二元数据相关检验

例8.某种矿石中两种有用成分A,B,取10个样品,每个样品中成分A的含量百分数x(%),及B的含量百分数y(%)的数据下表所示,对两组数据进行相关性检验。

解:进行相关性检验,在R语言中可以使用cor.test( )

cor.test(x, y,

alternative = c("two.sided", "less", "greater"),

method = c("pearson", "kendall", "spearman"),

exact = NULL, conf.level = 0.95, ...)

#其中x,y是数据长度相同的向量,alternative是备择假设,缺省值为"two.sided",method是检验方法,缺省值是Pearson检验,conf.level是置信区间水平,缺省值为0.95

cor.test( )还有另一种使用格式

cor.test(formula, data, subset, na.action, ...) #其中formula是公式,形如'~u+v' , 'u', 'v' 必须是具有相同长度的数值向量,data是数据框,subset是可选择向量,表示观察值的子集。

假设此例中两组数据均来自正态分布,使用pearson相关性检验,

R语言代码:

ore<-data.frame(

x=c(67, 54, 72, 64, 39, 22, 58, 43, 46, 34),

y=c(24, 15, 23, 19, 16, 11, 20, 16, 17, 13)

)

cor.test(ore$x,ore$y)

可见P值<0.05,拒绝原假设,认为X与Y相关。

项目推荐:

2000多G的计算机各行业电子资源分享(持续更新)

微信小程序全栈项目之喵喵交友【附课件和源码】

Spring Boot开发小而美的个人博客【附课件和源码】

Java微服务实战296集大型视频-谷粒商城【附代码和课件】

Java开发微服务畅购商城实战【全357集大项目】-附代码和课件

最全最详细数据结构与算法视频-【附课件和源码】

------------------------- end -----------------------

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

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