5 回帰直線

この節では、例、あるいは付録として、 1 節でも触れた回帰直線を求める最小問題を取り上げる。 まず、いくつかの用語、記号を紹介する。

何らかの 2 次元的なデータ $(x_j,y_j)$ ( $j=1,2,\ldots,N$) があるとし、 これに対して、$x_j$ の平均、$y_j$ の平均を $\bar{x}$, $\bar{y}$ と書く。

\begin{displaymath}
\bar{x}=\frac{1}{N}\sum_{j=1}^N x_j,\hspace{1zw}
\bar{y}=\frac{1}{N}\sum_{j=1}^N y_j
\end{displaymath}

一般に、$x_j^ky_j^l$ の平均を $\overline{x^ky^l}$ のように書くことにする。
\begin{displaymath}
\overline{x^ky^l}=\frac{1}{N}\sum_{j=1}^N x_j^ky_j^l
\end{displaymath}

また、各データの平均との差の積の和を以下のように書き、
\begin{displaymath}
S_{xx}=\sum_{j=1}^N(x_j-\bar{x})^2,\hspace{1zw}
S_{xy}=\su...
...)(y_j-\bar{y}),\hspace{1zw}
S_{yy}=\sum_{j=1}^N(y_j-\bar{y})^2\end{displaymath} (1)

平均の差を取らない、単なる積の和などを以下のように書く。
\begin{eqnarray*}&&
\sigma_{xx}=\sum_{j=1}^Nx_j^2\,(=N\overline{x^2}),\hspace{...
...(=N\bar{x}),\hspace{1zw}
\sigma_{y}=\sum_{j=1}^Nx_j\,(=N\bar{y})\end{eqnarray*}


この $S$ の形の和は、以下のように $\sigma$ を用いて表すことができる。
\begin{eqnarray*}S_{xx}
&=&
\sum_{j=1}^N(x_j^2-2x_j\bar{x}+\bar{x}^2)
=
\si...
...\sigma_{y},\\
S_{yy}
&=&
\sigma_{yy}-\frac{1}{N}\sigma_{y}^2\end{eqnarray*}


さて、2 次元データ $(x_j,y_j)$ に最も近い直線を求めるために、 それを $y=ax+b$ と置いて、 その直線とそのデータとの誤差 $y_j-(ax_j+b)$ の平方和を
\begin{displaymath}
E=E(a,b)=\sum_{j=1}^N\{y_j-(ax_j+b)\}^2
\end{displaymath}

として、これが最も小さくなるような $a$, $b$ を求める。 この $E$ の最小値を与える直線を 回帰直線 と呼ぶ。

まず、$E$ の最小値を考えるために、 $a$, $b$ に関する $E$ の停留点を求める。偏微分

$\displaystyle E_a$ $\textstyle =$ $\displaystyle \frac{\partial E}{\partial a}
=
\sum_{j=1}^N 2(y_j-ax_j-b)(-x_j)
=
-2\sigma_{xy}+2a\sigma_{xx}+2b\sigma_{x},$ (2)
$\displaystyle E_b$ $\textstyle =$ $\displaystyle \frac{\partial E}{\partial b}
=
\sum_{j=1}^N 2(y_j-ax_j-b)(-1)
=
-2\sigma_{y}+2a\sigma_{x}+2Nb$ (3)

により、停留点は、$a$, $b$ に関する連立方程式
\begin{displaymath}
\left\{\begin{array}{ll}
a\sigma_{xx}+b\sigma_{x} &= \sigma_{xy},\\
a\sigma_{x}+bN &= \sigma_{y}\end{array}\right.\end{displaymath}

を解けば求まる。 よって、 $N\sigma_{xx}-\sigma_{x}^2=NS_{xx}\neq 0$ のとき、$a$, $b$
\begin{displaymath}
a
=\frac{N\sigma_{xy}-\sigma_{x}\sigma_{y}}{N\sigma_{xx}-\...
...e{1zw}
b
=\frac{\sigma_{y}-a\sigma_{x}}{N}
=\bar{y}-a\bar{x}\end{displaymath} (4)

となる。よく知られているようにこれらが回帰直線を与える係数である。

ここで、$S_{xx}=0$ となるのは、すべての $x_j$$\bar{x}$ に等しい、 つまりすべての $x_j$ が同じ値である場合であるから、 そうでなければ $S_{xx}>0$ となる。 よって、通常のデータでは、$S_{xx}>0$ と考えることができ、 以下その状況で考える。

この場合、(2), (3) より

\begin{displaymath}
E_{aa}=2\sigma_{xx},\hspace{1zw}
E_{ab}=2\sigma_{x},\hspace{1zw}
E_{bb}=2N
\end{displaymath}

であり、$x_j$ がすべて等しいという状況でなければ $E_{aa}>0$ で、
\begin{displaymath}
E_{ab}^2-E_{aa}E_{bb}=4\sigma_{x}^2-4N\sigma_{xx}=-4NS_{xx}<0
\end{displaymath}

となるので、命題 1 より 2 変数関数 $E(a,b)$ は すべての $(a,b)$ に対して下に凸となる。 よって、$E$ は (4) の停留点で 確かに大域的に最小となることが言える。

なお、ついでに言うと、(4) の $a$ の計算も、 最初から $a=S_{xy}/S_{xx}$ より $S$ の定義式 (1) を 用いて計算している学生を見かけることがあるが、 むしろ (4) の最初にある $\sigma$ による表現式を用いて 計算する方が楽である。 それは、$S$ の定義を用いると、 ${x}$${y}$ を先に求めるためにまず全部のデータを一度走査する必要があり、 その後でもう一度全部のデータを走査する必要があるが、 $\sigma$ の値ならば、 各データに対する $x_jy_j$, $x_j^2$, $x_j$, $y_j$ の値の和を 計算していけばいいだけなので、データの走査は一度で済む。 つまり大量のデータに対しても、 こちらの方法を使えば逐次計算していくことができる。

竹野茂治@新潟工科大学
2008年12月14日