R中的假设检验(四)卡方检验

最近几天没碰编程,浑身难受,日子过的浑浑噩噩,还是得每天接触下编程。相较于核磁分析,我感觉统计建模更对我的胃口。今天写卡方检验(χ2检验,chi-square test)。
医学中最最常见的就是四格表的卡方检验,spss教材上计算四格表资料的卡方检验结果值有:Pearson chi-square 、Continuity correction 、Likelihood ratio 、 Fisher’s exact test 、 Linear-by-Linear association 。步骤就不讲了,spss上实现卡方检验太简单了。
在spss里这些结果的选择条件:(1)Pearson chi-square检验 :用于 n≥40 且Trc≥5 (2)Yates检验(即Continuity correction检验,连续校正检验):用于n≥40 且5≥Trc≥1 (3)Fisher exact检验:用于n<40,或者Trc<1。
n代表样本量,Trc代表四格表中的任意一格的频数。

今天介绍的有所不一样。今天学习四个函数:prop.test、binom.test、chisq.test、fisher.test。

比例检验 prop.test()
prop就是 proportion 比例。
prop.test(观测值,样本总量,检验的比率)
完整函数格式:prop.test(x, n, p = NULL,alternative = c(“two.sided”, “less”, “greater”),conf.level = 0.95, correct = TRUE)
单样本的比例检验
代码:prop.test(42,356,.35) #p-value<0.01
上面代码的意思是:假设1个小区有356个患有冠心病的病人,其中有42名患者抽烟,某人提出假说患有冠心病的人吸烟的概率是0.35,然后对这个进行检验。这个临床试验中用的很少,简单介绍跳过。这个函数在医学临床上用的不多。
两个独立样本的比例
代码:> lewitt.machin.success <- c(9,4) #每组观测值
> lewitt.machin.total <- c(12,13) #每组总数
> prop.test( lewitt.machin.success,lewitt.machin.total ) #p-value=0.07
可以看出,用prop.test计算的时候,里面是向量。实际上这个的理论方法简单来说就是假设两个样本比例的差值,两个样本的计数,都服从同一个参数p的二项分布。根据上面代码同理可推,若有3组,4组,或更多,只需要把相应的值写入向量就好了。例如lewitt.machin.total <- c( 12,13,14,15)。若设置correct=F,那就是不使用Yates连续校正。
拟合优度检验 chisq.test(),全名chi-square test,即卡方χ2检验
这个是医学临床上最常用的检验方法,就是spss上介绍的χ2检验。
完整函数格式:chisq.test(x, y = NULL, correct = TRUE, p = rep(1/length(x), length(x)), rescale.p = FALSE, simulate.p.value = FALSE, B = 2000)
chisq.test(表格)
举例:

有效无效
急性期6937
慢性期3046

首先构造表格数据:> mymatrix <- matrix(c(69,37,30,46),2,by=c)
>chisq.test(mymatirx,correct = F)#11.713,p-value=0.000,不进行校正
>chisq.test(mymatrix) #10.703,p-value=0.001,默认有连续校正
这个函数是最常用的,但是与spss不一样的是,它需要输入表格样式,可以是矩阵或数据框。spss示例中的是变量样式,包含疗效,分期,频数。这中间如何互相转化,我得研究研究,这里先摆出来常用的方式。
值得注意的是:用prop.test()和chisq.test()算出来的结果是一样的。
如下:> effect <- c(69,30)
> total <- c(106,76)
> prop.test ( effect , total ) #x-squared=10.703,p-value=0.001
同理, prop.test ( effect , total ,correct = F) #不较正,11.713,0.000

所以在这里的话,我个人是觉得prop.test比chisq.test好用的,原因是:第一它显示的细节比chisq更多,比如它会显示比例之差的95%的置信区间;第二它的构造很方便,用的是向量,比矩阵和数据框方便些,可以快速计算出模型结果。

这里先介绍个基础知识,一般认为小样本情况,属于超几何分布;大样本情况,属于二项分布及近似正态分布。
二项分布与超几何分布的区别:(1) 超几何分布需要知道总体的容量,而二项分布不需要(2) 超几何分布是不放回抽取,它描述了从有限个物件中抽出n个物件,成功抽出指定种类的物件的次数(不归还)。(3)二项分布是放回抽取(独立重复)。即重复n次独立的伯努利试验。在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关,事件发生与否的概率在每一次独立试验中都保持不变,则这一系列试验总称为n重伯努利实验,当试验次数为1时,二项分布就是伯努利分布(4)当总体的容量非常大时,超几何分布近似于二项分布。

binom.test(),又称符号检验,binomial 检验,二项分布检验。
binomial 二项分布,原理:如果两个配对样本实际没有差别,则样本数据相减所得的差值应当大致一半为正一半为负。
binom.test(观测值,样本总量,检验的比率)
完整函数格式:binom.test(x, n, p = 0.5 , alternative = c(“two.sided”, “less”, “greater”) , conf.level = 0.95)
零假设:观测值的分布=检验的比率。
这个函数是对分布的概率值进行检验,因此不像prop函数应用那么广泛,在医学临床研究中也用的不多。binom.test并不能进行向量计算,所以不能用于两个及以上独立样本。它只是用来检测概率值的p值,这个概率值在一般情况下是0.5,它使用的时候稍微注意下是单侧检验还是双侧检验。

fisher.test(),又称 Fisher精确检验
fisher.test(表格) #同chisq.test,输入四格表
完整的函数格式:fisher.test(x, y = NULL, workspace = 200000, hybrid = FALSE, hybridPars = c(expect = 5, percent = 80, Emin = 1),control = list(), or = 1, alternative = “two.sided”,conf.int = TRUE, conf.level = 0.95, simulate.p.value = FALSE, B = 2000)
因为它需要某一格小于5,在临床统计上用处很小。

其他的还有配对卡方检验 McNemar检验,和kappa一致性检验。今天不讲了,因为我是搞临床研究的,临床基本没有配对的涉及。等以后我去养老鼠了,再来一次性更新完跟配对样本有关的参数和非参数检验。

补充一句吧,就如果是excel上整理好的表格数据,不论是2x2还是RxC,按表格的形式整理导入后,就可以直接用 chisq.test()和 fisher.test(),因为这样很方便。前者就不说了,后者就是因为某个频率太小,所以就假定数据是超几何分布,这样就可以记住他们俩的适用范围,以5为准。

  • 10
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clancy_wu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值