はじめに
この記事では、lmfitライブラリを使用して指数関数的に修正されたガウス分布(Exponentially Modified Gaussian、EMG)モデルによるカーブフィッティングの方法について解説します。非線形最小二乗法を用いたデータ分析の実践的なアプローチを学ぶことができます。
解説
モジュールのインポート
バージョン
データの生成
関数exp_gaussを使用してデータを作成します。誤差関数には、scipyのspecial.erfcを採用しました。作成したデータは以下のようになります。

モデルの定義
lmfit.models
の ExponentialGaussianModel
をモデル関数として用います。
初期パタメータの推定
eg_mod.guess(y, x=x)
により、初期値を推定します。
カーブフィット
out =
により、カーブフィッティングを実行します。eg_mod
.fit(y, pars, x=x)
フィッティング結果の表示
print(out.fit_report())
により、フィッティングの結果を見ることができます。
out.plot_fit()
によりデータとフィッティングカーブが表示されます。

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

参考
Built-in Fitting Models in the models module — Non-Linear Least-Squares Minimization and Curve-Fitting for Python

Exponentially modified Gaussian distribution - Wikipedia
コメント