Python 直方图的过量泊松分布
我知道之前有一些问题与该主题相关,但我找不到问题的具体内容。我试图在柱状图上过度绘制泊松分布。我尝试的第一件事是使用scipy中stats模块的泊松函数: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
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-' )