[lmfit] 26. 指数関数的に修正されたガウス分布モデルによるカーブフィッティング

lmfit

はじめに

lmfitは非線形最小二乗法を用いてカーブフィットするためのライブラリであり、Scipy.optimize.curve_fitの拡張版に位置する。ここでは、データを指数関数的に修正されたガウス分布(EMG)によりカーブフィッティングする方法について説明する。

解説

モジュールのインポート

バージョン

データの生成

関数exp_gaussでデータを作成する。誤差関数には、scipyのspecial.erfcを用いた。作成したデータは下のようになる。

モデルの定義

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

初期パタメータの推定

eg_mod.guess(y, x=x)により、初期値を推定する。

カーブフィット

out = eg_mod.fit(y, pars, x=x)により、カーブフィッティングを実行する。

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

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

out.plot_fit()によりデータとフィッティングカーブが表示される。

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

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

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

参考

Built-in Fitting Models in the models module — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
Exponentially modified Gaussian distribution - Wikipedia

コメント