使用泊松增量创建向量

Creating vector with Poisson increments

如果我们从 0 到 1 之间的向量开始,M = 100 增量

z = np.linspace(0,10,M)

此向量从 0 到 1 具有相等的增量。

我想创建一个新向量,其中增量 z_{n+1}-z_n 根据参数为 lambda 的泊松分布分布。我通过 cumsum

试过了
lam = 10000
dz = np.random.poisson(lam, M)
z = np.cumsum(dz)

但我不确定这是否正确?这个新向量 z 的增量会通过泊松分布分布吗?

感谢更新,我现在明白问题了。答案是不;您不应该期望向量 z 的增量符合泊松分布。

为了证明原因,让我们创建一堆不同的泊松分布并将它们加在一起。

a = np.random.poisson(1000, 200)
b = np.random.poisson(1000, 200)
c = np.random.poisson(1000, 200)
d = np.random.poisson(1000, 200)
e = np.random.poisson(1000, 200)

plt.figure(figsize=(15, 10))
plt.hist(a+b, bins=200)
plt.hist(a+b+c, bins=200)
plt.hist(a+b+c+d, bins=200)

这看起来像:

太棒了,我们可以看到结果似乎仍然是泊松分布的,但直方图越来越高。还要注意 lambda 参数的线性缩放。所有分布都有 lambda=1000,当我将 2 加在一起时,结果看起来像 lambda = 2000 的分布,当我添加 3 时,它看起来像 lambda=3000。

所以,这实际上只是粗略地看待这个问题,似乎以这种方式添加向量会保留泊松行为,并增加 lambda 值。

但是,您的用例是每个区间必须是从泊松分布中得出的值。假设我们的向量以 [lambda, 0, 0, ..., 0] 开始,其中 lambda 表示从具有速率参数 lambda 的泊松分布中提取的值。为了获得 ith 值,我们将另一个从泊松中得出的值 lambda 添加到 (i-1)th 值。所以我们的向量看起来像 [l, l+l, 0, ..., 0]。如果我们重复这个,我们的向量是:

z = [l, l+l, l+l+l, ..., l+ ...n-1 times... l]

这肯定不是泊松分布。这大致相当于从我绘制的每个直方图中提取一个值。你的图之所以看起来是这样,是因为数组后面的值非常高,当然是,最后的值是 1000 个值的平均值接近 10,000 的总和!直方图绘制等间距的箱。如果您将箱子数量设置得太低,您会得到一个厚块。如果将它设置得太高,您将得到离散的块,每个块包含一个值计数,大致位于 i*lambda,其中 i 是数组元素的索引。

最后一点要注意;你不能要求数组以 0 开头并以 1 结尾,如果中间的值是从平均值为 10, 000 的分布中提取的。除非你想做一些标准化。