第5章 5-1 / 線形モデル分析

単回帰モデル(最小二乗法)

このページで学ぶこと

第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本の直線には乗りません。だから「本当は直線関係だが、各点には観測ごとのズレがある」と考えます。これを式にしたのが単回帰モデルです。

FORMULA

$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)$ と書きます。

FORMULA

$$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$ での偏微分

DERIVATION

$$ \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$ での偏微分

DERIVATION

$$ \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$ から得た式)を展開します。

DERIVATION

$$ \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$ が掛かっている点に注意してください。

DERIVATION

$$ \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$ はすべてデータから計算できる既知の数です。

FORMULA

正規方程式 $$ \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$ で割ると、見慣れた関係が顔を出します。

DERIVATION

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}$$

POINT

$\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}$ と書きます。

DERIVATION

$$ \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つの恒等式です。

DERIVATION

分子($\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}$ と書きます。すると傾きは次のすっきりした形になります。

FORMULA

最小二乗推定値 $$\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$ の偏差平方和)です。

POINT

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$ 方向のズレを最小化している点がポイントです。

勉強時間 x(時間)→ 点数 y(点)→ 1 2 3 4 5 残差 e ŷ = 28 + 11x

散布図と残差 ─ 各点から回帰直線へ下ろした縦線(点線)が残差 $e_i=y_i-\hat{y}_i$。その二乗和を最小にするのが最小二乗法

6. 数値例 ─ 正規方程式を実際に解く

第1章 1-91-11 と同じ、5人の「勉強時間 $x$」と「点数 $y$」のデータで、正規方程式を立てて解いてみます。

生徒$x_i$$y_i$$x_i y_i$$x_i^2$
A135351
B2551104
C3601809
D47530016
E58040025
合計$\sum x_i=15$$\sum y_i=305$$\sum x_i y_i=1025$$\sum x_i^2=55$
EXAMPLE(正規方程式を立てて解く)

$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 で公式から出した値とぴったり一致します。

EXAMPLE(偏差の公式でも確認)

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、ポイントを整理します。

次回 5-2 変動の分解・決定係数 では、求めた回帰直線が「どれくらいよく当てはまっているか」を測ります。全変動を「回帰で説明できた分」と「残差として残った分」に分解し、その比から決定係数 $R^2$ を作ります。今日求めた残差 $e_i$ が、さっそく主役として再登場しますよ。

さえちゃん
さえ

正規方程式、自分の手でも解けたかな? $\hat{\beta}=11,\ \hat{\alpha}=28$、1-11の公式とちゃんと一致したね。「偏微分して $0$ → 連立を解く」が最小二乗法の心臓部だよ。一度自分のノートで $S(a,b)$ から再現しておくと、5-3以降がぐっとラクになるよ!