2015-12-23 91 views
0

把每個分佈的結果,我想提出的隨機數來自第一伽馬[gamma with shape=2 , rate=4]矢量 和第二伽馬[gamma with shape=3 , rate=4]在另一個載體生成混合隨機數序列

x <- rep(0,20) 
for (i in 1:20){ 
    U[i] <- runif(1,0,1) 
    if(U[i] < 0.8){ 
     x[i] <- rgamma(1,shape=2,rate=4) 
    } else { 
     x[i] <- rgamma(1,shape=3,rate=4) 
    } 
} 

回答

0

你可以試試(如果我得到了你的意思):

rgamma(20,shape=sample(2:3,20,replace=TRUE,prob=c(0.8,0.2)),rate=4) 

shape2:3sample d與具有2個80%的概率。然後,你可以調用rgamma只有一次,因爲它的矢量性質。

如果您需要兩個不同的載體,您可以:

nShape2<-rbinom(1,20,.80) 
vecShape2<-rgamma(nShape2,shape=2,rate=4) 
vecShape3<-rgamma(20-nShape2,shape=3,rate=4) 
+0

我試圖用牛頓拉夫遜找到了兩個伽瑪分佈混合最大似然估計,採用矩量法作爲起點,我的算法,我需要拆分兩個γ的值來計算 率=平均(X)/ VAR(X) shape1 =平均值(來ranom數量從第一伽馬)(來自第一伽馬ranom數)^ 2/VAR 形狀2 =平均(來自第二伽馬ranom號)^ 2/VAR(來自第二伽馬ranom號) –

+0

@ SoadM.Bakry我想什麼都描述的是所謂的電子商務「責任」的計算每個數據的混合組分。這是(如果我沒記錯的話)EM算法的E部分。對「期望最大化算法」的網絡搜索應該會出現很多點擊。 –