我正在使用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
我会很感激你的想法和建议。