繁体   English   中英

如何通过 R 中的样本 function 生成一系列数字,并在每次尝试中给出不同的概率?

[英]How to generate a series of number by function of sample in R, with given different probability in each try?

例如我有一个关于可能性的向量是

myprob <- (0.58, 0.51, 0.48, 0.46, 0.62)

我想每次以c(1-myprob, myprob)的概率对 1 到 0 之间的一系列数字进行采样,

这意味着在系列中的第一个数字中,function 样本 1 和 0 为 (0.42, 0.58),第二个为 (0.49, 0.50) 等等,

如何通过样本生成 5 个数字?

的语法

Y <- sample(c(1,0), 1, replace=F, prob=c(1-myprob, prob))

如果我指定概率,概率的数量不正确,只有 1 个数字 output;

而语法

Y <- sample(c(1,0), 5, replace=F, prob=c(1-myprob, prob))

概率只关注 0.62(我不确定,但结果似乎根本不正确)

感谢您提前回复!

如果myprob是每次迭代绘制 1 的概率,那么您可以使用rbinom ,其中n = 5size = 1 (1-0 绘制的 5 次迭代)。

set.seed(2)
rbinom(n = 5, size = 1, prob = myprob)
[1] 1 0 1 0 0

Maël已经提出了一个很好的二项分布抽样解决方案。 可能还有更多选择,我只想推荐其中两个:

运行程序()

as.integer(runif(5) > myprob)

这将首先生成一系列介于 0 和 1 之间的 5 个均匀分布的随机数,然后将该向量与myprob进行比较并将逻辑值TRUE / FALSE转换为 1/0。

vapply(样品())

vapply(myprob, function(p) sample(1:0, 1, prob = c(1-p, p)), integer(1))

这可能是您最初一直在寻找的东西。 这通过将myprob的值迭代为p来执行sample()命令,并将 5 次绘制作为向量返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM