对两个值进行精确二项式测试很容易,但如果想对一大堆成功次数和试验次数进行测试会发生什么。我创建了一个包含测试敏感性、研究中潜在参与者数量的数据框,然后对于每一行,我计算了成功的可能性。这是代码。
sens <-seq(from=.1, to=.5, by=0.05)
enroll <-seq(from=20, to=200, by=20)
df <-expand.grid(sens=sens,enroll=enroll)
df <-transform(df,succes=sens*enroll)
但现在我如何使用每一行的成功和试验次数的组合来进行二项式测试。
我只对二项式检验的 95% 置信区间的上限感兴趣。我希望将该单个数字作为名为“upper.limit”的列添加到数据框中
我想到了一些类似的事情
binom.test(succes,enroll)$conf.int
唉,conf.int 给出了诸如
[1] 0.1266556 0.2918427
attr(,"conf.level")
[1] 0.95
我想要的只是 0.2918427
此外,我有一种感觉,那里必须有 do.call ,甚至可能是 lapply,但我不知道它将如何通过整个数据框。或者我应该使用 plyr 吗?
显然我的头在旋转。请让它停止。
如果这给了你(几乎)你想要的,那么试试这个:
binom.test(succes,enroll)$conf.int[2]
并按原样应用于整个板或跨行:
> df$UCL <- apply(df, 1, function(x) binom.test(x[3],x[2])$conf.int[2] )
> head(df)
sens enroll succes UCL
1 0.10 20 2 0.3169827
2 0.15 20 3 0.3789268
3 0.20 20 4 0.4366140
4 0.25 20 5 0.4910459
5 0.30 20 6 0.5427892
6 0.35 20 7 0.5921885
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)