如何使用result.fit_report()给出的值?

时间:2018-07-17 08:43:53

标签: python data-analysis

我已经使用Lmfit库完成了双重Guassian函数的拟合。

gmodel = Model(myDGauss)
result = gmodel.fit(yGauss, x=xGauss, I1=2.47,I2=2.63,sigma1=1.07,sigma2=1.15)

我已经使用fit_report()方法打印出适合报告:

print(result.fit_report())

我得到了下面显示的内容:

[[Fit Statistics]]
    # fitting method   = leastsq
    # function evals   = 76
    # data points      = 130
    # variables        = 4
    chi-square         = 0.00559033
    reduced chi-square = 4.4368e-05
    Akaike info crit   = -1299.05274
    Bayesian info crit = -1287.58260 [[Variables]]
[[Variables]]
    I1:      0.74813688 +/- 0.01143576 (1.53%) (init = 2.475306)
    I2:      0.23722309 +/- 0.01099214 (4.63%) (init = 2.638552)
    sigma1:  1.23574890 +/- 0.00724975 (0.59%) (init = 1.070258)
    sigma2:  0.57214098 +/- 0.01513481 (2.65%) (init = 1.157566)

我现在想做的是保存打印在某些变量中的fit_report的值。例如,我想将打印的I1的值(0.74813688)放入变量valI1中,该变量被初始化为0。

有人可以帮助我吗?谢谢

1 个答案:

答案 0 :(得分:0)

ModelResult.fit_report()中打印的所有值都是result变量的属性,该变量是一个ModelResult实例。它具有许多属性和方法,如https://lmfit.github.io/lmfit-py/model.html#the-modelresult-class

中所述

例如,最适合的参数保存在result.params中。如所述 https://lmfit.github.io/lmfit-py/parameters.html,这是一个有序词典,其键是各个参数的名称,值是具有许多属性的Parameter对象本身(请参见https://lmfit.github.io/lmfit-py/parameters.html#the-parameter-class)。

因此,要打印参数的最佳拟合值和标准误差,类似于fit_report(),您可以执行以下操作:

for name, par in result.params.items():
     print("  %s: value=%f +/- %f " % (name, par.value, par.stderr))

更简单,更直接的要求是:

valI1 = result.params['I1'].value