どうもフジワラです。
今日は単回帰分析をめっちゃわかりやすく解説しようと思います。
単回帰分析って何?
単回帰分析っていうのは、データの集まりxとデータの集まりyがあるとすると、
これらの関係がy=ax+bの形で表せるのではいかと考えて、係数のaと切片のbを求めようぜっていうやつです。
これだとちょっとわかりにくいので、具体例で行くと、
土地の面積と値段のデータが
面積 (平方メートル) | 値段 (万円) |
---|---|
10 | 30 |
21 | 59 |
66 | 190 |
30 | 95 |
46 | 140 |
こういう感じで得られたとします。
この表を見ると、大体、値段=面積×3 くらいの値になっていますよね?
この 値段=面積×3っていうのを数学的に求めるのが単回帰分析です。
実際のやり方
実際にやっていくよ!
まずは解析モデルをつくる!
まず、
$$ y_i = \beta_0 + \beta_1x_i + \epsilon_i , \epsilon_i~N(0,\sigma^2)$$
という式を考えます。ここで、\(y_i\)は上の具体例でいう値段、\(x_i\)は面積のi番目の値と考えてください。(逆でも可)
そして、\(\beta_0 , \beta_1\)は回帰母数といって、y=ax+bのbとaだと思ってください。
そして、\(\epsilon_i\)はそれぞれのデータを計測したときにおこる誤差です。
上の具体例でいうと、値段は土地の面積で決まるけど、決める人によって、値段のつけ方が違うよねっていうことです。
ですが、
\(\beta_0 , \beta_1\)の値を完璧に求めることができません。
なんで?
\(\epsilon_i\)っていう毎計測ごとに変わる誤差があって、しかも、誤差の大体の範囲はわかるけど、どの値が来るかまではわからないからです。
そこで、
$$\hat{y_i} = \hat{\beta_0} +\hat{\beta_1}x_i $$
という風に求めたい直線を置きます。
ここで、\(\hat{\beta_0} , \hat{\beta_1}\)は、\(\beta_0 , \beta_1\)の推定値です。
\(\epsilon_i\)を加味した式を考えようぜってことです。
実際に回帰係数を求めていく。
単回帰分析だと、実験とかをやった人は知ってるかもしれない最小二乗法を用いて回帰係数を求めます。
こういった感じで、各点から直線までの距離が一番小さくなるような線を引くのが最小二乗法です。
残差\(e_i\)を求める
まず初めに、実際の値の\(y_i\)と推定した値の\(\hat{y_i}\)の残差を求めます。
残差っていうのは、
これです。実際の値-予測の値で求めることができます。
残差を、\(e_i\)と置くと、\(e_i\)は、
$$e_i=y_i – \hat{y_i} = y_i-(\hat{\beta_0} + \hat{\beta_1}x_i) $$
で表せます。
それで、この残差が一番小さくなるような\(\hat{\beta_0} ,\hat{\beta_1}\)を求めるんですが、
ここで、残差の平方和を取ります。残差平方和を\(S_e\)とすると、
$$S_e = \sum_{i=1}^{n}e_i^2 = \sum_{i=1}^{n} \{y_i-(\hat{\beta_0} + \hat{\beta_1}x_i)\}^2 $$
で表せます。
この\(S_e\)を最小にする\(\hat{\beta_0} ,\hat{\beta_1}\)を求めていきます。
これが、大まかな単回帰分析の流れです。
\(S_e\)の最小値を求める
\(\hat{\beta_0} , \hat{\beta_1}\)を求めていくよ!
では、\(S_e\)を最小にする、\(\hat{\beta_0} ,\hat{\beta_1}\)を求めていきましょう。
どうやって求めるのかというと、\(S_e\)を\(\hat{\beta_0} ,\hat{\beta_1}\)でそれぞれ偏微分します。
偏微分すると、
$$\frac{\partial S_e}{\partial \hat{\beta_0}} = -2\sum_{i=1}^{n}(y_i-\hat{\beta_0} – \hat{\beta_1}x_i) = 0$$
$$\frac{\partial S_e}{\partial \hat{\beta_1}} = -2\sum_{i=1}^{n}x_i(y_i-\hat{\beta_0} – \hat{\beta_1}x_i) = 0$$
という風になります。
この上の二つの式は、
$$\hat{\beta_0}n + \hat{\beta_1}\sum_{i=0}^{n}x_i = \sum_{i=0}^{n}y_i$$
$$\hat{\beta_0}\sum_{i=0}^{n}x_i + \hat{\beta_1}x_i^2 = \sum_{i=0}^{n}x_iy_i$$
という風に変形できて、
一個めの\(\hat{\beta_0}n + \hat{\beta_1}\sum_{i=0}^{n}x_i = \sum_{i=0}^{n}y_i\)から、
という、\(\hat{\beta_0}\)を求めることができます。
\(\hat{\beta_0}\)を求めることができたので、これを二個目の式の
$$\hat{\beta_0}\sum_{i=0}^{n}x_i + \hat{\beta_1}x_i^2 = \sum_{i=0}^{n}x_iy_i$$
に代入すると、
$$(\frac{\sum_{i=0}^{n}y_i}{n} – \hat{\beta_1}\frac{\sum_{i=0}^{n}y_i}{n})\sum_{i=0}^{n}x_i + \hat{\beta_1}x_i^2$$$$ = \sum_{i=0}^{n}x_iy_i$$
となって、これを\(\hat{\beta_1}\)についてまとめれば、
という風にできます。
ここでちょっと工夫
上の式で\(\hat{\beta_0} , \hat{\beta_1} \)が出たからこれでいいんじゃない?
上の式だけでもう\(\hat{\beta_0} , \hat{\beta_1}\)が求められます。
が、
\(\sum……\)とか覚えにくいですよね。
そこで、xの平方和と、xとyの偏差積和を考えます。
xの平方和\(S_{xx}\)は、
xとyの偏差積和\(s_{xy}\)は、
まとめ
まとめ
こうやって、推定式\(\hat{y}\)は、
と表せることがわかりますね!
まとめると、
です。
覚えなくても、導出の流れを覚えておけば簡単に出すことができます。
こちらの本がわかりやすくてお勧めです。