Генерация пуассоновского процесса с использованием R - PullRequest
3 голосов
/ 12 июня 2011

Я хочу сгенерировать процесс, в котором на каждом шаге происходит реализация пуассоновской случайной переменной, эта реализация должна быть сохранена, а затем должна быть реализована следующая пуассоновская случайная переменная и добавлена ​​к сумме всех реализаций до. Кроме того, должен быть шанс, что на каждом этапе этот процесс останавливается. Надеюсь, что это имеет смысл для вас, ребята ... Любая мысль ценится!

Ответы [ 2 ]

7 голосов
/ 12 июня 2011

Более компактно: выберите одно геометрически распределенное случайное число для общего числа шагов, выполненных до остановки, затем используйте cumsum, чтобы сложить столько отклонений Пуассона:

stopping.prob <- 0.3  ## for example
lambda <- 3.5         ## for example
n <- rgeom(1,1-stopping.prob)+1  ## constant probability per step of stopping
cumsum(rpois(n,lambda))
1 голос
/ 12 июня 2011

Вы очень расплывчаты в параметрах своего моделирования, но как это?

Лямбда для случайного числа Пуассона.

lambda <- 5

Это пороговое значение при выходе из функции.

th <- 0.999

Создайте вектор длиной 1000.

bin <- numeric(1000)

Запустите проклятую вещь.Это в основном бросает «кости» (сгенерированные значения между 0 и 1).Если значения ниже th, возвращается случайное число Пуассона.Если значение больше th (но не равно), функция останавливается.

for (i in 1:length(bin)) {
    if (runif(1) < th) {
        bin[i] <- rpois(1, lambda = lambda)
    } else {
        stop("didn't meet criterion, exiting")
    }
}

Удаляет нули, если таковые имеются.

bin <- bin[bin != 0]

Вы можете использовать cumsum для накопления суммызначения.

cumsum(bin)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...