并非始终显示lmfit参数上的错误

时间:2019-09-07 02:10:35

标签: python lmfit

我正在尝试使用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连续运行两次,没有进行任何修改,有时我得到了错误的估计值有时候我不知道但是,两种情况下的合身性在视觉上看起来都非常好。有人可以帮助我了解发生了什么吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果一个或多个变量未导致拟合结果发生变化,则无法估计参数值的不确定性。这通常意味着一个或多个参数卡在一个初始值(可能是一个很差的猜测,或者可能导致部分模型没有响应)或卡在某个边界。

拟合度报告试图提供一些很好的提示,说明哪些因素阻止了不确定性的估计。它说:

##  Warning: uncertainties could not be estimated:
    sv3_center:     at initial value
    sv4_amplitude:  at boundary

此外,这意味着您没有包括完整的错误报告,该报告将列出所有14个变量。