我想知道如何从另一个参数为p
的伯努利随机变量中模拟一个泊松过程。
通常在间隔\lambda
上用参数[0,t]
模拟第一个泊松过程
pois = rpois(1, \lambda)
v = runif(pois, O, t)
w = sort(v)
现在,我知道我们可以将伯努利随机变量与第一个泊松过程的到达时间相关联,以模拟参数p * \lambda
的另一个泊松过程,但是如何这样做?
[我想您是在问如何模拟Poission过程的到达时间。泊松过程到达之间的时间由指数分布给出,因此,如果要对lamba = 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
我想用相同的λ和相同的到达次数来模拟泊松过程的到达时间。因此,我可以这样做:
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的Poisson过程的到达时间。
因此,如果要基于具有给定n
和Bernoulli变量lambda
的另一个Poisson流程来模拟Poisson流程的p
到达,则可以这样做
arrivals <- cumsum(rexp(n, p * lambda))