LMFIT中的融合检查

时间:2017-11-06 10:17:04

标签: python lmfit

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

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的输出状态。检查fit函数是否返回零也仅限于默认的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

我很感激您的想法和建议。

0 个答案:

没有答案