2008年10月21日

最小二乗法

なにか2つの数値が一組となったようなデータがあったとしよう(体重と身長、温度と湿度、国語の成績と数学の成績...etc)。このようなデータセットは散布図によって図に表すのが適当だろう。例えばこのように(以下Rを使って説明します)。

x <- c(1, 3, 4, 5, 7, 2, 8, 9, 10, 6)
y <- c(0, 4, 3, 7, 3, 4, 7, 9, 12, 8)
plot(x, y, pch=16)

ここでは、xとyと名づけられたそれぞれのデータセット(それぞれを変数と呼ぶ)の間には、片方が大きければもう片方が大きいといったような関係、正の相関があるように見る。

ここで、yをxの関数として予想できたら便利と思うかもしれない。

例えば、次のようなモデル(特にこれは一次式による線形モデルとか呼ぶ)を考えよう。

ここでaとbというのはまだ決まっていない定数で、xiというのが個々のデータとなっている(添え字のiには1, 2, 3...と言ったデータ番号が入る)。順番はともかく、いわゆる普通の一次式だ。yの頭に傘が付いているが、これはxiに各々対応するyの値を正確には表現できない(n個のyを完全にxの式で表示したければn-1次式が必要となる)ためで、yの推定値であることを主張している(ちなみに「ワイハット」と読もう)。

さて、まずは見た感じで決めてみよう。こんな感じでどうだろうか。

a=0, b=1としてみた。ためしにこの式の線を引いてみよう。

なかなかのものではありませんか。

まあ、場合によってはこれで十分かもしれない。しかしながら、例えばa=0.01, b=0.99と言ったような値と、今の値とどっちのが「より適切」であるかはどのように判断するべきだろうか。

ここで判断の指標には今引いた「線」から「点」までの距離、特に垂直方向の距離を使う。線をグラフに書き入れよう。

この垂直方向に引かれた線、その合計が最も少なくなるような線が、最も適切な線であるとするのはそれなりに合理的だろう。というわけで、この垂直方向の線が最も短くなるような線を探索することを目標としよう。

まず、「垂直方向の線」を数式で表現する。これはy軸方向におけるモデル式とデータポイントの間の距離であり、誤差、あるいは残差と呼ばれる。残差をdという文字で表すことにする。あるyの値yiに対するdは添え字をつけてdiとする。つまり、

そうして問題はこのdiの絶対値の総和を最小にしようということだった。最小化するためにいじれるのはaとbという値だけで、それらはy[ハット]を表現するモデル式の中に含まれている。ところで「絶対値の」というのは関心があるのが差ではなく「距離」だからである。しかし、絶対値を含む数式というのは非常に計算が難しくなるため、ここではdを二乗することにより符号を正に揃えるという戦法を採ろう。

よって、目的は次の式を最小化するaとbの値を求めることに置き換えられた。で、置き換えられたついでにちょいちょいと変形してaとbを表に引きずり出してやろう。

展開して多少見づらくなったかもしれないが、ここで自由に変更できる文字はaとbだけであることを思い出すと、この式はaとbについてそれぞれ2次式になっていることに気づく。そして2次式として眺めれば、それぞれ下に凸であるということにも気づくだろう。

下に凸な2次式の最小化といえば…「微分して0とおく」というやつ。つまり、変化率が最小になるような点が極値であり、最小値となる。

「微分して」と言ってみたがここでは変数がaとbの2つある。変数が複数ある場合、偏微分という方法を使う。偏微分と聞くと構える人が居るかもしれないが、注目する変数以外を定数とみなして普通に微分するだけなので心配することはない。要するに、bを定数とみなして微分(aについて偏微分)、aを定数とみなして微分(bについて偏微分)の2回の微分をする。すると、次のように2つの式が得られる。

(ここの∂というのは偏微分であることを示す微分記号で、デルだとかラウンド・ディーだとか呼ばれる)

aを変化させたときの変化率、bを変化させたときの変化率というわけなので、こいつらを両方0と置く。

そしてこの2式を連立させ、aとbについて解けば問題は終了。要するに「解の公式」を求めるのが目的なのだ。以下は面倒なだけで特にこれと言って難しい部分もないので読み飛ばし推奨。

まず、式(1)より次式を得る。

式(2)へ代入。

bについて解く。

見やすい感じにする。

次に式(2)より次式を得る。

式(1)へ代入。

aについて解く。

見やすい感じに。

さて、これでaとbに関する「解の公式」が得られた。並べてみよう。


特にこの「形」が意味するものも無いのでさーっと眺めてもらえば問題ないのだが、とりあえず生データのみで答えが出せるというのがポイント。そして実際に計算すべき量は5つしかないのもポイント(よく観察!)。

まあとにかくこの辺は統計ソフトがちょいちょいとやってくれるので、流れだけ把握しておけばよいかなとか思う。モデルは一次式とも限らないわけだし(といっても根拠がなければ一次式にすべきといわれる)。

それで、このように残差の二乗を最小化することにより最適な(とは限らないのだが)モデルを求める手法を最小二乗法と呼ぶ。

最後に最小二乗法により得られたデータ直線を最初の方のグラフに重ねてプロットしてみよう。

まあ最初の「見た感じモデル式」もボチボチではありませんか。手元に電卓とかないときはこういうのも重要ですよ。

ちなみに、Rだと最小二乗法による回帰はこんな感じでやります。

lm(y~x)

これだけで切片と傾きが!で、もう少し詳しい情報が欲しければ

summary(lm(y~x))

と。傾きや切片の有意性、決定係数などといった情報を与えてくれます。

ちなみに最小二乗法は1805年、ルジャンドル先生が発表したわけだけれど、その10年前にはガウス先生が発見していたといういわくつき(?)の方法。ガウス先生はどうもメモに書き付けて満足して発表しないといったことがしばしばあったそうで、先生がちゃんと論文書いてたら数学の発展は何十年も早かったろうとかなんとか。

まあ、要するに論文はちゃんと書きましょうという話でした。

posted by Rion778 at 19:51 | Comment(4) | TrackBack(0) | 勉強ノート | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
とぅげー★

卒の論をがんばりマッスル♪
Posted by あんのうん at 2008年10月22日 16:42
いやー分かりやすい講義でした
Posted by at 2010年05月27日 00:20
とても参考になりました。
Posted by at 2011年02月01日 12:50
拝見させていただきました。
とても分かりやすかったです。
Posted by 経済学部 at 2011年06月02日 23:04
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL(言及がない、関連がないと判断した場合削除することがあります)
http://blog.seesaa.jp/tb/108419878
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。