【问题标题】:Generate Poisson process using R使用 R 生成泊松过程
【发布时间】:2011-06-12 10:46:30
【问题描述】:

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

【问题讨论】:

  • 投反对票值得评论。所以,无论你是谁,请写下你投反对票的原因,以便 OP 学习如何改进他的问题。

标签: r statistics poisson stochastic-process


【解决方案1】:

更简洁地说,选择一个几何分布的随机数作为停止前达到的总步数,然后使用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))

【讨论】:

  • 现在我想知道这个概率分布是否有一个封闭形式的答案......我太忙/懒得在 Pielou 或 Bailey 中查找它,但它可能是一个很好的 CrossValidated 问题。 ..
【解决方案2】:

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

随机泊松数的 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)

【讨论】:

  • 首先生成所有runif()rpois() 会更有效,然后查看哪个是第一个统一数字&lt; th 并仅保留rpois 值的那么多元素。或者甚至只是执行runif() 步骤,计算出您需要多少随机泊松数并只生成那么多。用i in seq_along(bin) 启动循环也更好。
  • 你为什么要删除零?它们是泊松分布的合法抽取......
猜你喜欢
  • 2022-08-16
  • 2010-11-12
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多