【问题标题】:Analytic curve fit: one Gauss curve fitting a bimodal model解析曲线拟合:一条高斯曲线拟合双峰模型
【发布时间】:2018-07-23 19:13:16
【问题描述】:

问题:

我有一个完全无噪声模型 ytot,它是两条完美高斯曲线的总和:

> y0 = A0 * exp( (x-mu0)^2/(2*std0^2) ) 
> y1 = A1 * exp( (x-mu1)^2/(2*std1^2) ) 
> y = y0 + y1

我现在需要通过最小平方曲线将它们拟合为 SINGLE 高斯曲线。

问题:

据我所知,真正的 ytot(完全无噪声):在这种情况下,是否有任何分析解决方案可以代表最小平方优化器的作用?例如。在这种情况下解析求解雅可比或梯度?

更多信息:

可以进行最小平方曲线拟合,例如在 Python 中使用 scipy.optimize 的 curve_fit 或最小化函数。但是,我必须为不同的参数执行数百万次拟合,这成为我代码的瓶颈。

注意:我可以在这里使用统计观点(例如 mu=p*mu0+(1-p)*mu1 等)。如果 mu0~mu1 和 std0~std1,这两种方法会导致非常相似的解决方案,但随着双模性的增加而系统地不同。

【问题讨论】:

标签: r math optimization scipy curve-fitting


【解决方案1】:

经过两天的思考和线性代数,找到了解决方案。我希望这对以后的其他人有用。

可以将抛物线拟合到 log(y),而不是将高斯拟合到 y。抛物线最小二乘问题可以通过线性代数轻松解决,参见例如在这个google doc 和这个video

这很容易出现异常值,因此必须使用weighted least square model。我使用了权重 = y^2。

当然,在弄清楚之后,我发现这个非常清晰的paper 概述了完全相同的方法。详细解决方法请看论文。

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 2018-12-10
    • 1970-01-01
    • 2012-06-12
    • 2022-01-02
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多