【问题标题】:can't properly fit poisson distribution in python无法在 python 中正确拟合泊松分布
【发布时间】:2017-05-09 11:31:37
【问题描述】:

我正在尝试使用 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。 如您所见,泊松线不像第一个那样适合。 *两个数据集使用相同的数据模式。

【问题讨论】:

  • 嗨,欢迎来到 SO!为了使示例完整,您应该定义/导入factorialcurve_fit。没有它们,它就无法运行。 调整线条大小是什么意思?
  • 哦,我忘记了,我生成的图太小了,当我使用 arena 绘制这个数据集时,绘图线停留在直方图的“中间”。现在我不知道为什么我画错了。我在统计方面很迷茫。
  • 您能否在edit 您的帖子中包含缺失的内容?使用的特定功能实际上可能是问题的原因。由于我仍然不太明白这个问题,如果您可以展示一个示例或您期望的结果的草图可能会有所帮助。
  • 我认为合身可能很好。直方图条的高度与您的泊松概率分布不匹配,因为直方图显示的是计数,而不是概率。

标签: python matplotlib scipy


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2023-03-13
    • 2011-11-01
    • 2019-08-15
    • 2016-09-26
    • 2016-11-10
    • 2014-11-20
    相关资源
    最近更新 更多