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

Generate random numbers from a Poisson distribution with defined range [min, max]

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

使用 rpois(n = 100, lambda = 0.50) 函数,我可以从泊松分布中获取随机数,但我无法指定 min/max 值。

在 R 中有什么方法可以做到这一点?

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

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

谢谢!

您要抽样的项目数量有限,只需使概率服从泊松和抽样

沿线

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