0

我正在使用lmfit为 python 实现的库来进行最小二乘拟合。不幸的是,我不知道如何正确估计我的结果的收敛性。我目前所做的是从一些紧密的收敛参数集开始,并迭代地检查我的拟合参数。如果它们都为零,我减少这些参数并再次运行(如下所示)。

conv=1E-13
out  = lmfit.minimize(residual,out1.params,method='leastsq',xtol=conv,ftol=conv)
if out.params['a'].stderr == 0. or  out.params['b'].stderr == 0.:
   while out.params['a'].stderr == 0. or out.params['b'].stderr == 0.:
       conv=conv*10.
       out  =  lmfit.minimize(residual,out1.params,method='leastsq',xtol=conv,ftol=conv)

这往往会奏效,但是,我假设可以使用拟合函数的输出来完成相同的操作。即存储计算输出状态的特殊变量out.parmas.convergence = True。检查拟合函数是否返回零也仅限于默认方法,因为当拟合失败时leastsq,其他选项(如返回不同)。least_squares我也关心lmfit. 也就是说,它使用 完成打印None,这是一个太多的输出变量,并且在我找到的在线参考资料中不存在。

[[Fit Statistics]]
    # function evals   = 16
    # data points      = 21
    # variables        = 2
    chi-square         = 11.408
    reduced chi-square = 0.600
    Akaike info crit   = -8.815
    Bayesian info crit = -6.726
[[Variables]]
    a:       0.09022266 +/- 0.001054 (1.17%) (init= 0.09022267)
    b:       1.49985526 +/- 1.28e-09 (0.00%) (init= 1.5)
[[Correlations]] (unreported correlations are <  0.100)
    C(a, b)                  = -0.197
None

我会很感激你的想法和建议。

4

0 回答 0