Python 直方图的过量泊松分布

Python 直方图的过量泊松分布,python,statistics,poisson,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.sho

我知道之前有一些问题与该主题相关,但我找不到问题的具体内容。我试图在柱状图上过度绘制泊松分布。我尝试的第一件事是使用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()
然而,如图所示(我的数据的柱状图是蓝色的),我得到了红色的图,它有三个奇怪的峰值

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

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

y = poisson(mu, bins)
但是当我试图打印它时,我得到了一个nan的数组。我做错什么了吗?还是垃圾箱里的数字太大了

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]
  • 对于泊松函数,您应该在输入中输入'int'而不是'bin',例如numpy.arange(12001475)

  • 对于您自己的泊松函数,在使用“阶乘”时必须小心,尤其是对于大x(x>20),因为它会快速增加!我怀疑是你奶奶的源头。此外,浮点的阶乘也不存在

尝试:


嗨,是的,我想对于我自己的阶乘函数,我必须使bins为整数,我不知道为什么在scipy模块中泊松函数没有出现。我有点傻。谢谢
X = np.arange( 1200, 1450 )
plt.plot( X, poisson.pmf(X,1375), 'r-' )