fit, lsqcurvefit, fitnlm, nlinfitにはど​ういった差異があるの​でしょうか?

9 views (last 30 days)
(x[i] y[i])の実験データの組をy=f(x)のガウス関数などが複数組み合わさったカスタム関数でフィッティングするとき
fit, lsqcurvefit, fitnlm, nlinfitなどが使用できますが、これらにはどういった違いがあるのでしょうか?

Accepted Answer

Hiro Yoshino
Hiro Yoshino on 2 May 2023
それぞれ共通点もありますが、異なる部分もあるという感じです。
ご自身の目的によっては、どれで実行しても同じという場合はあるかと思います。
fit - 与えたモデルに合わせて、関数がフィッティングされます。非線形なモデルでしたら裏では lsqcurvefit (最適化問題) が走ると思います。解に制約条件とかは付けられないです。線形モデルなら、解析解が得られるのでバシッと直ぐに決まったり、そういう知識が無い人はとりあえず使えば動くという感じです。
lsqcurvefit - これは最小二乗法を最適化問題として解きます。非線形の最適化アルゴリズムが動作するため、任意のモデルをフィッティングさせることができます。(収束するかは別の話)。最適化問題を設定するので、一番自由度が高い方法かなと思います。最適化のアルゴリズムにも自由度が有ります。
fitnlm は nlinfit の新しいバージョンです。色々拡張されていて、新しい方を使うと良いと思います。例えば、データ欠損が有っても適当に計算を進めてくれたり、最適化の初期値も適当に指定してくれたりします。分散共分散行列を計算してくれるというのもメリットです。どちらも同じアルゴリズムを使っていて、Levenberg-Marquardt 法ですね。一般的に非線形の最適化問題に用いられる手法です。

More Answers (0)

Products


Release

R2023a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!