我想用倾斜的高斯拟合直方图。 我从文本文件中获取数据:
rate, err = loadtxt('hist.dat', unpack = True)
然后将它们绘制成直方图:
plt.hist(rate, bins= 128)
这个直方图有一个倾斜的高斯形状,我想要适应。
我可以用一个简单的高斯函数来做到这一点,因为 scipy
包含函数,但没有倾斜。我该如何继续?
可能,返回的拟合优度测试是最好的。
最佳答案
您可能会发现 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)
这将报告参数振幅、中心、sigma(对于正态高斯)和 gamma(偏度因子)的值和不确定性。
关于python - 用偏斜高斯拟合直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903487/