不能在python中正确拟合泊松分布

时间:2017-05-09 11:31:38

标签: python matplotlib scipy

我正在尝试使用python3绘制泊松分布,但我在正确拟合数据集时遇到了问题。 我现在的功能是:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy.misc import factorial

#where valor is like [1,2,4,4,4,5,6,2,5,5,7,4,7,3,2,5,7,9,4,44,33,1,3,43,54,22,12,3,24,34,55,33]
data = valor 

entries, bin_edges, patches = plt.hist(data, bins=len(data), alpha=0.6, color='g', edgecolor='black', linewidth=1.2)

bin_middles = 0.5*(bin_edges[1:] + bin_edges[:-1])

def poisson(k, lamb):
    return (lamb**k/factorial(k)) * np.exp(-lamb)

parameters, cov_matrix = curve_fit(poisson, bin_middles, entries) 


x_plot = np.linspace(0,  len(data), 1000)

plt.plot(x_plot, poisson(x_plot, *parameters), 'r-', lw=2)
plt.show()

其中valor是用户发送的可变数据集。

有了这个我尝试绘制泊松分布,使用另一个绘图软件我得到这个result

但情节输出为this。 如您所见,泊松线与第一个不匹配。 *两个数据集都使用相同的数据集。

1 个答案:

答案 0 :(得分:1)

我将使用OpenTURNS'PoissonFactory,它具有一种build方法,该方法返回适合数据的泊松分布。

import openturns as ot
data=[1,2,4,4,4,5,6,2,5,5,7,4,7,3,2,5,7,9,4,44,33,1,3,43,54,22,12,3,24,34,55,33]
sample = ot.Sample(data,1)
distribution = ot.PoissonFactory().build(sample)
distribution.drawPDF()

产生:

Poisson Distribution

有关此主题的更多详细信息,请访问:http://openturns.github.io/openturns/latest/user_manual/_generated/openturns.PoissonFactory.html