Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 来自未知概率分布的样本_R_Random Sample - Fatal编程技术网

R 来自未知概率分布的样本

R 来自未知概率分布的样本,r,random-sample,R,Random Sample,我有一个约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) 我对你的问

我有一个约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)

我对你的问题有点困惑,所以这里有两个可能的答案

如果要对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)

如果我理解正确,OP的意思是“每个六个样本中没有重复”,但两个不同的六个样本可以共享值。就是这样,我不知道
sample
中的“prob”参数。我会拟合一个贝叶斯层次模型,然后从预测分布中采样。