1个数字的重量采样
问题描述:
我想从一大堆数字例如-2000:5000
。
我想为某个数字设置权重为80%
。
所有其他可能性应该是相等的每隔一个数字。1个数字的重量采样
这样做一个小的样品很容易:sample(-2:2, 10, replace = TRUE, prob=c(0.05, 0.05, 0.80, 0.05, 0.05))
此将输出:
[1] 0 0 0 0 0 -1 0 0 0 0
如何能我为此做了一个大范围的数字?
答
只是务实地操纵你的概率向量。所以,你必须
values <- -2:2
special_value <- 0
然后,你可以做
probs <- rep(1, length(values))
probs[values==special_value] <- (length(values)-1)*.8/(1-.8)
然后使用
sample(values, 10, replace = TRUE, prob=probs)
答
你只需要与所有的概率运行一个单独的载体。考虑到当您创建概率向量时,如果您想要的数字是“p1 = 0.8”,并且在任何其他情况下都是“p2 = 0.2/n”,则可以使用逻辑测试来定义它。代码运行如下:
n <- 37 # your num
x <- -100:1000 # your sequence
probs <- ifelse(x == n, 0.8, (1 - 0.8) /length(x)) # determine probabilities taking on account they have to add up to 1
sum(probs)
sample(x = x, size = 1000, prob = probs)
让我知道它是否有帮助。
谢谢,我希望有一个更小的代码来告诉你实情。例如 'sample(-2:2,10,replace = TRUE,prob = {0:0.8})' 他们怎么没有把它整合到样本中? –
你也可以做'probs markdly