回帰直線の意味と導出と求め方 – 途中式まで詳しく解説

ここでは、回帰直線の”意味”、”導出”、”使い方・求め方”を途中式を省略せずに、丁寧に解説しています。
自分が知りたいところから読み始めてくださいね。
このページが、あなたの回帰直線への理解と知識の向上に役に立てばうれしいです。
回帰直線の意味とは
まずは、回帰直線が何を表すものなのかを、ざっくりとイメージしておきましょう。
※「そんなことは知っているから、はやく式の導出方法を教えろ」という方は、「回帰直線の導出方法」からお読みください。また、「式の導出に興味はない、使い方を教えろ」という方は「回帰直線の使い方・求め方」まで移動をお願いします。
”回帰”というのは、Wikipediaによれば、
回帰(かいき)とは、一般にはもとの位置または状態に戻ること、あるいはそれを繰り返すこと。
とあります。
”元に戻す”という意味があるのですね。
回帰直線に興味を持ってこのページへたどり着いた人は、何かしらのデータを扱おうとしていると思います。
つまり、回帰直線とは、
あるデータを欲しいデータに戻すための直線
ということになります。
どうゆうことでしょうか?
これを理解するために、例題を使ってイメージしてみましょう。
例えば、以下のようなデータがあったとします。
年齢 | 貯金額(万円) |
---|---|
10 | 5 |
20 | 20 |
30 | 100 |
40 | 300 |
50 | 400 |
60 | 450 |
年齢と貯金額の関係を表していますね。※私が勝手に作ったものであり、実際のデータではありません
このデータを横軸に年齢、縦軸に貯金額をとってグラフを描くと、以下のようになります。
年齢が上がるにつれて、貯金額も増加していますね。
このデータの傾向を大体表す直線を適当に手で引いてみましょう。
すると、
だいたい、このような青い直線のようになりそうですね。
直線の式は、
$$y = ax +b$$
です。\(x\)は年齢で\(y\)は貯金額ですね。
ここでは、\(a\)と\(b\)は、
\begin{align}
a & = 10 \\
b & = -150
\end{align}
としましょう。※だいたいで適当に決めました。
よって、
$$y = 10x – 150$$
です。これが回帰直線です。
例えば、今、あなたはある人の貯金額を知りたかったとします。
しかし、貯金額はそう簡単に教えてくれるものではありません。
そこで、代わりに年齢を調べます。
すると、その人の年齢は35歳ということが分かりました。
年齢が分かると、上の回帰直線の\(x\)に\(35\)を代入して、
\begin{align}
y & = ax + b \\
& = 10 \times 35 – 150 \\
& = 200 \\
\end{align}
となり、「この人の貯金額はだいたい200万円だな」と分かるのです。
このように、本来知りたい値が分からないとき、その値と関係性が高そうな値から、欲しい値を推測するために回帰直線が使われるのです。
回帰の”元に戻す”という意味は、”本来欲しい値に戻す”というところからきているのですね。
スポンサーリンク
回帰直線の導出方法
では、回帰直線の導出方法を解説していきましょう。
回帰直線の式は、
$$y = ax + b$$
です。
なので、\(a\)と\(b\)さえ決まれば、回帰直線の式が求まります。
上の「回帰直線の意味」では、適当に\(a\)と\(b\)を決めましたが、もっときちんとした根拠をもってこれらの値を決めていきましょう。
では、どのように\(a\)と\(b\)を決めるかというと、
できるだけ、回帰直線と元データのズレ(誤差)が小さくなるように決める
のです。
以下のグラフをみてください。
これは、横軸に身長、縦軸に体重をプロットしたグラフです。
水色の線が回帰直線(\(y=ax+b\))です。
このとき、黒い両矢印(\(\leftrightarrow\))をデータと回帰直線のズレとします。
各データに座標をつけて、データと回帰直線のズレを表してみましょう。
上の図からわかるように、回帰直線とデータのズレは、
$$y_n – (ax_n + b), \quad n=1, 2, 3, \cdots$$
となることが分かります。\(n\)はデータの番号であり、元のデータ数だけあります。
このズレのことを誤差と言います。
まずは、誤差をすべて\(2\)乗しましょう。
$$\left\{ y_n – (ax_n + b) \right\}^2, \quad n=1, 2, 3, \cdots$$
そして、これらの誤差を全部足しましょう。
$$\left\{y_1-(ax_1+b)\right\}^2 + \left\{y_2-(ax_2+b)\right\}^2 + \left\{y_3-(ax_3+b)\right\}^2 + \cdots = \sum_{n=1}^{n_{max}} \left\{y_n-(ax_n+b)\right\}^2$$
\(n_{max}\)は対象としているデータ数です。
この\(\sum_{n=1}^{n_{max}} \left\{y_n-(ax_n+b)\right\}^2\)をデータと直線がどれだけズレているかという指標として定義します。
この値がもっとも小さくなるときが、データと直線のズレが一番小さく、もっとも適した直線であるとするのです。
これを、最小二乗法(さいしょうじじょうほう)と言います。
この誤差をそのまま足さずに、\(2\)乗してから足すのには理由があります。
例えば、以下のようなデータと回帰直線の関係をみてみましょう。
赤文字で、誤差を書いています。
\(2\)乗しない場合は、データが直線の下にあるときは負、上にあるときは正となります。
では、この場合にすべての誤差を足すと、
$$-20 + 100 – 80 = 0$$
となり、\(0\)となりますね。
誤差が\(0\)ということは、回帰直線はデータを完璧に表現しているいうことですが、グラフを見る限り、確実にズレはあります。
このように、データに対して回帰直線が上下どちらにズレているかという正負の情報を持ったままだと、誤差同士がお互いに打ち消しあって誤差が実際よりも小さく見えてしまうのです。
ここで見た誤差が\(0\)になるというのは、その極端な例でした。
よって、どちらにズレているかという正負の情報を無くすために、\(2\)乗するのです。
直線とデータのズレている距離だけが重要で、上にあろうが、下にあろうが符号は関係ないということですね。
では、
$$\text{誤差の二乗の合計} = \sum_{n=1}^{n_{max}} \left\{y_n-(ax_n+b)\right\}^2$$
を最小にする\(a\)と\(b\)を求めましょう。
まずは、この式を変形します。
\begin{align}
\sum_{n=1}^{n_{max}} \left\{y_n-(ax_n+b)\right\}^2 = \sum_{n=1}^{n_{max}} \left\{ x_n^2 a^2 + 2 x_n (b-y_n) a + (b-y_n)^2\right\}
\end{align}
この式は、\(a\)についての下に凸のグラフになっていることがわかります。
※下に凸になるのは、\(a\)の係数である\(x_n^2\)は必ず正だからです。
この誤差の二乗の合計を最小にするには、\(a\)で微分したときの傾きが\(0\)となる\(a\)の値を探せばよいですね。
上の式を\(a\)で微分しましょう。すると、
\begin{align}
\frac{\partial}{\partial a} \left\{ \sum_{n=1}^{n_{max}} \left\{ x_n^2 a^2 + 2 x_n (b-y_n) a + (b-y_n)^2\right\} \right\} & = \sum_{n=1}^{n_{max}} \left\{ 2x_n^2 + 2x_n (b-y_n) \right\} \\
& = 2a\sum_{n=1}^{n_{max}}x_n^2 + 2b\sum_{n=1}^{n_{max}}x_n – 2\sum_{n=1}^{n_{max}}x_n y_n
\end{align}
となります。
これが、\(0\)となるとき、誤差の二乗の合計が最小値となりますので、
\begin{align}
2a\sum_{n=1}^{n_{max}}x_n^2 + 2b\sum_{n=1}^{n_{max}}x_n – 2\sum_{n=1}^{n_{max}}x_n y_n = 0 \tag{1}
\end{align}
という式(1)ができます。
次に、\(b\)についても同様の操作を行いましょう。
\(b\)で微分した式は、
\begin{align}
\frac{\partial}{\partial b} \left\{ \sum_{n=1}^{n_{max}} \left\{ x_n^2 a^2 + 2 x_n (b-y_n) a + (b-y_n)^2\right\} \right\} & = \sum_{n=1}^{n_{max}} \left\{ 2b + 2(x_n a + y_n) \right\} \\
& = 2nb – 2\sum_{n=1}^{n_{max}} y_i + 2a\sum_{n=1}^{n_{max}}
\end{align}
となります。
これが、\(0\)となるとき、誤差の二乗の合計が最小値となりますので、
\begin{align}
2nb – 2\sum_{n=1}^{n_{max}} y_n + 2a\sum_{n=1}^{n_{max}} = 0 \tag{2}
\end{align}
という式(2)ができます。
これら式(1)と式(2)の連立方程式を解きます。
\begin{align}
2a\sum_{n=1}^{n_{max}}x_n^2 + 2b\sum_{n=1}^{n_{max}}x_n – 2\sum_{n=1}^{n_{max}}x_n y_n & = 0 \tag{1} \\
2nb – 2\sum_{n=1}^{n_{max}} y_i + 2a\sum_{n=1}^{n_{max}} & = 0 \tag{2}
\end{align}
まず、\(b\)について解きます。すると、
$$b = \frac{\sum_{n=1}^{n_{max}} y_n}{n_{max}} – a \frac{\sum_{n=1}^n x_n}{n_{max}}$$
となります。
ここで、
\begin{align}
\frac{\sum_{n=1}^{n_{max}} x_n}{n_{max}} \\
\frac{\sum_{n=1}^{n_{max}} y_n}{n_{max}}
\end{align}
はすべてデータの\(x_n\)や\(y_n\)について和をとり、そのデータ数で割っているので、”平均”を表しています。
よって、\(\overline{x}\)と\(\overline{y}\)をすべてのデータの\(x\)と\(y\)の平均だとすると、
\begin{align}
\overline{x} & = \frac{\sum_{n=1}^n x_n}{n_{max}} \\
\overline{y} & = \frac{\sum_{n=1}^n y_n}{n_{max}}
\end{align}
と表現できます。
したがって、\(b\)は
\begin{align}
b & = \frac{\sum_{n=1}^{n_{max}} y_n}{n_{max}} – a \frac{\sum_{n=1}^{n_{max}} x_n}{n_{max}} \\
& = \overline{y} – a \overline{x} \tag{3}
\end{align}
と書き直すことができます。
続いて、\(a\)についてです。
\(a\)について解くと、
\begin{align}
a = \frac{\frac{\sum_{n=1}^{n_{max}} x_n y_n}{n}-\overline{x} \overline{y}}{\frac{\sum_{n=1}^{n_{max}} x_n^2}{{n_{max}}}-\overline{x}^2}
\end{align}
となります。
ここで、
\begin{align}
\frac{\sum_{n=1}^{n_{max}} x_n^2}{n_{max}}-\overline{x}^2\text{ と }\frac{\sum_{n=1}^{n_{max}} x_n y_n}{n_{max}}-\overline{x} \overline{y}
\end{align}
を変形しましょう。
まずは、
$$\frac{\sum_{n=1}^{n_{max}} x_n^2}{n_{max}} – \overline{x}^2$$
からです。これは以下のように変形できます。
\begin{align}
\frac{\sum_{n=1}^{n_{max}} x_n^2}{n_{max}} – \overline{x}^2 & = \frac{\sum_{n=1}^{n_{max}} x_n^2}{n_{max}} – 2 \overline{x}^2 + \overline{x}^2 \\
& = \frac{\sum_{n=1}^{n_{max}} x_n^2}{n_{max}} – 2 \frac{\sum_{n=1}^{n_{max}} x_n}{n_{max}} \overline{x} + \overline{x}^2 \\
& = \frac{1}{n_{max}} \left( \sum_{n=1}^{n_{max}} x_n^2 – 2 \overline{x} \sum_{n=1}^{n_{max}} x_n + {n_{max}} \overline{x}^2 \right) \\
& = \frac{1}{n_{max}} \sum_{n=1}^{n_{max}} \left( x_n^2 – 2 \overline{x} x_n + n_{max} \overline{x}^2 \right) \\
& = \frac{1}{n_{max}} \sum_{n=1}^{n_{max}} \left( x_n – \overline{x} \right)^2
\end{align}
途中で、
\begin{align}
\overline{x} = \frac{\sum_{n=1}^{n_{max}} x_n}{n_{max}}
\end{align}
を使っています。
続いて、
$$\frac{\sum_{n=1}^{n_{max}} x_n y_n}{n_{max}}$$
です。導出方法は上とほとんど同じプロセスを踏めばできます。
\begin{align}
\frac{\sum_{n=1}^{n_{max}} x_n y_n}{n_{max}}-\overline{x} \overline{y} & = \frac{\sum_{n=1}^{n_{max}} x_n y_n}{n_{max}} – 2 \overline{x} \overline{y} + \overline{x} \overline{y} \\
& = \frac{1}{n_{max}} \left( \sum_{n=1}^{n_{max}} x_n y_n – 2{n_{max}} x_n y_n + {n_{max}} x_n y_n \right) \\
& = \frac{1}{n_{max}} \left( \sum_{n=1}^{n_{max}} x_n y_n – n_{max} \frac{\sum_{n=1}^{n_{max}} x_n}{n_{max}} \overline{y} – {n_{max}} \frac{\sum_{n=1}^{n_{max}} y_n}{n_{max}} \overline{x} + {n_{max}} \overline{x} \overline{y} \right) \\
& = \frac{1}{n_{max}} \sum_{n=1}^{n_{max}} \left( x_n y_n – \overline{y} x_n – \overline{x} y_n + \overline{x}\overline{y} \right) \\
& = \frac{1}{n_{max}} \sum_{n=1}^{n_{max}} \left\{ (x_n-\overline{x})(y_n-\overline{y}) \right\}
\end{align}
これも計算の中で、
\begin{align}
\overline{x} & = \frac{\sum_{n=1}^{n_{max}} x_n}{n_{max}} \\
\overline{y} & = \frac{\sum_{n=1}^{n_{max}} y_n}{n_{max}}
\end{align}
を使っています。
よって、これらを\(a\)の式に代入すると、
\begin{align}
a & = \frac{\frac{\sum_{n=1}^{n_{max}} x_n y_n}{n}-\overline{x} \overline{y}}{\frac{\sum_{n=1}^{n_{max}} x_n^2}{{n_max}}-\overline{x}^2} \\
& = \frac{\frac{1}{n_{max}} \sum_{n=1}^{n_{max}} \left\{ (x_n-\overline{x})(y_n-\overline{y}) \right\}}{\frac{1}{n_{max}} \sum_{n=1}^{n_{max}} \left( x_n – \overline{x} \right)^2} \\
& = \frac{\sum_{n=1}^{n_{max}} \left\{ (x_n-\overline{x})(y_n-\overline{y}) \right\}}{\sum_{n=1}^{n_{max}} \left( x_n – \overline{x} \right)^2} \tag{4}
\end{align}
と表すことができます。
\(a\)と\(b\)をまとめると、
\begin{align}
y & = ax + b \\
a & = \frac{\sum_{n=1}^{n_{max}} \left\{ (x_n-\overline{x})(y_n-\overline{y}) \right\}}{\sum_{n=1}^{n_{max}} \left( x_n – \overline{x} \right)^2} \\
b & = \overline{y} – a \overline{x}
\end{align}
となります。
これで、回帰直線の式の導出は終わりです。
回帰直線の使い方・求め方
最後に、求めた回帰直線の式を使ってみましょう。
もう一度、回帰直線の式を復習すると、
\begin{align}
y & = ax + b \\
a & = \frac{\sum_{n=1}^{n_{max}} \left\{ (x_n-\overline{x})(y_n-\overline{y}) \right\}}{\sum_{n=1}^{n_{max}} \left( x_n – \overline{x} \right)^2} \\
b & = \overline{y} – a \overline{x}
\end{align}
でしたね。
係数\(a\)と\(b\)を計算できれば回帰直線を導くことができます。
例題として、以下のデータを考えてみましょう。最初の年齢と貯金額のデータです。
年齢 | 貯金額(万円) |
---|---|
10 | 5 |
20 | 20 |
30 | 100 |
40 | 300 |
50 | 400 |
60 | 450 |
ここで、\(x\)が年齢、\(y\)が貯金額とします。
\(n\)は各データを表しているので、\(n_{max}\)はデータ数である\(6\)となります。
y=年齢 | x=貯金額(万円)(=x) |
---|---|
\(y_1=10\) | \(x_1=5\) |
\(y_2=20\) | \(x_2=20\) |
\(y_3=30\) | \(x_3=100\) |
\(y_4=40\) | \(x_4=300\) |
\(y_5=50\) | \(x_5=400\) |
\(y_6=60\) | \(x_6=450\) |
まずは、係数\(a\)を求めるために必要な、
$$(x_n – \overline{x}), \quad (y_n – \overline{y})$$
を求めましょう。
\(\overline{x}\)と\(\overline{y}\)は、すべての\(x_n\)と\(y_n\)の平均ですので、
\begin{align}
\overline{x} = \frac{10 + 20 + 30 + 40 + 50 +60}{6} = 35 \\
\overline{y} = \frac{5 + 20 + 100 + 300 + 400 +450}{6} = 212.5 \\
\end{align}
です。
よって、\((x_n – \overline{x})\)と\((y_n – \overline{y})\)は、
\((x_n – \overline{x})\) | \((y_n – \overline{y})\) |
---|---|
\(10-35=-25\) | \(5-212.5=-207.5\) |
\(20-35=-15\) | \(20-212.5=-192.5\) |
\(30-35=-5\) | \(100-212.5=-112.5\) |
\(40-35=5\) | \(300-212.5=87.5\) |
\(50-35=15\) | \(400-212.5=187.5\) |
\(60-35=25\) | \(450-212.5=237.5\) |
となります。
必要なのは、これらを掛けたものをすべて足したものである
$$\sum_{n=1}^{n_{max}} \left\{ (x_n-\overline{x})(y_n-\overline{y}) \right\}$$
ですので、これを計算しましょう。
\((x_n – \overline{x})\) | \((y_n – \overline{y})\) | \((x_n-\overline{x})(y_n-\overline{y})\) |
---|---|---|
\(-25\) | \(-207.5\) | \(5187.5\) |
\(-15\) | \(-192.5\) | \(2887.5\) |
\(-5\) | \(-112.5\) | \(562.5\) |
\(5\) | \(87.5\) | \(437.5\) |
\(15\) | \(187.5\) | \(2812.5\) |
\(25\) | \(237.5\) | \(5937.5\) |
合計=\(17825\) |
よって、
$$\sum_{n=1}^{n_{max}} \left\{ (x_n-\overline{x})(y_n-\overline{y}) \right\} = \(17825\)$$
となります。
次は、
$$\sum_{n=1}^{n_{max}} \left( x_n – \overline{x} \right)^2$$
です。
\((x_n – \overline{x})\) | \((x_n – \overline{x})\)^2 |
---|---|
\(-25\) | \(625\) |
\(-15\) | \(225\) |
\(-5\) | \(25\) |
\(5\) | \(25\) |
\(15\) | \(225\) |
\(25\) | \(625\) |
合計=\(1750\) |
よって、
$$\sum_{n=1}^{n_{max}} \left( x_n – \overline{x} \right)^2 = 1750$$
です。
これらを、\(a\)に代入しましょう。
\begin{align}
a & = \frac{\sum_{n=1}^{n_{max}} \left\{ (x_n-\overline{x})(y_n-\overline{y}) \right\}}{\sum_{n=1}^{n_{max}} \left( x_n – \overline{x} \right)^2} \\
& = \frac{17825}{1750} = 10.186
\end{align}
ですね。
次に、\(b\)ですが、これは\(a\)がわかれば簡単に求めることができます。
\begin{align}
b & = \overline{y} – a \overline{x} \\
& = 212.5 – 10.186 * 35 = -144
\end{align}
となります。
よって、回帰直線は、
$$y = 10.186 x – 144$$
となります。
この直線をデータと一緒にグラフに描いてみましょう。
なかなか良くデータを表現した回帰直線になっていますね。
スポンサーリンク
まとめ
- 回帰直線とは、2つのデータの関係をもっともズレ(誤差の二乗の合計)が小さくなるように、表現した直線のことである
- 回帰直線を導出するには、最小二乗法を使って、ズレがもっとも小さくなるような傾きと切片を決定する
- 回帰直線を使えるようになるには、練習あるのみ!エクセルなどを使って、1ステップずつ丁寧に進めていこう
ディスカッション
コメント一覧
まだ、コメントがありません