2013-08-05 92 views
1

我試圖在R中生成兩個事件的泊松表,其中一個平均值爲1.5(lambda1),另一個平均值爲1.25(lambda2)。我想在x = 0到x = 7 +(7或更多)的情況下生成這兩種情況下的概率。這可能很簡單,但我似乎無法弄清楚如何做到這一點!我已經成功地創建了表的數據幀,但我真的不知道該怎麼輸入的參數,因爲我從來沒有寫入之前的函數:R中的泊松表

name <- c("0","1","2","3","4","5","6","7+") 
zero <- mat.or.vec(8,1) 
C <- data.frame(row.names=name, 
       "0"=zero, 
       "1"=zero, 
       "2"=zero, 
       "3"=zero, 
       "4"=zero, 
       "5"=zero, 
       "6"=zero, 
       "7+"=zero) 

我猜我會需要一些「對於「循環,並在某些時候涉及dpois(x,lambda1)。有人可以幫忙嗎?

+1

您提供的輸入值的輸出值是多少? – Thomas

+0

對不起,我忘了提。輸出將是P(X = X,Y = Y)。例如,事件對第一個事件結束X = 1,第二個事件結束Y = 2的概率。實際計算是針對足球的比賽結果,即概率比賽結束1-0,2-0,1-3等。 –

回答

1

我假設這些事件是獨立的。這是一種生成聯合PMF表的方法。

首先,這裏是你定義的名稱,與lambda表達式一起:

name <- c("0","1","2","3","4","5","6","7+") 
lambda1 <- 1.5 
lambda2 <- 1.25 

我們可以通過使用dpois獲得0-6的邊際概率,並使用ppois爲7+邊緣概率和lower.tail=FALSE

p.x <- c(dpois(0:6, lambda1), ppois(7, lambda1, lower.tail=FALSE)) 
p.y <- c(dpois(0:6, lambda2), ppois(7, lambda2, lower.tail=FALSE)) 

一個更好的方法可能是創建,這是否給出任何拉姆達的功能。

然後你只需要外部產品(說真的,你會做手工,R之外同樣的事情),並設置相應的名稱:

p.xy <- outer(p.x, p.y) 
rownames(p.xy) <- colnames(p.xy) <- name 

現在大功告成:

   0   1   2   3   4   5 
0 6.392786e-02 7.990983e-02 4.994364e-02 2.080985e-02 6.503078e-03 1.625770e-03 
1 9.589179e-02 1.198647e-01 7.491546e-02 3.121478e-02 9.754617e-03 2.438654e-03 
2 7.191884e-02 8.989855e-02 5.618660e-02 2.341108e-02 7.315963e-03 1.828991e-03 
3 3.595942e-02 4.494928e-02 2.809330e-02 1.170554e-02 3.657982e-03 9.144954e-04 
4 1.348478e-02 1.685598e-02 1.053499e-02 4.389578e-03 1.371743e-03 3.429358e-04 
5 4.045435e-03 5.056794e-03 3.160496e-03 1.316873e-03 4.115229e-04 1.028807e-04 
6 1.011359e-03 1.264198e-03 7.901240e-04 3.292183e-04 1.028807e-04 2.572018e-05 
7+ 4.858139e-05 6.072674e-05 3.795421e-05 1.581426e-05 4.941955e-06 1.235489e-06 
       6   7+ 
0 3.387020e-04 1.094781e-05 
1 5.080530e-04 1.642171e-05 
2 3.810397e-04 1.231628e-05 
3 1.905199e-04 6.158140e-06 
4 7.144495e-05 2.309303e-06 
5 2.143349e-05 6.927908e-07 
6 5.358371e-06 1.731977e-07 
7+ 2.573935e-07 8.319685e-09 

您可能也使用了一個循環,正如您最初所懷疑的那樣,但這對於相同的解決方案來說更加迂迴。