2016-03-01 151 views
3

我生成高斯,为了完整起见,这就是我的实现:的Python NumPy的泊松分布

from numpy import * 
x=linspace(0,1,1000) 
y=exp(-(x-0.5)**2/(2.0*(0.1/(2*sqrt(2*log(2))))**2)) 

与高峰在0.5fwhm=0.1。迄今为止没有意思。在下一步中,我使用numpysrandom.poisson实现来计算我的数据集的泊松分布。

poi = random.poisson(lam=y) 

我有两个主要问题。

  1. 泊松的特点是方差等于exp。值, 比较平均值()和var()的输出结果令我困惑,因为 输出不相等。
  2. 绘制这个时,poisson dist。占据整数值只有 和最大值。值大约是7,有时是6,而我的旧函数 y有它的最大值。在Afai明白,泊松函数应该给我一个'适合'我的实际函数y。最大值是多少? 值不相等?对不起,我的数学不正确, 其实我是这样做模拟泊松分布的噪音,但我 猜你明白'适合'在这种情况下。

编辑:3,问题:什么是在这种情况下使用的“大小”的变量?我看到不同类型的用法,但最终他们没有给我不同的结果,但在选择错误时失败...

编辑2:好的,从我得到的答案我认为我不够清楚(虽然它已经帮助我纠正了我做的其他一些愚蠢的错误,感谢那!)。我想要做的是将泊松(白色)噪声应用于函数y。正如MSeifert在后面的文章中所述,我现在使用期望值作为lam。但这只会给我带来噪音。我想我对噪声的应用水平有一些理解上的问题(也许它与物理学有关?)。

+0

你是怎么喂的参数**意思**和** var **? ** poi **不是泊松分布。 – Prune

+0

顺便说一句,如果您将** linspace **呼叫更改为1001,则您的结果更具可读性 - 在远端添加fencepost以使其为10^-3的倍数。 – Prune

回答

10

首先,我会写这个答案假设你import numpy as np,因为它明确区分从内建或那些mathrandom包python的numpy功能。

我想是因为你的基本假设是错误的,没有必要回答你指定的问题:

是,泊松统计有等于方差的意思,但它假定您使用不断lam。但是你没有。你输入高斯的y值,所以你不能指望他们是恒定的(他们是你的定义高斯!)。

使用np.random.poisson(lam=0.5)从泊松分布中获得一个随机值。但要小心,因为这种泊松分布甚至与您的高斯分布并不完全相同,因为您处于“低均值”区间,其中这两者的差异很大,请参阅Wikipedia article about Poisson distribution

此外,你正在创建随机数,所以你不应该真的绘制他们,但绘制一个np.histogram他们。由于统计分布都是关于可能性密度函数(见Probability density function)。

之前,我已经提到你创建了一个常数为lam的泊松分布,所以现在是时候谈论size:你创建了随机数,所以要逼近真正的泊松分布,你需要绘制大量的随机数数字。例如:np.random.poisson(lam=0.5, size=10000)例如创建了一个由平均值为0.5的平均值的泊松概率密度函数绘制的10000个元素的数组。

如果您还没有阅读过维基百科文章中提到的泊松分布,那么根据定义只给出无符号整数(> = 0)作为结果。

所以我猜你想要做的就是创建一个包含1000个值高斯和泊松分布是什么:

gaussian = np.random.normal(0.5, 2*np.sqrt(2*np.log(2)), 1000) 
poisson = np.random.poisson(0.5, 1000) 

,然后绘制它,绘制直方图:

,或者使用代替np.histogram

要从随机样本中获取统计信息,您仍然可以在高斯和泊松样本上使用np.varnp.mean。而这个时候(至少在我的样本来看),他们给了良好的效果:

print(np.mean(gaussian)) 
0.653517935138 
print(np.var(gaussian)) 
5.4848398775 
print(np.mean(poisson)) 
0.477 
print(np.var(poisson)) 
0.463471 

通知高斯值是如何几乎正是我们所定义的参数。另一方面,泊松均值和变量几乎相等。您可以通过增加上面的size来提高mean和var的精度。

为什么泊松分布不近似原始的信号

你的原始信号中包含0和1之间唯一的值,因此泊松分布只允许正整数和标准差被链接到的平均值。从高斯平均值开始,你的信号大致为0,所以泊松分布几乎总是等于0.在高斯有最大值的情况下,其值为1. 1的泊松分布看起来像这样(左边是信号+泊松并在对周围的值为1泊松分布)

enter image description here

所以你会得到很多的0和1和2的一些在该地区。但是也有一些可能性,即将数值绘制为7.这正是我提到的反对称性。如果你改变的幅度您的高斯(由1000例如相乘)的“配合”要好得多,因为泊松分布几乎是对称的有:

enter image description here

+1

干得好!我写了大约70%的内容,这一点很清楚。 – Prune

+0

嗨,非常感谢这个漫长而广泛的解释。无论如何,我想我还不够清楚。我其实想把泊松(白色)噪声应用于高斯函数。 – famfop

+0

@famfop - 我已经用一个简短的评论扩展了答案,为什么它不能逼近你的信号。我真的误解了你的问题的部分,我很抱歉 – MSeifert