从具有定义范围 [min, max] 的泊松分布生成随机数

时间:2021-03-16 17:10:17

标签: r random poisson

我想从泊松分布中抽取 100 个随机数,均值为 0.5,范围从 0 到 10。

使用 sub2 函数,我可以从泊松分布中获取随机数,但我无法指定最小值/最大值。

在 R 中有没有办法做到这一点?

更多上下文:在数据集中,我的因变量具有上述属性(平均值、最小值、最大值),我想用我的因变量的模拟数据估计一些模型。

编辑:我的因变量(除了观察值之外,我还想模拟随机数)既没有被截断也没有被审查。但是,我要注意它的标准偏差是 1,即方差不等于 0.5 的均值。

谢谢!

1 个答案:

答案 0 :(得分:0)

您要抽样的项目数量有限,只需计算遵循泊松和抽样的概率

沿线

l <- 0.5

x <- c(0,1,2,3,4,5,6,7,8,9,10)

p <- rep(0, length(x)) # probabilities

s <- 0.0
for (k in x) {
    p[k+1] = l**k * exp(-l) / gamma(k+1)
    s <- s + p[k+1]
}

p = p / s # normalization

print(sample(x, 1, replace=TRUE, prob=p))
print(sample(x, 1, replace=TRUE, prob=p))
print(sample(x, 1, replace=TRUE, prob=p))
print(sample(x, 1, replace=TRUE, prob=p))
print(sample(x, 1, replace=TRUE, prob=p))
print(sample(x, 1, replace=TRUE, prob=p))
print(sample(x, 1, replace=TRUE, prob=p))
相关问题