copipe Python | lmfitでパラメータを制限する。

概要

params=model.make_params()でパラメータを作り、params.add("パラメータ名", min=下限, max=上限)によってパラメータを設定し、model.fit(x=xデータ, data=yデータ, params=params)によってフィッティングすることで、パラメータの範囲を制限することができる。

コード

from lmfit import models
xData = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
yData = [0, 1, 3, 7, 5, 12, 10, 11, 5, 4, 1]
model = models.GaussianModel()+models.ConstantModel()
params = model.make_params()
params.add("amplitude", min=-3)
params.add("center", min=1, max=2)
output = model.fit(x=xData, data=yData, params=params)
print(output.best_values)

結果

{'c': 5.3666965781427525, 'amplitude': -3.0, 'center': 1.0, 'sigma': 375.27701824076587}