copipe Python | フィッティングの誤差を求める。

概要

lmfitをインストール(pip install lmfit)すると、model.fit()を使ってフィッティングし、output.params["パラメータ名"].stderrを使ってフィッティングの誤差を出力することができる。

コード

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()
output = model.fit(x=xData, data=yData)
print("定数 =", output.params["c"].value, "+/-", output.params["c"].stderr)
print("振幅 =", output.params["amplitude"].value, "+/-", output.params["amplitude"].stderr)
print("中心 =", output.params["center"].value, "+/-", output.params["center"].stderr)
print("偏差 =", output.params["sigma"].value, "+/-", output.params["sigma"].stderr)

結果

定数 = -0.28396332298974464 +/- 2.0399814008441868
振幅 = 63.27818680242087 +/- 23.588477162505352
中心 = 0.7109734048108302 +/- 0.25430648403657063
偏差 = 2.2423113216532977 +/- 0.5435288951338916