我想您是在问如何使用给定的 lambda 模拟泊松过程的到达时间。泊松过程中到达之间的时间由指数分布给出,因此,如果您想对 lba = 5 的泊松过程的 x 个连续到达时间进行建模,您只需这样做:
cumsum(rexp(x, lambda))
因此,例如,假设我想根据我拥有的现有泊松数据对泊松到达过程进行建模。 (我没有,所以我会创建一个随机样本):
set.seed(69)
existing_poisson_data <- rpois(50, 5)
existing_poisson_data
#> [1] 5 7 6 7 4 8 3 7 3 1 8 4 8 3 3 3 2 6 2 7 4 3 6 4 3 3 6
#> [28] 6 2 4 6 8 4 5 4 6 6 5 4 5 11 4 5 6 3 1 2 3 4 3
我想模拟具有相同 lambda 和相同到达次数的泊松过程的到达时间。因此我可以这样做:
number_of_arrivals <- sum(existing_poisson_data)
lambda <- mean(existing_poisson_data)
simulated_time_diffs <- rexp(number_of_arrivals, lambda)
arrivals <- cumsum(simulated_time_diffs)
现在我们可以看到我们的到达是否符合泊松分布:
simulated_histogram <- hist(arrivals, breaks = 0:ceiling(max(arrivals)))
这看起来不错。如果计数实际上是泊松分布的,则它们的均值应该与它们的方差大致相同:
mean(simulated_histogram$counts)
#> [1] 5.418605
var(simulated_histogram$counts)
#> [1] 5.487265
您无需进行分散测试即可看到这些数据似乎是泊松分布的。因此,现在您可以安全地使用您的 arrivals 变量来模拟 lambda 为 5 的泊松过程的到达时间。
因此,如果您想基于给定 lambda 和伯努利变量 p 的另一个泊松过程模拟泊松过程的 n 到达,您可以这样做
arrivals <- cumsum(rexp(n, p * lambda))
或者,您可以使用 Bernoulli 变量来采样一些到达,如下所示:
arrivals <- arrivals[as.logical(rbinom(length(arrivals), 1, p))]