2011-06-12 187 views
3

我想要生成一個過程,其中每一步都有一個泊松隨機變量的實現,應該保存該實現,然後應該實現下一個泊松隨機變量並將其添加到總和之前所有的實現。此外,應該有機會在每一步都停止這個過程。希望對你們有意義...任何想法都會感激!使用R生成泊松過程

+2

反對票值得評論。所以,不管你是誰,請寫下你爲什麼反對投票,這樣OP就可以學習如何改進他的問題。 – 2011-06-12 12:51:19

+1

作業.......? – csgillespie 2011-06-12 20:45:31

回答

1

你對模擬參數非常模糊,但這是怎麼回事?

Lambda爲隨機泊松數。

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") 
    } 
} 

刪除零(如果有的話)。可以使用cumsum來累計求和值。

cumsum(bin) 
+2

首先生成所有的'runif()'和'rpois()'會更有效率,然後看哪個是第一個統一數字' 2011-06-12 13:21:43

+1

你爲什麼要刪除零?他們是從泊松分佈合法繪製的... – 2011-06-12 14:50:46

7

更緊湊,挑一個幾何分佈的隨機數停止前實現的總步數,然後用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)) 
+0

現在我想知道這個概率分佈是否有一個封閉形式的答案......我太忙了/懶得在Pielou或Bailey查找它,但它可能會使一個好的CrossValidated問題... – 2013-10-21 18:50:04