Р: Как сгенерировать ряд экспоненциальных отклонений, суммирующих с некоторым числом - PullRequest
2 голосов
/ 06 декабря 2011

Я пытаюсь сгенерировать серию времен ожидания для цепи Маркова, где времена ожидания являются экспоненциально распределенными числами со скоростью, равной единице.Однако я не знаю количества переходов процесса, а всего времени, потраченного на процесс.

Так, например:

t <- rexp(100,1)
tt <- cumsum(c(0,t))

t - это векторпоследовательных и независимых периодов ожидания, а tt - вектор фактического времени перехода, начиная с 0.

Опять же, проблема в том, что я не знаю длину t (то есть количество переходов)скорее сколько всего времени ожидания пройдет (т.е. пол последней записи в tt).

Какой эффективный способ сгенерировать это в R?

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Запись в Википедии для Пуассоновского процесса имеет все необходимое.Число поступлений в интервале имеет распределение Пуассона, и как только вы узнаете, сколько существует поступлений, время прихода будет равномерно распределено в пределах интервала.Скажем, например, ваш интервал имеет длину 15.

N <- rpois(1, lambda = 15)
arrives <- sort(runif(N, max = 15))
waits <- c(arrives[1], diff(arrives))

Здесь arrives соответствует вашему tt, а waits соответствует вашему t (кстати, это нехорошая идея назвать вектор t, поскольку t зарезервировано для функции транспонирования).Конечно, последняя запись waits была усечена, но вы упомянули, что в любом случае вы знаете только пол последней записи tt.Если он действительно нужен, вы можете заменить его независимой экспонентой (больше, чем waits[N]), если хотите.

1 голос
/ 06 декабря 2011

Если я правильно понял: вы хотите знать, сколько переходов потребуется, чтобы заполнить ваш временной интервал.Поскольку переходы являются случайными и неизвестными, для данной выборки невозможно предсказать.Вот как найти ответ:

tfoo<-rexp(100,1)   
max(which(cumsum(tfoo)<=10))  
[1] 10  

tfoo<-rexp(100,1)   # do another trial 
max(which(cumsum(tfoo)<=10))  
[1] 14  

Теперь, если вы ожидаете отобрать какой-то огромный образец, например, rexp(1e10,1), то, возможно, вам следует нарисовать «куски».Нарисуйте 1e9 образцов и посмотрите, превышает ли sum(tfoo) ваш временной порог.Если это так, копайте cumsum.Если нет, нарисуйте еще 1e9 образцов и т. Д.

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