用偏斜高斯拟合直方图

Py-*_*ser 3 python histogram curve-fitting scipy

我想用倾斜的高斯拟合直方图。我从文本文件中获取数据:

rate, err = loadtxt('hist.dat', unpack = True)
Run Code Online (Sandbox Code Playgroud)

然后将它们绘制为直方图:

plt.hist(rate, bins= 128)
Run Code Online (Sandbox Code Playgroud)

这个直方图有一个偏斜的高斯形状,我想适合。我可以用一个简单的高斯来做到这一点,因为scipy包含了这个函数,但没有倾斜。我该如何继续?

可能返回的拟合优度测试是最好的。

小智 5

您可能会发现 lmfit ( http://lmfit.github.io/lmfit-py/ ) 很有用。这有一个内置的倾斜高斯模型。你的问题可能很简单

from lmfit.models import SkewedGaussianModel

xvals, yvals = read_your_histogram()

model = SkewedGaussianModel()

# set initial parameter values
params = model.make_params(amplitude=10, center=0, sigma=1, gamma=0)

# adjust parameters  to best fit data.
result = model.fit(yvals, params, x=xvals)

print(result.fit_report())
pylab.plot(xvals, yvals)
pylab.plot(xvals, result.best_fit) 
Run Code Online (Sandbox Code Playgroud)

这将报告参数幅度、中心、西格玛(对于正常高斯)和伽玛(偏度因子)的值和不确定性。