オンライン外国為替取引

カーブフィッティングについてわかりやすく解説

カーブフィッティングについてわかりやすく解説
カーブフィッティングについてわかりやすく解説 図2: 測定データを指数関数でフィッティング

指数関数でフィッティングしても残差平方和が最小にならない(前編)

2つの量(あるいは数)の関係を2次元平面にプロットしてそれを何らかの関数でフィッティングする、ということはある種の学問や現場ではよく行われます。そして与えられた関数の形に対して最もよくフィットするパラメータを求める方法として、最小二乗法(Least Squares Method)が非常によく使われます(他の方法を使おうものなら「それには何か意図があるのですか?」と問い詰められるレベルで標準的な方法だと思います)。最小二乗法とは、文字通りに残差の二乗の和(残差平方和)が最小になるようなパラメータを求める、というものです。

とりあえずフィッティングする

2次元平面に7点がプロットされている。それぞれの座標は、(0,255)、(1,201)、(2,158)、(3,127)、(4,101)、(5,79)、(6,64)。

図1: 測定データの散布図

おっと、ここではいつものようにLibreOffice Calcを使って話を進めていきます。MS Excelを使っても、同じような現象を確認できると思います。

図1の散布図を見ると、いかにも指数関数 でフィッティングできそうなプロットの並びになっています。ということで、フィッティングしてみました。その結果が図2です。(念のため…LibreOffice Calcではプロット上で右クリックし、コンテキストメニューから[近似曲線の追加]を選びます。MS Excelでもほぼ同様の操作です。)

図2: 測定データを指数関数でフィッティング

一瞥する限りでは悪くないフィッティングですね。決定したパラメータを含めた数式も表示されています。a = -0.2308、b = 253.28 ということですね(LibreOfficeの既定ではパラメータが10桁以上表示されるのですが、ここでは適度に丸めてあります)

残差平方和を確認する

図3: 残差平方和の確認

念のために残差平方和を求めておきます(図3)。この場合は、6.97 になりました。もしパラメータが最小二乗法で求められたとすると、これが残差平方和の最小値となるはずです。すなわち、パラメータをいろいろ変化させても、残差平方和がこれ以上小さくなることはない、ということです。

それも確認してみましょう。表計算ソフトにはソルバー(solver)という機能があり、特定のセルの値を最適化するようなパラメータの値を、数値計算的に求めることができます。使い方は付録に譲るとして、さっそくやってみましょう。

図4: 指数関数のフィッティングパラメータをソルバーで求めた

結果は図4のようになりました。はい、a = -0.2325、b = 254.18 というパラメータを与えることにより、残差平方和が 5.59 となります。これが本当に最小なのかは置いておくとしても、先に指数関数近似で得たパラメータは、残差平方和を最小にするものではないことがわかりました。どうしてこうなったのでしょうか…

付録:ソルバーの使い方

  1. メニューの[ツール] – [ソルバー]で、ソルバーダイアログ(図5)を開きます。
  2. [ターゲットセル]に残差平方和のセルを指定し、[結果の最適化]で[最小値]を選択します。
  3. [変更させるセル]には、パラメータaとbの入ったセルを選択します。それぞれのセルには、最低限にはそれらしい初期値を入れておくといいでしょう。
    • [オプション]で[ソルバーエンジン]をいろいろイジることができますが、最小二乗法くらいであればデフォルト設定で問題ないでしょう。

図6: [ソルバーの状態]ダイアログ

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる