回帰分析の理解まとめ 〜 単回帰分析 〜

回帰分析とは?

ある目的変数  y と説明変数  xの関係性を明らかにする統計手法です。
単回帰、重回帰、ロジスティック回帰、主成分回帰、部分的最小二乗回帰などさまざまな種類があります。
この記事では単回帰分析に関してまとめてみます。

単回帰分析とは?

ある目的変数  y を一つの説明変数  xで表す式を求めることです。
例えば、身長と体重の関係。年齢と年収の関係などが、下記の式で近似できると仮定した時に、最適なパラメータ  a ,  b を求めます。
 \begin{eqnarray} \\
y = ax + b
\end{eqnarray} \\

最適なパラメータとは?

最適」とはどんなものになるでしょうか?

下のようなデータを考えてみます。

このデータに対して
 y = ax + bにおける  a ,  b をそれぞれ変えると下記の通りさまざまな直線を書くことができます。

直感的にどの a ,  b による直線が一番観測されたデータと近いでしょうか?

それぞれ直線がどのくらい観測データに近しいかを表す関数を評価関数と呼びます。

評価関数

評価関数として二乗誤差というものがよく使われます。
 i番目の観測値  x_i に対する  y_i と、あるパラメータ a ,  b によって表される推定値  \hat{y}_i ( = ax_i + b) の差分  y_i - \hat{y}_i の二乗を全ての  x において計算し総和を求めます。

 Nを観測されたデータの個数とすると下記の式で表されます

 
\begin{eqnarray} \\
\mathcal{L}(a, b) &=& \sum_{i=1}^{N}{ (y_{i} - \hat{y_{i}})^2 } \\
&=& \sum_{i=1}^{N}{ (y_{i} - (ax_{i} + b))^2 }  \\
\end{eqnarray}

この二乗誤差の総和を評価関数とすると、評価関数の値がより小さければ観測データをよく表しているように見えます。
よって評価関数の値をより小さくするようなパラメータ  a,  b を見つけてみます。

評価関数が最小値をとるパラメータを探す

評価関数の値が最小になる点は微分を用いることで、見つけることができます。

今回は評価関数を二乗誤差の総和としているので、下記を満たすパラメータ a,  bを求めれば良いことになります。

\begin{eqnarray} \\
\frac{\partial}{\partial a}{ \sum_{i=1}^{N}{ (y_{i} - (ax_{i} + b))^2 } } = 0 \\
\frac{\partial}{\partial b}{ \sum_{i=1}^{N}{ (y_{i} - (ax_{i} + b))^2 } } = 0 \\
\end{eqnarray}

パラメータ  b の導出


\begin{eqnarray} \\
\frac{\partial}{\partial a}{ \sum_{i=1}^{N}{ (y_{i} - (ax_{i} + b))^2 } } &=& -2\sum_{i=1}^{N}{ (y_{i} - (ax_{i} + b)) }  \\
&=& 2\sum_{i=1}^{N}{ (b) } -2\sum_{i=1}^{N}{ (y_{i} - ax_{i}) }  \\
&=& 2Nb -2\sum_{i=1}^{N}{ (y_{i} - ax_{i}) }  \\
\end{eqnarray}
つまり

\begin{eqnarray} \\
2Nb -2\sum_{i=1}^{N}{ (y_{i} - ax_{i}) }  = 0 \\
=> b &=& \frac{ \sum_{i=1}^{N}{ (y_{i} - ax_{i}) } }{ N }
\end{eqnarray}

ここで、 \frac{ \sum_{i=1}^{N}{ y_i } }{ N } \frac{ \sum_{i=1}^{N}{ x_i } }{ N }はそれぞれ観測データの y xの平均となるので、それぞれを \bar{ y },  \bar{ x }と表すと

\begin{eqnarray} \\
b &=& \bar{ y } - a\bar{ x }
\end{eqnarray} \\

パラメータ  a の導出


\begin{eqnarray} \\
\frac{\partial}{\partial a}{ \sum_{i=1}^{N}{ (y_{i} - (ax_{i} + b))^2 } } &=& \frac{\partial}{\partial a}{ \sum_{i=1}^{N}{ (y_{i} - (ax_{i} + \bar{ y } - a\bar{ x }))^2 } } \\
&=& \frac{\partial}{\partial a}{ \sum_{i=1}^{N}{ (y_{i} - \bar{ y } - a(x_{i} - \bar{ x }))^2 } } \\
&=& \sum_{i=1}^{N}{ (x_{i} - \bar{ x })(y_{i} - \bar{ y } - a(x_{i} - \bar{ x })) } \\
&=& \sum_{i=1}^{N}{ (x_{i} - \bar{ x })(y_{i} - \bar{ y }) }  - a \sum_{i=1}^{N}{ (x_{i} - \bar{ x }))^2 } 
\end{eqnarray}
つまり

\begin{eqnarray} \\
\sum_{i=1}^{N}{ (x_{i} - \bar{ x })(y_{i} - \bar{ y }) }  - a \sum_{i=1}^{N}{ (x_{i} - \bar{ x }))^2 }  = 0 \\
=> a = \frac{ \sum_{i=1}^{N}{ (x_{i} - \bar{ x })(y_{i} - \bar{ y }) } }{ \sum_{i=1}^{N}{ (x_{i} - \bar{ x })^2 } }
\end{eqnarray}
 a を観測データのみで求めることができることがわかります。
なお、 y_{i} - \bar{ y },  x_{i} - \bar{ x } は、観測データを中心化したデータであり、 \tilde{ y_i } = y_{i} - \bar{ y },  \tilde{ x_i } = x_{i} - \bar{ x }と表すと下記の関係になります。


実際に求めてみる

パラメータの算出方法がわかったところで、実際のデータを使って求めてみます。

以下がサンプルデータの一部です。

 x  y  \tilde{x}  \tilde{y}
0 45.010787 -24.5 -102.428666
1 62.315182 -23.5 -85.124271
2 66.829897 -22.5 -80.609556
・・・ ・・・ ・・・ ・・・
47 245.844440 22.5 98.404987
48 238.553507 23.5 91.114054
49 246.184165 24.5 98.744713


\begin{eqnarray} \\
a &=& \frac{ 
(-24.5 * -102.428666) + ... + (24.5 * 98.744713)
}{
  (-24.5)^2 + ... + (24.5)^2
}  \\
&=& 3.8460887159267987
\end{eqnarray}
なお、

\bar{x} = 24.5, \bar{y} = 147.4394527007682
なので、

\begin{eqnarray} \\
b &=& \bar{ y } - a\bar{ x } \\
&=& 53.21027916056161
\end{eqnarray} \\

これらの a,  bを用いた直線を表してみると下記になります。

実際に観測されたデータに近しい直線で引けており、 x,  yの表すことができました。

まとめ

  • 単回帰分析は目的変数  y を一つの説明変数  xで表す式を求めること
  • 最適な直線は観測データと直線の差を表す評価関数を最小にするようなパラメータを見つけることで求められる

今回は回帰分析のうち、単回帰分析に関して概要からパラメータの求め方までをまとめてみました。
次回は重回帰分析に関してまとめてみようと思います。