[lmfit] 9. 対数正規分布関数に基づくモデルによるカーブフィッティング

lmfit

はじめに

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

コード

解説

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

バージョン

対数正規分布データの生成

rng = default_rng()とし、rng.lognormalで対数正規分布に従うデータを作成し、np.histogramでヒストグラム化することで対数正規分布を得る。図で示すと以下のようになる。

モデルの定義

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

初期パタメータの推定

model.guess(histo, x=bins)により上図の対数正規分布のフィッティングパラメータの初期値を推定する。パラメータ(params)は以下のようになる。

カーブフィット

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

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

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

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

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

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

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

参考

Non-Linear Least-Squares Minimization and Curve-Fitting for Python — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
numpy.random.lognormal — NumPy v1.21 Manual

コメント