はじめに
この記事では、lmfitライブラリを使用して指数関数的減衰モデルによるカーブフィッティングを行う方法について詳しく解説します。Scipy.optimize.curve_fitの拡張版であるlmfitによるパラメータの設定方法、実際のフィッティング手順を説明していきます。データ解析やモデルフィッティングに興味のある方に役立つ内容となっています。
コード

解説
モジュールのインポートなど
バージョン
データの生成
yデータは関数f(x,a,t)を使用して作成します。rng = default_rng()を設定し、rng.random(50)を用いてランダムなノイズをyデータに加えます。xとyの関係性は以下の図のように表示されます。

モデルの定義
lmfit.models
の ExponentialModel
をモデル関数として用います。
初期パタメータの推定
model.guess(y, x=x)を使用して、上図のデータを指数関数的減衰関数で近似するためのフィッティングパラメータの初期値を推定します。得られるパラメータ(params)は以下のようになります。
カーブフィット
model.fit(y, params, x=x)
により、カーブフィッティングを実行します。
フィッティング結果の表示
print(result.fit_report())
により、フィッティングの結果を見ることができます。
result.plot_fit()
によりデータとフィッティングカーブが表示されます。

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

参考
Built-in Fitting Models in the models module — Non-Linear Least-Squares Minimization and Curve-Fitting for Python
Random Generator — NumPy v2.3 Manual
コメント