如何通过R中样本的函数生成一系列数,每次尝试的概率不同?

cpjpxq1n  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(125)

例如我有一个关于可能性的向量
第一个月
我想每次以c(1-myprob, myprob)的概率对一系列1到0之间的数字进行采样,
这意味着在序列中的第一个数字中,函数样本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个数字输出,如果我指定的prob;
而的语法
Y <- sample(c(1,0), 5, replace=F, prob=c(1-myprob, prob))
我会把概率集中在0. 62(或者不是我不确定,但结果似乎根本不正确)
感谢您提前回复!

afdcj2ne

afdcj2ne1#

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

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

6vl6ewon2#

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次绘制作为一个向量返回。

相关问题