模拟另一个泊松过程中的位置过程

问题描述 投票:0回答:1

我想知道如何从另一个参数为p的伯努利随机变量中模拟一个泊松过程。

通常在间隔\lambda上用参数[0,t]模拟第一个泊松过程

pois = rpois(1, \lambda)
v = runif(pois, O, t)
w = sort(v)

现在,我知道我们可以将伯努利随机变量与第一个泊松过程的到达时间相关联,以模拟参数p * \lambda的另一个泊松过程,但是如何这样做?

r simulation montecarlo poisson stochastic-process
1个回答
0
投票

[我想您是在问如何模拟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)))

enter image description here

看起来不错。如果计数实际上是泊松分布,则其均值应与方差大致相同:

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))
© www.soinside.com 2019 - 2024. All rights reserved.