使用R从给定的概率分布中抽样

时间:2017-10-05 13:31:30

标签: r random sampling

鉴于概率分布如下: enter image description here

x坐标表示小时,y坐标表示每小时的概率

问题是如何生成一组遵循概率分布的1000个随机数据?

2 个答案:

答案 0 :(得分:1)

首先,构建描述此概率分布的向量,然后使用样本:

distribution <- c( 2, 4, 4, rep(5, 7), rep(6, 14), rep(7, 29),
               rep(8, 23), rep(9, 7), rep(10, 4), rep(11, 3))
sample(distribution, 1000, replace=TRUE)

我在11分之后离开了值,可能没有完全读出所有值,但你可以看到这个想法。根据格式,您的数据现在可以更容易生成分布矢量。

答案 1 :(得分:1)

重要的功能是sample。您可以指定一个额外的参数probsample,它指定每个元素的概率。例如,

sample(1:22,1000,replace=TRUE,prob=c(
  0,1,0,3,7,14,30,24,5,3,3,2,4,3,1,2,3,2,2,2,1,0
)

(用你的酒吧的高度替换那个数字串)。 prob参数不必总和为1,R会为你重新规范化。

R可能会生成警告,表明它正在使用&#34; Walker的Alias方法&#34;并且结果与旧版本的R不具有可比性。这是正常的,无需担心。