いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

最小2乗法で最も適切な直線を求める

 何かの実験で、下の表が得られたとします。

f:id:Inuosann:20191126220932p:plain

どうやら何となく直線っぽいグラフが描けそうですが、どんな直線が一番いいと思いますか? よさそうなところに適当に描くわけにもいきません。
 最適な直線を決めるためのいい方法があります。最小2乗法と言います。何となくの話は以前、書きました。今回はもっと具体的に。
www.omoshiro-suugaku.com

 求める直線の式をf(x)=ax+b……★とし、最も適切なa、bを求めることにします。x=2のとき、実測値のy=5と★で計算した値f(2)の差は5-f(2)です。同じようにx=4のときの差は7-f(4)、x=6のときは10-f(6)です。ここで

f:id:Inuosann:20191126221233p:plain

とおき、このSが最小になるようなa,bを決められたらベスト!だと思いませんか? Sは、つまり誤差を2乗したものたちの和です。Sを実際に計算してみましょう。5-f(2)=5-(2a+b)=5-2a-bなどを代入して計算すれば(結構大変だけれど)、

f:id:Inuosann:20191126221359p:plain

を得ます。これを最小にすればいいのです。高校2年までの知識で済まそうとするなら、aの2次式と見て

f:id:Inuosann:20191126221504p:plain

と変形し、平方完成してグラフの頂点の高さを求め(bだけの式になる)、その高さを最小にするbを求める、とやればいいでしょう。しかしかなり大変です。実はラクな方法があります。手順のみ書きましょう。★★をaで微分し、0とおきます。aで微分するときにはbは定数と思えばよいのです(「aで偏微分(へんびぶん)する」と言う)。すると118a+24b-196=0です。次に★★をbで微分し、0とおくと6b+24a-44=0です。これらを連立してa、bを求めればよいのです。手作業では少し大変なのでパソコンを使うとa=0/11≒0.909、b=122/33≒3.697 を得ます。これで求める式は y=0.909x+3.697 と分かりました。最後に求まった直線は回帰直線と呼ばれます。なお、ひょっとしてSの式を2乗の和でなく、S=|5-f(2)|+|7-f(4)|+|10-f(6)|のように、絶対値を使った方がいいと思った人もいるかも知れません。しかし、絶対値にしてしまうと微分もできないし、扱いが面倒です。また今回は原理の説明のために数値を相手に計算しましたが、実際にはa,bをすぐに求められる公式があります。

 最小2乗法は、連立1次方程式で変数の数が式の本数と異なる場合に「なるべく適切な解を求める」ときにも用いられます。