LMFIT - переменные извлечения из Fitfunction

Я написал короткий код, чтобы подогнать спектры из спецификации оптического излучения. Поэтому я встроил VoigtModel в Peak и LinearModel в фон. Что-то вроде этого:

mod=VoigtModel()
pars = mod.guess(y, x=x)
out = mod.fit(y, pars, x=x)`

а также

mod=LinearModel() 
pars = mod.guess(y, x=x)
func=mod.fit(y,pars,x=x)`

Теперь я хотел бы рассчитать площадь между линейной функцией и функцией пика Фойгта. Кто-нибудь знает как это сделать. Моя идея состояла в том, чтобы реконструировать функции и выполнить интеграцию. Но я не знаю, как извлечь переменную (наклон, перехват, гамма, сигма,...) из fit_report()?? спасибо, BR, математика


person Matthias K    schedule 30.04.2018    source источник
comment
Не могли бы вы попробовать func.best_values ​​или mod.best_values ​​- это должно вернуть словарь с именами параметров в качестве ключей и их значениями в качестве значений словаря. Вы также можете попробовать func.plot() или mod.plot(), чтобы визуализировать свою посадку.   -  person KRKirov    schedule 30.04.2018


Ответы (1)


Я не совсем уверен, что вы просите, но вот некоторые вещи, которые вы можете извлечь из результата подбора out или func (это довольно странное имя для получения результата подбора, но ОК):

ModelResult имеет:

  • params: упорядоченный словарь наиболее подходящих параметров. Ключи — это имена параметров, а значения — это lmfit.Parameter объекты с атрибутами value, stderr, max, min, correl и т. д.

  • best_values: простой словарь с именами параметров в качестве ключей и наиболее подходящими значениями в качестве значений.

  • best_fit: ndarray наиболее подходящей модели.

Дополнительные атрибуты результата описаны на странице http://lmfit.github.io/lmfit-py/model.html#modelresult-attributes

Итак, вероятно, вы хотите что-то вроде:

for parname, param in out.params.items():
    print("%s = %f +/- %f " % (parname, param.value, param.stderr))

что в основном и делает метод fit_report.

person M Newville    schedule 30.04.2018