我知道之前有关于该主题的问题,但我无法找到问题的具体内容。我试图在直方图上过度绘制泊松分布。我尝试的第一件事是在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)
但是当我尝试打印时,我得到了一系列的纳米。难道我做错了什么?或者是垃圾箱中的数字太大了?
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]
答案 0 :(得分:1)
对于泊松函数,你应该给出' int'例如,输入而不是你的' bump,numpy.arange(1200,1475)。
对于你自己的泊松函数,你在使用“阶乘”时要小心,特别是对于大x(x> 20),因为它会迅速增加!我怀疑是你的南方的起源。浮动的阶乘也不存在!
尝试:
X = np.arange( 1200, 1450 )
plt.plot( X, poisson.pmf(X,1375), 'r-' )