R的stats包中fisher.test()计算过程详解

23 篇文章 2 订阅

最近用R包中自带的fisher’s exact test做统计检验时,发现结果跟用超几何分布手动算出来(就是把每一种可能都穷尽的,再根据超几何分布来算p-value)的不一样,那么问题在哪呢?

问题就在R包中自带的fisher’s exact test的零假设跟我们常规的不一样,它的零假设和备择假设分别为:
H0: true odds ratio is equal to 1;
H1: true odds ratio is not equal to 1.

假设有如下的2x2表:

smokenon-smoke
lung cancer106
normal112

##########################################################
则OD (Odd ratio)=10*12/(6*1)=20(感觉上就跟1偏离很远,说明吸烟跟肺癌的关系紧密)。
下面用常规的方法计算OD的p-value和95%的置信区间:
SE(log(OD))=sqrt(1/10+1+1/6+1/12)
95%置信区间为(exp(log(OD)-1.96SE(log(OD)), exp(log(OD)+1.96SE(log(OD))),
即(2.051186, 195.0092)
用标准正态分布来计算p-value:
Z-score=(log(OD)-0)/SE(log(OD))=2.578316,即p-value=.004964
##########################################################
用超几何分布手动计算(单侧):
p-value=0.00313 (详细计算过程)
##########################################################
R包的计算结果为:
fisher.test(matrix(c(10,1,6,12),nrow=2))

	Fisher's Exact Test for Count Data

data:  matrix(c(10, 1, 6, 12), nrow = 2)
p-value = 0.00575
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
   1.820063 932.303503
sample estimates:
odds ratio 
  17.83676

##########################################################

结论:用三种方法得到的结果各不相同,尽管R包自带的fisher’s exact test是以odds ratio去做零假设,但后续计算过程并不是常规的评估OD的方法。R包中给出了参考文献,用更复杂的模型去评估OD的置信区间,我们在处理数据时仍可以使用它。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值