我想生成一个过程,其中每一步都有一个泊松随机变量的实现,这个实现应该被保存,然后它应该实现下一个泊松随机变量并将其添加到之前所有实现的总和。此外,应该有可能在每个步骤中停止此过程。希望对你们有意义......任何想法都表示赞赏!
答案 0 :(得分:7)
更紧凑,选择一个几何分布的随机数作为停止前所达到的总步数,然后使用cumsum
求出许多泊松偏差:
stopping.prob <- 0.3 ## for example
lambda <- 3.5 ## for example
n <- rgeom(1,1-stopping.prob)+1 ## constant probability per step of stopping
cumsum(rpois(n,lambda))
答案 1 :(得分:1)
你对模拟的参数非常模糊,但这是怎么回事?
随机泊松数的Lambda。
lambda <- 5
这是函数退出时的阈值。
th <- 0.999
创建一个长度为1000的矢量。
bin <- numeric(1000)
运行darn的东西。它基本上滚动一个“骰子”(生成的值介于0和1之间)。如果值低于th
,则返回随机泊松数。如果该值高于th
(但不等于),则该函数将停止。
for (i in 1:length(bin)) {
if (runif(1) < th) {
bin[i] <- rpois(1, lambda = lambda)
} else {
stop("didn't meet criterion, exiting")
}
}
删除零(如果有)。
bin <- bin[bin != 0]
您可以使用cumsum
累加值。
cumsum(bin)