我有一个~100k长度的向量,值介于0和1之间,表示地理位置的栖息地适用性。虽然有些值非常小,但其中很多都是0.9等,所以总和远大于1。
我想生成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)
答案 0 :(得分: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)