以泊松增量创建向量

问题描述

如果我们从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的增量会通过泊松分布来分配增量吗?

enter image description here

解决方法

感谢您进行更新,我现在已了解问题。答案是不;您不应该期望向量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)

这看起来像: Here is demo

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

所以,这实际上只是在大概地看问题,看来以这种方式添加向量会保留泊松行为,并增加lambda值。

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

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

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

最后一点需要注意;如果从介于平均值10,000的分布中拉出之间的值,则不能要求数组以0开头并以1结束。除非您要进行一些归一化。