R语言_非参数检验

皮尔森拟合优度卡方检验

该检验的主要目的是:
由样本评估群体是否符合某种分布情况。

假设H0:群体具有某分布
备选假设H1:群体不具有改分布
思路:将数轴分为m组,样本数据会落入不同的组内。根据假设H0的分布,我们可以确定各个组的预期个数,然后与各个组的实际个数一起构造统计量K。
结论:当n趋于无穷时,k收敛于m-1的卡方分布。

这里写图片描述

#如果是均匀分布,则没有明显差异 。这里组其实已经分好了,直接用 。
#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中指出。上面题目的解法

chisq.test(x)

其他例子如下:

#例:用这个函数检验其他分布。 抽取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检验,既可以做当样本检验,也可以做双样本检验。

#单样本检验
#记录一台设备无故障工作时常,并从小到大排序
#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() 同样可以做列联表数据独立性检验,只要将数据写成矩阵的形式就可以了。
这里写图片描述

#根据列联表判断吸烟与致癌是否有关系
#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的二项检验就可以做符号检验了。

#统计了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。

#统计两种饲料养猪的增重情况,判断是否有差异
#其实用均值更好
#没有明显差异
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) #没有显著差异

这里写图片描述

#p<0.1 接受备择假设 认为有差异
binom.test(3,12,alternative = "less",conf.level = 0.9)

秩相关检验

在R语言中,rank()函数用来求秩,如果向量中有相同的数据,求出的秩可能不合我们的要求,对数据做微调即可

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解决了这个问题。
假设,数据是连续分布的,数据是关于中位数对称的。

#单样本检测
#某电池厂商生产的电池中位数为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")

这里写图片描述

x <- rep(1:4,c(62,41,14,11))
y <- rep(1:4,c(20,37,16,15))
wilcox.test(x,y)

参考资料

非参数检验

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值