我正在尝试使用lmfit将曲线拟合到某些数据点,并且我需要参数上的错误。在我致电:out = model.fit(y, pars, x, weights = 1/error)
之后,我做了:print(out.fit_report())
。有时输出是这样的(点击的部分内容发布在这里):
# fitting method = leastsq
# function evals = 490
# data points = 380
# variables = 14
chi-square = 1035.65572
reduced chi-square = 2.82966043
Akaike info crit = 408.995142
Bayesian info crit = 464.157539
[[Variables]]
line1_c: 49.2699229 +/- 0.17590656 (0.36%) (init = 60.38407)
sv1_skew: -6.04992639 +/- 0.50325827 (8.32%) (init = 0)
sv1_center: 13284.8621 +/- 0.01423913 (0.00%) (init = 13284)
sv1_sigma: 1.32758560 +/- 0.02864233 (2.16%) (init = 1)
sv1_amplitude: 240.685241 +/- 3.80236837 (1.58%) (init = 1)
sv1_gamma: 1.32758560 +/- 0.02864233 (2.16%) == 'sv1_sigma'
这就是我需要的(即参数有与之相关的错误)。但是其他时候是这样的:
# fitting method = leastsq
# function evals = 9509
# data points = 64
# variables = 14
chi-square = 3023.19802
reduced chi-square = 60.4639605
Akaike info crit = 274.731995
Bayesian info crit = 304.956358
## Warning: uncertainties could not be estimated:
sv3_center: at initial value
sv4_amplitude: at boundary
[[Variables]]
line1_c: 49.6633100 (init = 60.35763)
sv1_skew: -19.2947984 (init = 0)
sv1_amplitude: 269.063100 (init = 1)
sv1_center: 13285.0635 (init = 13284)
sv1_sigma: 1.66532381 (init = 1)
sv1_gamma: 1.66532381 == 'sv1_sigma'
为什么在第二种情况下无法估计不确定性。另外,对于完全相同的拟合和数据,有时我会得到参数上的错误,有时我不会,例如,我连续python code.py
连续运行两次,没有进行任何修改,有时我得到了错误的估计值有时候我不知道但是,两种情况下的合身性在视觉上看起来都非常好。有人可以帮助我了解发生了什么吗?谢谢!
答案 0 :(得分:0)
如果一个或多个变量未导致拟合结果发生变化,则无法估计参数值的不确定性。这通常意味着一个或多个参数卡在一个初始值(可能是一个很差的猜测,或者可能导致部分模型没有响应)或卡在某个边界。
拟合度报告试图提供一些很好的提示,说明哪些因素阻止了不确定性的估计。它说:
## Warning: uncertainties could not be estimated:
sv3_center: at initial value
sv4_amplitude: at boundary
此外,这意味着您没有包括完整的错误报告,该报告将列出所有14个变量。