2011-05-06 27 views
3

我有一個100k長度的向量,其值介於0和1之間,代表地理位置的棲息地適宜性。雖然有些值非常小,但其中的很多值都是0.9等,所以總和比一個大得多。來自未知概率分佈的樣本

我想生成1000個位置的隨機樣本,每個樣本的長度爲6(沒有替換),選擇位置的概率由該位置處向量的值加權。

虛擬數據如下。有任何想法嗎?

mylocs = letters[1:10] 
myprobs = c(0.1,NA,0.01,0.2,0.6,NA,0.001,0.03,0.9,NA) 
mydata = data.frame(mylocs,myprobs) 

回答

4

我有點困惑你的問題,所以這裏有兩個可能的答案。

如果你想你想品嚐1000組六個值,其中基團可以共享的價值觀,那麼:

locs = letters[1:15] 
probs = c(0.1,NA,0.01,0.2,0.6,NA,0.001,0.03,0.9,NA, 0.1, 0.1, 0.1, 0.1, 0.1) 
mydata = data.frame(locs,probs) 

d = na.omit(mydata) 
replicate(1000, sample(d$locs, size=6, prob=d$probs, replace=F)) 

如果組不應該共享的價值觀,那麼就這樣做:

## Change the "2" to 1000 in the real data set 
s = sample(d$locs, size=6*2, prob=d$probs, replace=F) 
matrix(s, ncol=6) 
+0

如果我理解正確,OP意味着「每個六樣本中不重複」,但兩個不同的六個樣本可以共享價值。 – 2011-05-06 21:41:45

+0

就是這樣,我不知道'sample'中的「prob」參數。 – 2011-05-06 21:42:18

+1

我會擬合貝葉斯分層模型,然後從預測分佈中取樣。 – 2011-05-06 22:18:05