Я думаю, вы спрашиваете, как смоделировать время прибытия процесса Poission с заданной лямбдой. Время между приходами в пуассоновский процесс задается экспоненциальным распределением, поэтому, если вы хотите смоделировать x последовательных времен прихода пуассоновского процесса с lamba = 5, вам просто нужно сделать:
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
для моделирования времени прихода пуассоновского процесса с лямбдой, равной 5.
Итак, если вы хотите смоделировать n
вступления для пуассоновского процесса на основе другого пуассоновского процесса с заданными lambda
и переменной Бернулли p
, вы должны сделать
arrivals <- cumsum(rexp(n, p * lambda))
В качестве альтернативы вы можете использовать свою переменную Бернулли для выборки некоторых поступлений, например:
arrivals <- arrivals[as.logical(rbinom(length(arrivals), 1, p))]
person
Allan Cameron
schedule
03.02.2020