3

我有一个长度约为 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)
4

1 回答 1

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)
于 2011-05-06T21:31:19.507 回答