Python Can';t将泊松拟合到直方图中
我在这里看了很多例子,并尝试使用其他代码片段,但它们对我不起作用。我有4个数据集,但这里只包括一个。我的教授告诉我,数据似乎是泊松分布的,所以我试图将泊松分布拟合到数据的直方图中。这是我的密码:Python Can';t将泊松拟合到直方图中,python,scipy,distribution,poisson,Python,Scipy,Distribution,Poisson,我在这里看了很多例子,并尝试使用其他代码片段,但它们对我不起作用。我有4个数据集,但这里只包括一个。我的教授告诉我,数据似乎是泊松分布的,所以我试图将泊松分布拟合到数据的直方图中。这是我的密码: ######## Poisson fit ######## import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit from scipy.special import factori
######## Poisson fit ########
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy.special import factorial
data = data59[4]
entries,bin_edges,patches = plt.hist(data59[4],60,[1,10],normed=True)
bin_middles = 0.5*(bin_edges[1:]+bin_edges[:-1])
def poisson(k, lamb):
return np.exp(-lamb)*(lamb**k)/factorial(k)
popt,pcov = curve_fit(poisson,bin_middles,entries)
x = np.linspace(1,10,100)
plt.plot(x,poisson(x,*popt))
plt.show()
我尝试使用scipy.stats
而不是curve\u fit
在直方图顶部绘制其他分布,如normal和Rayleigh。这种方法之所以有效,是因为它们有一个scale参数,而scipy.stats.poisson却没有。结果显示,该分布与曲线拟合
完全相同。我不知道如何解决这个问题。也许数据甚至不是泊松分布的
谢谢你的帮助
更新:数据是来自TXS 0506+056 blazar的IceCube数据。。第一列是修改后的朱利安日,最后一列是能源代理的日志。我使用的是最后一列。我对这些数据有无效的假设和替代性假设,并且正在使用最大似然估计(根据某种分布,在我的第一个案例中是泊松分布)来分析这些数据
另外,这里是我获得数据的地方:直方图中显示的数据。泊松分布是一个计数分布(每单位时间或空间获得0,1,2,…观测值的概率是多少),它的支持度是正整数。您的直方图清楚地显示您有分数,因为尖峰在非整数位置是不同的非零高度。如果您的数据是无限样本,它们将非常适合您的分布(如果它们确实是泊松分布),但由于它们的数量有限,您得到了这些结果。感谢您的帮助。为什么会这样?无限样本允许什么?我见过类似的代码,人们生成随机数据,直方图的拟合度很好,但这些不是无限样本。你对我可以用什么替代有什么建议吗?好的,让我们从头开始:在分布中,
y
值是分布密度。直方图的y
值是多少?仅供参考:这只是随机样本的平均值。你可以用它代替曲线拟合
@WarrenWeckesser当数据明显不满足泊松分布的最低要求时,为什么还要麻烦呢?很有趣。我以前读过你提供的页面,但我想我没有意识到这是关于整数值的。谢谢你的洞察力。