我想使用binom
R包(binom.test
函数)执行完全二项式测试,以及4个不同数量的成功,具有4个不同的概率值。
我可以单独做到,但我想知道我是否可以只用一个命令编写代码来进行计算(例如lapply,for循环)。
x <- c(68, 69, 70, 75) #number of successes
p <- c(1/365, 2/365, 3/365, 4/365) #probability of success
n <- 265 #number of trials
conf.level = 0.95
和alternative = "two.sided"
(结果可以是1或0)。
有什么建议吗?
我试过了:
for (i in 1:4) {
test[i] <- binom.test(x[i], n, p[i], alternative = "two.sided", conf.level = 0.95)
}
但不起作用。
答案 0 :(得分:1)
如果您只对结果p值感兴趣,可以执行以下操作:
x <- c(68, 69, 70, 75) #number of successes
p <- c(1/365, 2/365, 3/365, 4/365) #probability of success
n <- 265 #number of trials
test <- numeric(4)
for (i in 1:4) {
test[i] <- binom.test(x[i], n, p[i], alternative = "two.sided", conf.level = 0.95)$p.value
}
test
[1] 6.621447e-111 1.801758e-92 3.467288e-82 2.442975e-81
答案 1 :(得分:1)
使用mapply
:
mapply(binom.test, x, p, n=n, alternative = "two.sided", conf.level = 0.95, SIMPLIFY = FALSE)
mapply只是在其第一个参数中调用该函数,并在其附加参数和其他命名参数中包含所有值。 (参见mapply函数的帮助)
如果你只想要一个结果字段,你可以像这样调用mapply:
mapply(function(x,p,n, ...){
binom.test(x, n, p, ...)$p.value
},
x, p, n=n, alternative = "two.sided", conf.level = 0.95)