R语言_非参数检验
2015-08-22 22:19
411 查看
皮尔森拟合优度卡方检验
ks检验
列联表数据独立性检验
符号检验
秩相关检验
wilcoxon检验
参考资料
由样本评估群体是否符合某种分布情况。
假设H0:群体具有某分布
备选假设H1:群体不具有改分布
思路:将数轴分为m组,样本数据会落入不同的组内。根据假设H0的分布,我们可以确定各个组的预期个数,然后与各个组的实际个数一起构造统计量K。
结论:当n趋于无穷时,k收敛于m-1的卡方分布。
![](http://img.blog.csdn.net/20150822211651475)
在R语言中 chisq.test(),可以完成拟合优度检验。默认就是检验是否为均匀分布,如果是其他分布,需要自己分组,并在参数p中指出。上面题目的解法
其他例子如下:
注意:
1. 分组的时候每组的频数应该大于5。
2. 如果理论分布依赖于多个未知参数,则先用样本得到参数的估计值,然后构造统计量K。这个时候K的自由度减少未知参数的数量个数。
1. 对于单样本,检验其是否符合某种分布
2. 对于双样本,检验其是否属于同一分布
ks检验,理论上可以检验任何分布。
ks检验,既可以做当样本检验,也可以做双样本检验。
![](http://img.blog.csdn.net/20150822214234683)
此外,还有针对配对数据的McNemar检验
![](http://img.blog.csdn.net/20150822214828679)
符号检验也可以用来检验两个总体是否存在明显差异。要是没有差异,那么两者之差为正的概率为0.5。
![](http://img.blog.csdn.net/20150822220229933)
利用秩可以做相关性检验。具体参考参数估计。
cor.test( method=”spearman,kendell”)
假设,数据是连续分布的,数据是关于中位数对称的。
![](http://img.blog.csdn.net/20150822221550972)
ks检验
列联表数据独立性检验
符号检验
秩相关检验
wilcoxon检验
参考资料
皮尔森拟合优度卡方检验
该检验的主要目的是:由样本评估群体是否符合某种分布情况。
假设H0:群体具有某分布
备选假设H1:群体不具有改分布
思路:将数轴分为m组,样本数据会落入不同的组内。根据假设H0的分布,我们可以确定各个组的预期个数,然后与各个组的实际个数一起构造统计量K。
结论:当n趋于无穷时,k收敛于m-1的卡方分布。
[code]#如果是均匀分布,则没有明显差异 。这里组其实已经分好了,直接用 。 #H0:人数服从均匀分布 x <- c(210,312,170,85,223) n <- sum(x); m <- length(x) p <- rep(1/m,m) K <- sum((x-n*p)^2/(n*p)); K #计算出K值 [1] 136.49 p <- 1-pchisq(K,m-1); p #计算出p值,0拒绝假设
在R语言中 chisq.test(),可以完成拟合优度检验。默认就是检验是否为均匀分布,如果是其他分布,需要自己分组,并在参数p中指出。上面题目的解法
[code]chisq.test(x)
其他例子如下:
[code]#例:用这个函数检验其他分布。 抽取31名学生的成绩,检验是否为正态分布。 #小于0.05,拒绝正态分布的假说 x <- c(25,45,50,54,55,61,64,68,72,75,75,78,79,81,83,84,84,84,85, 86,86,86,87,89,89,89,90,91,91,92,100) A = table(cut(x,breaks=c(0,69,79,89,100))) #对样本数据进行分组 A p = pnorm(c(70,80,90,100),mean(x),sd(x)) #获得理论分布概率值 p = c(p[1],p[2]-p[1],p[3]-p[2],1-p[3]) p chisq.test(A,p=p) #例:大麦杂交后关于芒性的比例应该是 无芒:长芒:短芒=9:3:4 。 #我们的实际观测值是335:125:160 。请问观测值是否符合预期? p <- c(9/16,3/16,4/16) x <- c(335,125,160) chisq.test(x,p=p)
注意:
1. 分组的时候每组的频数应该大于5。
2. 如果理论分布依赖于多个未知参数,则先用样本得到参数的估计值,然后构造统计量K。这个时候K的自由度减少未知参数的数量个数。
ks检验
该检验的目的是:1. 对于单样本,检验其是否符合某种分布
2. 对于双样本,检验其是否属于同一分布
ks检验,理论上可以检验任何分布。
ks检验,既可以做当样本检验,也可以做双样本检验。
[code]#单样本检验 #记录一台设备无故障工作时常,并从小到大排序 #420 500 920 1380 1510 1650 1760 2100 2300 2350。 #问这些时间是否服从lambda=1/1500的指数分布? x <- c(420,500,920,1380,1510,1650,1760,2100,2300,2350) ks.test(x,"pexp",1/1500) #双样本检验 #有两个分布,分别抽样了一些数据,问他们是否服从相同的分布。 X<-scan() Y<-scan() x = runif(100) y = runif(100) ks.test(x,y)
列联表数据独立性检验
chisq.test() 同样可以做列联表数据独立性检验,只要将数据写成矩阵的形式就可以了。[code]#根据列联表判断吸烟与致癌是否有关系 #p值很小,拒绝无关系的假设,应该有关系 x = matrix(c(60,3,32,11),nrow=2) chisq.test(x) #如果一个单元格内的数据小于5,那么pearson检验无效。 #此时应做Fisher精确检验 fisher.test(x)
此外,还有针对配对数据的McNemar检验
符号检验
当我们以中位数将数据分为两边,一边为正,一边为负,那么样本出现在两边的概率应该都为1/2。因此,使用p=0.5的二项检验就可以做符号检验了。[code]#统计了66个城市的生活花费指数,北京的生活花费指数为99 。 #请问北京是否位于中位数以上。 x = c(66, 75, 78, 80, 81, 81, 82, 83, 83, 83, 83, 84, 85, 85, 86, 86, 86, 86, 87, 87, 88 ,88, 88, 88 ,88 ,89 ,89 ,89 ,89 ,90 ,90 ,91, 91, 91, 91, 92, 93, 93, 96, 96, 96, 97, 99, 100, 101 ,102, 103, 103, 104, 104, 104, 105, 106, 109, 109, 110 ,110 ,110 ,111 ,113 ,115 ,116 ,117, 118, 155 ,192) mean(x) binom.test(sum(x>99),length(x),p=0.5,alternative = "less")
符号检验也可以用来检验两个总体是否存在明显差异。要是没有差异,那么两者之差为正的概率为0.5。
[code]#统计两种饲料养猪的增重情况,判断是否有差异 #其实用均值更好 #没有明显差异 y <- c(19,32,21,19,25,31,31,26,30,25,28,31,25,25) x <- c(25,30,28,23,27,35,30,28,32,29,30,30,31,16) binom.test(sum(x<y),length(x),p=0.5,alternative = "two.sided") #并不推荐这么检验 var.test(x,y) #方差相等 t.test(x,y,var.equal = T) #没有显著差异
[code]#p<0.1 接受备择假设 认为有差异 binom.test(3,12,alternative = "less",conf.level = 0.9)
秩相关检验
在R语言中,rank()函数用来求秩,如果向量中有相同的数据,求出的秩可能不合我们的要求,对数据做微调即可[code]x <- c(1.2,0.8,-3.1,2,1.2) rank(x) x <- c(1.2,0.8,-3.1,2,1.2+1e-5) rank(x)
利用秩可以做相关性检验。具体参考参数估计。
cor.test( method=”spearman,kendell”)
wilcoxon检验
符号检验只考虑了符号,没有考虑要差异的大小。wilcoxon解决了这个问题。假设,数据是连续分布的,数据是关于中位数对称的。
[code]#单样本检测 #某电池厂商生产的电池中位数为140. #现从新生产的电池中抽取20个测试。请问电池是否合格 x <- c(137,140,138.3,139,144.3,139.1,141.7,137.3,133.5, 138.2,141.1,139.2,136.5,136.5,135.6, 138,140.9,140.6,136.3,134.1) wilcox.test(x,mu=140,alternative = "less", exact=F,correct=F,confi.int=T) #配对双样本检测。 #在农场中选择了10块农田,将每一块农田分成2小块,分别用不同的化肥种菜。 #请问化肥会不会提高蔬菜产量。 x <- c(459,367,303,392,310,342,421,446,430,412) y <- c(414,306,321,443,281,301,353,391,405,390) wilcox.test(x-y,alternative = "greater") #非配对双样本检测 #10名非铅工人和10名铅工人的血铅值是否存在显著差异 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")
[code]x <- rep(1:4,c(62,41,14,11)) y <- rep(1:4,c(20,37,16,15)) wilcox.test(x,y)
参考资料
非参数检验相关文章推荐
- IOS弹出视图preferredContentSize
- ACM学习历程—HDU5418 Victor and World(动态规划 && 状压)
- 启动tomcat时出现The specified JRE installation does not exist 如何解决?
- 面向对象设计模拟简单ATM系统
- CCActionGird源码分析
- 第91讲:Akka第一个案例动手实战架构设计
- MySql 事务+异常处理+异常抛出
- 个人acm模版
- 基于Spring提供支持不同设备的页面
- HDU5418——TSP变形——Victor and World
- 基于Spring提供支持不同设备的页面
- 基于Spring提供支持不同设备的页面
- 基于Spring提供支持不同设备的页面
- 黑马程序员12交通信号灯系统
- Effective Objective-C 2.0学习笔记(部分)
- MSP430G2553与MSP430F5336系列单片机总结[3]——看门狗定时器
- 【好玩的前端知识】 Kube
- 例说linux内核与应用数据通信系列
- 关于类的组合和继承
- NBUT 1455 Malphite