过度绘制泊松分布到直方图

时间:2017-02-27 14:42:25

标签: python statistics poisson

我知道之前有关于该主题的问题,但我无法找到问题的具体内容。我试图在直方图上过度绘制泊松分布。我尝试的第一件事是在scipy中使用stats模块中的泊松函数:

import numpy
from scipy.stats import poisson

mu = mean(data)
n, bins, patches = pyplot.hist(data, 20, normed = 1)
pyplot.plot(bins, poisson.pmf(bins, mu), 'r-')
pyplot.show()

然而,如图所示(蓝色是我数据的直方图),我得到的红色图有三个奇怪的峰值。

The histogram in blue represents my data. The red line is the Poisson function using scipy.stats

因此我尝试编写自己的泊松分布函数:

def poisson(mu, x):
    from scipy.misc import factorial
    return numpy.exp(-mu) * mu**x * factorial(x)**-1

y = poisson(mu, bins)

但是当我尝试打印时,我得到了一系列的纳米。难道我做错了什么?或者是垃圾箱中的数字太大了?

print y    
[ nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan  nan nan nan  nan  nan  nan  nan  nan]

然而,当从stats.poisson打印结果时,我得到:

[3.25452236e-06   0.00000000e+00   0.00000000e+00   0.00000000e+00
 0.00000000e+00   3.63110218e-04   0.00000000e+00   0.00000000e+00
 0.00000000e+00   0.00000000e+00   5.24385396e-03   0.00000000e+00
 0.00000000e+00   0.00000000e+00   0.00000000e+00   1.06061293e-02
 0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
 3.23183010e-03]

1 个答案:

答案 0 :(得分:1)

  • 对于泊松函数,你应该给出' int'例如,输入而不是你的' bump,numpy.arange(1200,1475)。

  • 对于你自己的泊松函数,你在使用“阶乘”时要小心,特别是对于大x(x> 20),因为它会迅速增加!我怀疑是你的南方的起源。浮动的阶乘也不存在!

尝试:

X = np.arange( 1200, 1450 )
plt.plot( X, poisson.pmf(X,1375), 'r-' )