смоделировать процесс возможного от другого пуассоновского процесса

Мне интересно, как смоделировать процесс Пуассона из другого с помощью случайной переменной Бернулли с параметром p.

Для моделирования первого пуассоновского процесса с параметром \lambda в интервале [0,t] обычно

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

Теперь я знаю, что мы можем связать случайную величину Бернулли с моментами прихода первого пуассоновского процесса, чтобы смоделировать другой пуассоновский процесс параметра p * \lambda, но как это сделать?


person user008    schedule 03.02.2020    source источник


Ответы (1)


Я думаю, вы спрашиваете, как смоделировать время прибытия процесса 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
comment
спасибо за Ваш ответ. Фактически, есть два способа смоделировать прибытие. Тот, который вы использовали экспоненциально, и второй способ, упорядочив прибывших, а затем предполагая, что они распределяются равномерно, чтобы получить выборку из униформы. Теперь мой вопрос: как я могу связать Бернулли с приходом первого пуассоновского процесса, чтобы смоделировать новый пуассоновский процесс параметра p * lambda? - person user008; 03.02.2020
comment
@ user008 вы можете использовать способ, который я показываю в моей последней строке. Предполагается, что прибытие произойдет с вероятностью p. - person Allan Cameron; 03.02.2020
comment
@ user008 В этом случае я моделирую случайную величину Бернулли, используя rbinom с размером, равным единице. Затем код отбрасывает любые поступления, которые не отображают 1 в этом образце Бернулли. - person Allan Cameron; 03.02.2020