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) 
+0

谢谢,我希望有一个更小的代码来告诉你实情。例如 'sample(-2:2,10,replace = TRUE,prob = {0:0.8})' 他们怎么没有把它整合到样本中? –

+1

你也可以做'probs markdly

你只需要与所有的概率运行一个单独的载体。考虑到当您创建概率向量时,如果您想要的数字是“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) 

让我知道它是否有帮助。