はじめに
lmfitは非線形最小二乗法を用いてカーブフィットするためのライブラリであり、Scipy.optimize.curve_fitの拡張版に位置する。ここでは、データを指数関数的に修正されたガウス分布(EMG)によりカーブフィッティングする方法について説明する。
解説
モジュールのインポート
バージョン
データの生成
関数exp_gauss
でデータを作成する。誤差関数には、scipyのspecial.erfcを用いた。作成したデータは下のようになる。
![](https://sabopy.com/wp/wp-content/uploads/2022/04/lmfit26_1-800x600.jpg)
モデルの定義
lmfit.models
の ExponentialGaussianModel
をモデル関数として用いる。
初期パタメータの推定
eg_mod.guess(y, x=x)
により、初期値を推定する。
カーブフィット
out =
により、カーブフィッティングを実行する。eg_mod
.fit(y, pars, x=x)
フィッティング結果の表示
print(out.fit_report())
により、フィッティングの結果を見ることができる。
out.plot_fit()
によりデータとフィッティングカーブが表示される。
![](https://sabopy.com/wp/wp-content/uploads/2022/04/lmfit26_2-800x600.jpg)
out.plot()
とすることで残差とともにフィッティング結果が表示される。
![](https://sabopy.com/wp/wp-content/uploads/2022/04/lmfit26_3-1.jpg)
参考
Built-in Fitting Models in the models module — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
![](https://upload.wikimedia.org/wikipedia/commons/1/1c/EMG_Distribution_PDF.png)
Exponentially modified Gaussian distribution - Wikipedia
コメント