[lmfit] 24. 減衰発振器モデルによるカーブフィッティング

lmfit

はじめに

lmfitは非線形最小二乗法を用いてカーブフィットするためのライブラリであり、Scipy.optimize.curve_fitの拡張版に位置する。ここでは、データを減衰発振器モデルによりカーブフィッティングする方法について説明する。

コード

解説

モジュールのインポート

バージョン

データの生成

\[ f(x; A, \mu, \sigma) = \frac{A}{\sqrt{ [1 – (x/\mu)^2]^2 + (2\sigma x/\mu)^2}}\]

上記の関数でデータを作成する。作成したデータは下のようになる。

モデルの定義

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

初期パタメータの推定

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

カーブフィット

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

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

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

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

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

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

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

参考

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

コメント