我希望根据数字序列(即0 0 1 0 1 0 1 ...)创建多个列表,直到有10个成功的负二项分布试验。我显然不太理解列表函数,因为我当前的代码不能检索任何有价值的东西:
z = as.list(supply(1:10, function(x) rnbinom(inf, 10, 1/x)))
概率需要根据序列1 / n而变化,其中n = 1,2,...,10,其中"实验"一直持续到10次成功,然后结果(" 1 1 1 1 1 1 1 1 1"将是第一个,例如,因为Pr = 1)需要列出。
答案 0 :(得分:0)
您需要了解rnbinom
实际返回的是模拟的失败次数,而不是试验顺序。因此,要根据随机数量的失败进行模拟,您需要rep
次失败(0)返回失败次数,随机抽取9次成功(1),然后成功结束(总计为10)。
例如,使用prob=0.5
c(sample(c(rep(1,10-1),rep(0,times=rnbinom(1,10,0.5)))),1)
应用反转概率列表
lapply(1:10,function(x) c(sample(c(rep(1,10-1),rep(0,times=rnbinom(1,10,1/x)))),1))
另一种方法是模拟足够数量的试验本身,然后截断到所需的成功次数。
x <- rbinom(100,1,0.5)
x[cumsum(x)<=10]
正确的实现可以通过模拟连接的其他试验来处理没有产生足够成功的极端情况。