「最小二乗法」(2006/06/30 (金) 14:49:36) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
**直線を探す
先に見たように、相関係数の絶対値が1に近づくほど、データはある直線の上に近づくように見える。
東証平均と新日鉄のデータの散布図に、そんな直線を引いてみよう。
z <- lsfit(v.tosho,v.shinnittetu)
plot(v.tosho,v.shinnittetu)
abline(z,col="red")
#ref(xyplot.gif)
大雑把にだが、確かにデータはその直線の周りに散らばっているように見える。
ここでは「その直線」を決める方法を考える。
R的には、この問題はすでに解決している。いま直線を引くのにつかったlsfit(v.tosho,v.shinnittetu)というのがそうだ。
lsfit()という関数はいったい何をやっているのだろうか。
lsfit(v.tosho,v.shinnittetu)
とだけ直接入力して、何が出てくるか見てみよう。
$coefficients
Intercept X
-0.850631 1.321059
…(以下略)
$residualsや$qrの後に数字がずらずら並ぶがとりあえずは無視してかまわない(あとでやり直そう)。
「coefficients」という単語は、辞書を引けば分かるように「係数」のことである。
ちなみに「Intercept」は、ここでは「切片」と数学でいうもののことである。
直線の方程式は、むかし学校では
Y=aX+b
などと教わったものだが、回帰直線は別の歴史的事情があって、
Y=a+bX
と書くことが多い。
今の例だと、東証データv.toshoが独立変数X、新日鉄データv.shinnittetuがYである。
あと言うまでも無くaが切片で-0.850631、bがXの係数であり直線の「傾き」表し1.321059 であった。
東証データv.toshoが独立変数X、新日鉄データv.shinnittetuがYとすると、
Y=-0.850631+1.321059 X
というのが我々がさっき求めた回帰直線なのだった。
**最小自乗法とは?
lsfitのヘルプを見るには、Rのコンソール上で
?lsfit
とすればいい。
すると
lsfit package:stats R Documentation
Find the Least Squares Fit
Description:
The least squares estimate of *b* in the model
y = X b + e
is found.
Usage:
…(以下略)
とりあえずUsage以下は、今は無視しておこう。ポイントは表題である「Find the Least Squares Fit」である。Least Squaresは、日本語訳でいうところの「最小自乗(二乗)」というものにあたる。最小自乗法をつかってFitする直線を見つけるのが、この関数「lsfit」の働きである。
**直線を探す
先に見たように、相関係数の絶対値が1に近づくほど、データはある直線の上に近づくように見える。
東証平均と新日鉄のデータの散布図に、そんな直線を引いてみよう。
z <- lsfit(v.tosho,v.shinnittetu)
plot(v.tosho,v.shinnittetu)
abline(z,col="red")
#ref(xyplot.gif)
大雑把にだが、確かにデータはその直線の周りに散らばっているように見える。
ここでは「その直線」を決める方法を考える。
R的には、この問題はすでに解決している。いま直線を引くのにつかったlsfit(v.tosho,v.shinnittetu)というのがそうだ。
lsfit()という関数はいったい何をやっているのだろうか。
lsfit(v.tosho,v.shinnittetu)
とだけ直接入力して、何が出てくるか見てみよう。
$coefficients
Intercept X
-0.850631 1.321059
…(以下略)
$residualsや$qrの後に数字がずらずら並ぶがとりあえずは無視してかまわない(あとでやり直そう)。
「coefficients」という単語は、辞書を引けば分かるように「係数」のことである。
ちなみに「Intercept」は、ここでは「切片」と数学でいうもののことである。
直線の方程式は、むかし学校では
Y=aX+b
などと教わったものだが、回帰直線は別の歴史的事情があって、
Y=a+bX
と書くことが多い。
今の例だと、東証データv.toshoが独立変数X、新日鉄データv.shinnittetuがYである。
あと言うまでも無くaが切片で-0.850631、bがXの係数であり直線の「傾き」表し1.321059 であった。
東証データv.toshoが独立変数X、新日鉄データv.shinnittetuがYとすると、
Y=-0.850631+1.321059 X
というのが我々がさっき求めた回帰直線なのだった。
**最小自乗法とは?
lsfitのヘルプを見るには、Rのコンソール上で
?lsfit
とすればいい。
すると
lsfit package:stats R Documentation
Find the Least Squares Fit
Description:
The least squares estimate of *b* in the model
y = X b + e
is found.
Usage:
…(以下略)
とりあえずUsage以下は、今は無視しておこう。ポイントは表題である「Find the Least Squares Fit」である。Least Squaresは、日本語訳でいうところの「最小自乗(二乗)」というものにあたる。最小自乗法をつかってFitする直線を見つけるのが、この関数「lsfit」の働きである。
本当のYと、Y^=a+bXという直線が導き出すY^との間には、ふつう食い違いが存在する。
今、我々の課題は上の式のaとbの値を求めることだが、課題には目標が必要である。
我々は、できるだけ本当のYと、回帰直線の式が導き出すY^との差を小さいものにしたいと考えている。すなわちY-Y^の差を小さくすることが目標である。
しかしYとY^はどちらかが大きかったり小さかったりするので、Y-Y^の値もプラスになったりマイナスになったりするだろう。Y-Y^の差をトータルに小さくするためには、個々の差をすべて足し合わせたものを最小化すればいいが、Y-Y^のままでは足しあわすとプラスの差とマイナスの差が打ち消しあって不都合である。こういうときは二乗したものを足し合わせ、それを最小化するのを目標とすればいい。。平均値が、それぞれの値との差の二乗和を最小にするものだったことを思い出そう。そう平均値でやったあの経験が役に立つ時が来たのである。
本当のYi(i=1~n)とYi^=a+bXiの差は
Yi-Yi^=Yi-(a+bXi)
=Yi-a-bXi
したがって最小化すべき二乗和は
Q=Σ(Yi-Yi^)^2
=Σ(yi-a-bxi)^2
となる。
表示オプション
横に並べて表示:
変化行の前後のみ表示: