3

我想生成一个过程,其中每一步都有一个泊松随机变量的实现,这个实现应该被保存,然后它应该实现下一个泊松随机变量并将其添加到之前所有实现的总和中。此外,应该有机会在每个步骤中停止此过程。希望这对你们有意义......任何想法表示赞赏!

4

2 回答 2

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))
于 2011-06-12T14:50:21.077 回答
1

您对模拟的参数非常模糊,但这是怎么回事?

随机泊松数的 Lambda。

lambda <- 5

这是函数退出时的阈值。

th <- 0.999

创建一个长度为 1000 的向量。

bin <- numeric(1000)

运行该死的东西。它基本上是掷一个“骰子”(生成的值在 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)
于 2011-06-12T12:45:48.063 回答