[lmfit] 1. lmfitによる非線形最小2乗ガウシアンフィッティング

lmfit

はじめに

lmfitは非線形最小二乗法を用いてカーブフィットするためのライブラリであり、Scipy.optimize.curve_fitの拡張版に位置する。ここでは、lmfitでガウシアンフィッティングする方法について説明する。

コード

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

解説

モジュールのインポートなど

バージョン

ガウス分布データの生成

np.random.randnでガウス分布に従うデータを作成し、np.histogramでヒストグラム化することでガウス分布を得る。図で示すと以下のようになる。

モデルの定義

lmfit.modelsGaussianModelをモデル関数として用いる。

初期パタメータの推定

model.guess(histo, x=bins[1:])により上図のガウス分布のフィッティングパラメータの初期値を推定する。initial valueが推定した初期値となる。

カーブフィット

model.fit(histo, params, x=bins[1:])により、カーブフィッティングを実行する。

フィッティング結果の表示

result.plot_fit()によりデータとフィッティングカーブが表示される。初期パラメータの結果を表示するには、ax.plot(bins[1:], result.init_fit)とする。

print(result.fit_report())により、フィッティングの結果を見ることができる。

result.plot()とすることで残差とともにフィッティング結果が表示される。

参考

Non-Linear Least-Squares Minimization and Curve-Fitting for Python — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
Fit with Data in a pandas DataFrame — Non-Linear Least-Squares Minimization and Curve-Fitting for Python

コメント