用Python拟合指数修正高斯曲线

2024-05-12 19:15:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集和这些数据的核密度估计。我相信KDE应该用exponentinally modified Gaussian来合理地描述,所以我试着从KDE中取样,并用该类型的函数拟合这些样本。但是,当我试着用scipy.optimize.curve U拟合,我的拟合与数据完全不匹配。我的代码是

import scipy.special as sse
from scipy.optimize import curve_fit

def fit_func(x, l, s, m):
    return 0.5*l*n.exp(0.5*l*(2*m+l*s*s-2*x))*sse.erfc((m+l*s*s-x)/(n.sqrt(2)*s)) # exponential gaussian

popt, pcov = curve_fit(fit_func, n.linspace(0,1,100), data)

我的“数据集”(从我的KDE采样)是

^{pr2}$

这是我的真实数据柱状图,红色的KDE,以及我尝试用黑色拟合KDE-

histogram with kernel density estimate and my fit overplot


Tags: 数据函数import类型scipygaussianfitsse
1条回答
网友
1楼 · 发布于 2024-05-12 19:15:07

指数修正高斯被定义为向左倾斜的分布,因此,形状参数不会改变这种倾斜的方向。在

这就是我尝试过的。在

    data.reverse()
    popt,pcov=(curve_fit(fit_func, n.linspace(0,1,100), data))
    fitted_curve=list(fit_func(n.linspace(0,1,100),popt[0],popt[1],popt[2]))
    data.reverse()
    fitted_curve.reverse()

Plot of the data and the fitted curve

相关问题 更多 >