【问题标题】:Get covariance best-fit parameters obtained by lmfit using non-"Leastsq"methods获取lmfit使用非“Leastsq”方法得到的协方差最佳拟合参数
【发布时间】:2019-01-17 02:11:11
【问题描述】:

我有一些观察数据,我想通过使用lmfit.Minimizer() 来拟合一些模型参数,以最小化一个误差函数,由于我不会进入这里的原因,它必须返回一个浮点数而不是残差数组。这意味着我不能使用Leastsq 方法来最小化函数。在实践中,nelderBFGSpowell 方法收敛得很好,但这些方法不提供最佳拟合参数的协方差(MinimizerResult.covar)。

我想知道在使用任何非Leastsq 方法时,您是否是一种计算协方差的简单方法。

【问题讨论】:

    标签: optimization minimize minimization lmfit


    【解决方案1】:

    确实,leastsq 方法是唯一可以计算误差线的方法,而且这需要一个残差 数组(元素多于变量!)。

    事实证明,为了能够计算标量最小化器的不确定性,lmfit 已经完成了一些工作,但还没有完成。请参阅 https://github.com/lmfit/lmfit-py/issues/169https://github.com/lmfit/lmfit-py/pull/481。如果您有兴趣提供帮助,那就太好了!

    但是,是的,您可以手动计算协方差。对于每个变量,您需要对其值进行小幅扰动(理想情况下约为 1-sigma,但由于这是您要计算的,您可能不知道),然后修复该值并优化所有其他值。通过这种方式,您可以计算雅可比矩阵(残差数组关于变量的导数)。

    从雅可比矩阵,协方差矩阵为(假设没有奇点):

    covar = numpy.inv(numpy.dot(numpy.transpose(jacobian), jacobian))
    

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      相关资源
      最近更新 更多