単回帰モデル(最小二乗法)
第1章 1-11 では、回帰直線の傾き $\hat{\beta}=\dfrac{S_{xy}}{S_{xx}}$、切片 $\hat{\alpha}=\bar{y}-\hat{\beta}\bar{x}$ を結論だけ提示し、「導出は第5章でじっくり」と予告しました。本ページがその回収編です。
主役は最小二乗法。残差を二乗して足し合わせた量(残差平方和)を、傾きと切片で偏微分して $0$ とおくと、正規方程式という連立方程式が現れます。これを解くだけで、あの公式がきれいに出てきます。本講座屈指の山場ですが、やることは「2変数関数の最小化」というシンプルな話。1ステップずつ追えば、必ず自分の手で再現できます。
1-11で「あとで証明するね!」って約束した公式、ついに回収だよ。やることは「残差二乗和を小さくする傾きと切片を探す」だけ。山の谷底を探すのに微分を使う、っていういつものパターンだから、身構えなくて大丈夫!
1. 単回帰モデル ─ 「直線+ずれ」でデータを表す
まずデータの背後にある仕組み(モデル)を式で書きます。説明変数 $x$ から目的変数 $y$ を予測したいのでした。ところが現実のデータは、きれいに1本の直線には乗りません。だから「本当は直線関係だが、各点には観測ごとのズレがある」と考えます。これを式にしたのが単回帰モデルです。
$i$ 番目のデータ $(x_i,\,y_i)$ について、 $$y_i = \alpha + \beta x_i + \varepsilon_i \qquad (i=1,2,\dots,n)$$ $\alpha$ は切片、$\beta$ は傾き(回帰係数)で、これらは真の値が決まっているが未知の定数(母数)です。$\varepsilon_i$ は誤差項と呼ばれ、直線では説明しきれない第 $i$ 点のズレを表します。
ここで記号の役割を整理しておきましょう。規格書どおり、母数はギリシャ文字 $\alpha,\,\beta$ で、データから推定した値にはハットをつけて $\hat{\alpha},\,\hat{\beta}$ と書き分けます。$\alpha,\,\beta$ は神様だけが知っている真の直線の係数で、私たちにできるのは手元のデータからその推定値 $\hat{\alpha},\,\hat{\beta}$ を求めることだけ。求めた直線による予測値は $$\hat{y}_i = \hat{\alpha} + \hat{\beta} x_i$$ と書きます。観測値 $y_i$ ではなく予測値なので、$y$ にもハットがつく、というわけです。
なにを「いちばん良い直線」とするか
直線はいくらでも引けます。そのなかから1本を選ぶ基準が要る──ここで登場するのが、第 $i$ 点での観測値と予測値のズレ、残差 $e_i = y_i - \hat{y}_i$ です。
(誤差 $\varepsilon_i$ は真の直線からのズレ、残差 $e_i$ は推定した直線からのズレで、別物です。$\varepsilon_i$ は観測できませんが、$e_i$ はデータと求めた直線から計算できます。混同しやすいので注意しましょう。)
2. 最小二乗法 ─ 残差平方和を最小にする
残差 $e_i$ には、プラス(点が直線より上)もマイナス(下)もあります。そのまま足すと打ち消し合ってしまうので、二乗してから合計します。この量を残差平方和(residual sum of squares)といい、傾きの候補 $b$ と切片の候補 $a$ の関数として $S(a,\,b)$ と書きます。
$$S(a,\,b) = \sum_{i=1}^{n}\bigl(y_i - a - b x_i\bigr)^2$$ 各点について「観測値 $y_i$ から、直線の予測値 $a + b x_i$ を引いたズレ」を二乗し、$n$ 点ぶん足し合わせた量です。
この $S(a,\,b)$ をいちばん小さくする $a,\,b$ を、最良の推定値 $\hat{\alpha},\,\hat{\beta}$ と定める──これが最小二乗法(least squares method)です。直線から大きく外れた点ほど、二乗で重いペナルティを受けます。だから結果として、特定の点に肩入れせずみんなにそこそこ近い直線が選ばれます。
(ここで $a,\,b$ を「候補」、$\hat{\alpha},\,\hat{\beta}$ を「最小化を達成した値」として区別しています。$S$ を動かす変数は $a,\,b$ で、データ $x_i,\,y_i$ は固定された定数です。)
なぜ微分なのか
$S(a,\,b)$ は $a,\,b$ について、二乗の和なので下に開いたお椀のような形(2次関数)をしています。お椀のいちばん底では、どの向きに動いても傾きが $0$。つまり $a$ で微分しても $b$ で微分しても $0$ になる点が、最小値を与える $\hat{\alpha},\,\hat{\beta}$ です。山の谷底を「接線の傾きが水平になる場所」として探す、おなじみの作戦ですね。これを2変数に広げ、$a$ と $b$ それぞれで偏微分して $0$ とおきます。
3. 偏微分して $0$ とおく ─ 正規方程式の導出(★)
ここが山場です。$S(a,\,b)$ を $a$ で偏微分($b$ を定数とみて微分)、続いて $b$ で偏微分($a$ を定数とみて微分)し、それぞれ $0$ とおきます。合成関数の微分(チェインルール)を使うので、いちばん外側の二乗を下ろし、中身 $\,y_i - a - b x_i\,$ を $a$ または $b$ で微分した分を掛けます。
$a$ での偏微分
$$ \begin{aligned} \frac{\partial S}{\partial a} &= \sum_{i=1}^{n} 2\bigl(y_i - a - b x_i\bigr)\cdot(-1) &&\text{(二乗を下ろし、中身を } a \text{ で微分すると } -1\text{)}\\[2pt] &= -2\sum_{i=1}^{n}\bigl(y_i - a - b x_i\bigr) &&\text{(定数 } -2 \text{ を } \textstyle\sum \text{ の外へ)} \end{aligned} $$ これを $0$ とおくと、両辺を $-2$ で割って $$\sum_{i=1}^{n}\bigl(y_i - a - b x_i\bigr) = 0$$
$b$ での偏微分
$$ \begin{aligned} \frac{\partial S}{\partial b} &= \sum_{i=1}^{n} 2\bigl(y_i - a - b x_i\bigr)\cdot(-x_i) &&\text{(二乗を下ろし、中身を } b \text{ で微分すると } -x_i\text{)}\\[2pt] &= -2\sum_{i=1}^{n} x_i\bigl(y_i - a - b x_i\bigr) &&\text{(定数 } -2 \text{ を } \textstyle\sum \text{ の外へ)} \end{aligned} $$ これを $0$ とおくと、両辺を $-2$ で割って $$\sum_{i=1}^{n} x_i\bigl(y_i - a - b x_i\bigr) = 0$$
カッコを展開して整理する
この2本の式の和を、$a,\,b$ について整理します。まず $a$ の式($\partial S/\partial a = 0$ から得た式)を展開します。
$$ \begin{aligned} \sum_{i=1}^{n}\bigl(y_i - a - b x_i\bigr) &= 0 &&\text{(上で得た式)}\\[2pt] \sum_{i=1}^{n} y_i - \sum_{i=1}^{n} a - b\sum_{i=1}^{n} x_i &= 0 &&\text{(項ごとに } \textstyle\sum \text{ を分ける)}\\[2pt] \sum_{i=1}^{n} y_i - n a - b\sum_{i=1}^{n} x_i &= 0 &&\Bigl(\textstyle\sum_{i=1}^{n} a = n a\Bigr)\\[2pt] \sum_{i=1}^{n} y_i &= n a + b\sum_{i=1}^{n} x_i &&\text{(移項して整理)} \end{aligned} $$
同じことを $b$ の式($\partial S/\partial b = 0$ から得た式)でも行います。各項に $x_i$ が掛かっている点に注意してください。
$$ \begin{aligned} \sum_{i=1}^{n} x_i\bigl(y_i - a - b x_i\bigr) &= 0 &&\text{(上で得た式)}\\[2pt] \sum_{i=1}^{n}\bigl(x_i y_i - a x_i - b x_i^2\bigr) &= 0 &&\text{(カッコ内に } x_i \text{ を分配)}\\[2pt] \sum_{i=1}^{n} x_i y_i - a\sum_{i=1}^{n} x_i - b\sum_{i=1}^{n} x_i^2 &= 0 &&\text{(項ごとに } \textstyle\sum \text{ を分け、定数を外へ)}\\[2pt] \sum_{i=1}^{n} x_i y_i &= a\sum_{i=1}^{n} x_i + b\sum_{i=1}^{n} x_i^2 &&\text{(移項して整理)} \end{aligned} $$
この2本がそろって、最小二乗法の正規方程式(normal equations)です。$\hat{\alpha},\,\hat{\beta}$ が満たすべき連立方程式で、未知数は $a,\,b$(解いた値が $\hat{\alpha},\,\hat{\beta}$)、それ以外の $\sum y_i,\,\sum x_i,\,\sum x_i y_i,\,\sum x_i^2$ はすべてデータから計算できる既知の数です。
正規方程式 $$ \begin{aligned} \sum_{i=1}^{n} y_i &= n\,a + b\sum_{i=1}^{n} x_i \\[4pt] \sum_{i=1}^{n} x_i y_i &= a\sum_{i=1}^{n} x_i + b\sum_{i=1}^{n} x_i^2 \end{aligned} $$ $a,\,b$ についての連立1次方程式です。これを解いた解が、最小二乗推定値 $\hat{\alpha},\,\hat{\beta}$ になります。
4. 正規方程式を解く ─ 傾きと切片の公式(★)
連立方程式を解きます。まず1本目を $n$ で割ると、見慣れた関係が顔を出します。
1本目 $\;\sum y_i = n a + b\sum x_i\;$ の両辺を $n$ で割ると、 $$ \begin{aligned} \frac{1}{n}\sum_{i=1}^{n} y_i &= a + b\cdot\frac{1}{n}\sum_{i=1}^{n} x_i &&\text{(両辺を } n \text{ で割る)}\\[2pt] \bar{y} &= a + b\,\bar{x} &&\Bigl(\bar{x}=\tfrac{1}{n}\textstyle\sum x_i,\ \bar{y}=\tfrac{1}{n}\textstyle\sum y_i\Bigr) \end{aligned} $$ これを $a$ について解くと、切片の式が得られます。 $$\hat{\alpha} = \bar{y} - \hat{\beta}\,\bar{x}$$
$\bar{y} = \hat{\alpha} + \hat{\beta}\bar{x}$ は、「$x=\bar{x}$ を代入すると $\hat{y}=\bar{y}$」という意味そのもの。つまり回帰直線は必ずデータの重心 $(\bar{x},\,\bar{y})$ を通ります。これは正規方程式の1本目($a$ での偏微分=残差の合計が $0$)から自動的に出てくる性質で、1-11 で予告したとおりです。
次に傾き $\hat{\beta}$ を出します。いま得た $a = \bar{y} - b\bar{x}$ を2本目に代入して、$b$ だけの式にします。ここからは推定値として $\hat{\beta}$ と書きます。
$$ \begin{aligned} \sum x_i y_i &= a\sum x_i + b\sum x_i^2 &&\text{(正規方程式の2本目)}\\[2pt] \sum x_i y_i &= (\bar{y}-b\bar{x})\sum x_i + b\sum x_i^2 &&\text{(} a=\bar{y}-b\bar{x} \text{ を代入)}\\[2pt] \sum x_i y_i &= \bar{y}\sum x_i - b\,\bar{x}\sum x_i + b\sum x_i^2 &&\text{(カッコを展開)}\\[2pt] \sum x_i y_i - \bar{y}\sum x_i &= b\Bigl(\sum x_i^2 - \bar{x}\sum x_i\Bigr) &&\text{(} b \text{ の項を右に集めてくくる)}\\[2pt] b &= \frac{\sum x_i y_i - \bar{y}\sum x_i}{\sum x_i^2 - \bar{x}\sum x_i} &&\text{(} b \text{ について解く)} \end{aligned} $$ (和の上下限 $\textstyle\sum_{i=1}^{n}$ は紙幅の都合で略記しました。)
これで答えは出ましたが、このままでは意味が読み取りにくい形です。そこで分子・分母を偏差の形に書き直します。鍵になるのは、平均を使った次の2つの恒等式です。
分子($\sum x_i = n\bar{x}$ を使う): $$\sum_{i=1}^{n} x_i y_i - \bar{y}\sum_{i=1}^{n} x_i = \sum_{i=1}^{n} x_i y_i - n\bar{x}\bar{y} = \sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})$$ 分母(同じく $\sum x_i = n\bar{x}$ を使う): $$\sum_{i=1}^{n} x_i^2 - \bar{x}\sum_{i=1}^{n} x_i = \sum_{i=1}^{n} x_i^2 - n\bar{x}^2 = \sum_{i=1}^{n}(x_i-\bar{x})^2$$
(右端の等号は、偏差積和・偏差平方和の展開公式です。たとえば $\sum(x_i-\bar{x})(y_i-\bar{y}) = \sum x_i y_i - \bar{y}\sum x_i - \bar{x}\sum y_i + n\bar{x}\bar{y}$ を整理すると、$\sum x_i = n\bar{x}$、$\sum y_i = n\bar{y}$ より中央2項がまとまり、$\sum x_i y_i - n\bar{x}\bar{y}$ になります。分母も同様です。)
ここで、偏差積和を $S_{xy}$、$x$ の偏差平方和を $S_{xx}$ と書きます。すると傾きは次のすっきりした形になります。
最小二乗推定値 $$\hat{\beta} = \frac{S_{xy}}{S_{xx}} = \frac{\displaystyle\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{\displaystyle\sum_{i=1}^{n}(x_i-\bar{x})^2}, \qquad \hat{\alpha} = \bar{y} - \hat{\beta}\,\bar{x}$$ ここで $S_{xy}=\sum(x_i-\bar{x})(y_i-\bar{y})$(偏差積和)、$S_{xx}=\sum(x_i-\bar{x})^2$($x$ の偏差平方和)です。
1-11 で「結論だけ」示した $b=\dfrac{s_{xy}}{s_x^2}$ と、この $\hat{\beta}=\dfrac{S_{xy}}{S_{xx}}$ は同じものです。共分散 $s_{xy}=\dfrac{S_{xy}}{n-1}$、分散 $s_x^2=\dfrac{S_{xx}}{n-1}$ なので、比をとると $n-1$ が約分で消え、$\dfrac{s_{xy}}{s_x^2}=\dfrac{S_{xy}}{S_{xx}}$。さらに $s_{xy}=r\,s_x s_y$ を使えば $\hat{\beta}=r\dfrac{s_y}{s_x}$ にもなります。$\hat{\beta}$ の符号が相関係数 $r$ と一致するのも、分母 $S_{xx}$ が必ず正だからです。約束どおり、公式を完全に回収できました。
導出の流れはたった3ステップ。①残差二乗和 $S(a,b)$ を作る → ②$a,b$ で偏微分して $0$(=正規方程式)→ ③連立を解く。$a$ の式から「重心を通る」、$b$ の式から「傾き=偏差積和÷偏差平方和」が出るの。この対応を覚えておくと、試験で式が飛んでも自分で復元できるよ!
5. 残差をイメージする ─ 散布図と縦線
最小二乗法が最小化したのは、各点から回帰直線へ真上・真下に下ろした縦線(残差 $e_i = y_i - \hat{y}_i$)の長さの二乗の合計です。次の図では、その残差を点線の縦線で示しました。$x$ 方向の距離でも、点から直線への垂直距離でもなく、あくまで $y$ 方向のズレを最小化している点がポイントです。
散布図と残差 ─ 各点から回帰直線へ下ろした縦線(点線)が残差 $e_i=y_i-\hat{y}_i$。その二乗和を最小にするのが最小二乗法
6. 数値例 ─ 正規方程式を実際に解く
第1章 1-9・1-11 と同じ、5人の「勉強時間 $x$」と「点数 $y$」のデータで、正規方程式を立てて解いてみます。
| 生徒 | $x_i$ | $y_i$ | $x_i y_i$ | $x_i^2$ |
|---|---|---|---|---|
| A | 1 | 35 | 35 | 1 |
| B | 2 | 55 | 110 | 4 |
| C | 3 | 60 | 180 | 9 |
| D | 4 | 75 | 300 | 16 |
| E | 5 | 80 | 400 | 25 |
| 合計 | $\sum x_i=15$ | $\sum y_i=305$ | $\sum x_i y_i=1025$ | $\sum x_i^2=55$ |
$n=5$ と表の合計を正規方程式に代入します。 $$ \begin{aligned} 305 &= 5a + 15b \\ 1025 &= 15a + 55b \end{aligned} $$ 1本目を $5$ で割ると $61 = a + 3b$、すなわち $a = 61 - 3b$。これを2本目に代入して、 $$ \begin{aligned} 1025 &= 15(61 - 3b) + 55b \\ &= 915 - 45b + 55b \\ &= 915 + 10b \end{aligned} $$ よって $10b = 110$ から $\hat{\beta} = 11$。これを $a = 61 - 3b$ に戻して $\hat{\alpha} = 61 - 3\times 11 = 28$。
回帰直線は $\hat{y} = 28 + 11x$。傾き・切片とも、1-11 で公式から出した値とぴったり一致します。
1-9 で求めた偏差和 $S_{xy}=\sum(x_i-\bar{x})(y_i-\bar{y})=110$、$S_{xx}=\sum(x_i-\bar{x})^2=10$ を使うと、 $$\hat{\beta} = \frac{S_{xy}}{S_{xx}} = \frac{110}{10} = 11, \qquad \hat{\alpha} = \bar{y} - \hat{\beta}\bar{x} = 61 - 11\times 3 = 28$$ 正規方程式を解いた結果と完全に一致しました。重心 $(\bar{x},\bar{y})=(3,\,61)$ を直線に代入すると $\hat{y}=28+11\times 3 = 61 = \bar{y}$ で、たしかに重心を通っています。
まとめ
第5章 5-1、ポイントを整理します。
- 単回帰モデル:$y_i = \alpha + \beta x_i + \varepsilon_i$。$\alpha,\beta$ は未知の母数、$\varepsilon_i$ は誤差項
- 最小二乗法:残差平方和 $S(a,b)=\sum_{i=1}^{n}(y_i - a - b x_i)^2$ を最小化する $a,b$ を $\hat{\alpha},\hat{\beta}$ とする
- 正規方程式:$a,b$ で偏微分して $0$ とおくと、$\sum y_i = na + b\sum x_i$、$\sum x_i y_i = a\sum x_i + b\sum x_i^2$
- 解:$\hat{\beta}=\dfrac{S_{xy}}{S_{xx}}=\dfrac{\sum(x_i-\bar{x})(y_i-\bar{y})}{\sum(x_i-\bar{x})^2}$、$\hat{\alpha}=\bar{y}-\hat{\beta}\bar{x}$
- 重心通過:$a$ の正規方程式から、回帰直線は必ず $(\bar{x},\bar{y})$ を通る
- 1-11 の回収:$\dfrac{S_{xy}}{S_{xx}}=\dfrac{s_{xy}}{s_x^2}=r\dfrac{s_y}{s_x}$($n-1$ は約分で消える)
次回 5-2 変動の分解・決定係数 では、求めた回帰直線が「どれくらいよく当てはまっているか」を測ります。全変動を「回帰で説明できた分」と「残差として残った分」に分解し、その比から決定係数 $R^2$ を作ります。今日求めた残差 $e_i$ が、さっそく主役として再登場しますよ。
正規方程式、自分の手でも解けたかな? $\hat{\beta}=11,\ \hat{\alpha}=28$、1-11の公式とちゃんと一致したね。「偏微分して $0$ → 連立を解く」が最小二乗法の心臓部だよ。一度自分のノートで $S(a,b)$ から再現しておくと、5-3以降がぐっとラクになるよ!