在R中存储pbinom的输出(具有多个成功概率)

时间:2015-03-06 18:38:50

标签: r for-loop probability

我在R中使用pbinom来确定多个结果值的p值和成功概率:

1 - pbinom(1:2, 21, c(0.02, 0.05))

1:2表示观察到的计数,21表示样本大小,0.020.05表示成功的概率。但是,上述命令的输出是:

[1] 0.06534884 0.08491751

这些值代表以下概率:

1 - pbinom(1, 21, 0.02) & 1 - pbinom(2, 21, 0.05)

分别

我希望获得以下内容的输出:1 - pbinom(1:2, 21, 0.02)1 - pbinom(1:2, 21, 0.05) 这样我获得了输出:

[1] 0.065348840 0.008125299 ## pvalues for 1 - pbinom(1:2, 21, 0.02)
[1] 0.28302816 0.08491751 ## pvalues for 1 - pbinom(1:2, 21, 0.05)

我的实际数据集非常冗长,因此无法为每次成功的可能性输入代码。

我也尝试使用for循环:

output=c()
for (i in 1:2) {
output[i]=(1 - pbinom(i, 21, c(0.02, 0.05)))
}

但是我收到以下警告信息:

  

1:输出[i] =(1 - pbinom(i,21,c(0.02,0.05))):
    要更换的物品数量不是更换长度的倍数
  2:在输出[i] =(1 - pbinom(i,21,c(0.02,0.05)))中:
    要替换的项目数量不是替换长度的倍数

我意识到这个问题可能难以解释,但任何帮助都将不胜感激。 谢谢。

2 个答案:

答案 0 :(得分:1)

使用sapply:

t(sapply( c(0.02, 0.05), function(x) 1 - pbinom(1:2, 21, x)))

#             [,1]        [,2]
# [1,] 0.06534884 0.008125299
# [2,] 0.28302816 0.084917514

答案 1 :(得分:1)

嗨,你可以试试这个,

matrix(1-pbinom(c(1:2,1:2), size=21, prob = rep(c(0.02,0.05), each=2)), ncol=2, byrow=TRUE)

PS:错误意味着您的向量与输入的长度不同。