我正在尝试使用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。 如您所见,泊松线与第一个不匹配。 *两个数据集都使用相同的数据集。
答案 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()
产生:
有关此主题的更多详细信息,请访问:http://openturns.github.io/openturns/latest/user_manual/_generated/openturns.PoissonFactory.html