説明変数が2つの場合の回帰問題を解説します。 2変数くらいなら頑張って計算を書いてみようという気持ちにもなれます。説明変数が一般にm個ある場合の記事はこちら。
2変数重回帰分析のパラメーターの導出
回帰分析のモデルは以下の式で表されます。
$$ \begin{eqnarray}
y &=& \vec{\beta} \cdot \vec{x} \\
S &=& \ | \vec{y} – \vec{\beta} X \| ^2
\end{eqnarray}$$
ただし、データには1だけからなる列を追加して、\(\vec{x} = (1,x_1 , x_2 )\)となっています。Sを\( \vec{\beta} \)で微分して0と置くと、以下の連立方程式を得ます。
$$ \begin{eqnarray}
&\sum & ( y_i -(\beta _0 +x_{1i} \beta _1 +x_{2i} \beta _2 ) )=0 \\
&\sum &x_{1i} (y_i- (\beta _0 +x_{1i} \beta _1 +x_{2i} \beta _2 ) )=0\\
&\sum& x_{2i} (y_i- (\beta _0 +x_{1i} \beta _1 +x_{2i} \beta _2 ) )=0
\end{eqnarray}$$
[mathjax]\( \beta _0\)については以下のように解いておきます。
[mathjax]$$ \begin{eqnarray}
– \beta _0 =- \bar{y} +\bar{x_{1}} \beta _1 +\bar{x_{2}} \beta _2
\end{eqnarray}$$
[mathjax]\( \beta _0\) を代入して、 [mathjax]\( \beta _1, \beta _2\)について解いていきましょう。 式をまとめると以下のようになります。
[mathjax]$$ \begin{eqnarray}
\sum (x_{1i}-\bar{x_{1}}) (y_i-\bar{y}) &=& (\sum(x_{1i})^2 – \bar{x_1}\sum x_{1i} )\beta _1 +( \sum x_{1i}x_{2i} – \sum x_{1i} \bar{x_2} )\beta _2 \\
\sum (x_{2i}-\bar{x_{2}}) (y_i-\bar{y}) &=&( \sum x_{1i}x_{2i} – \sum x_{1i} \bar{x_2} )\beta _1 +( \sum(x_{2i})^2 – \bar{x_2}\sum x_{2i} )\beta _2
\end{eqnarray}$$
この式を綺麗にするために、データ[mathjax]\( a_i,b_i \)(データ数 N)について以下の式が成り立つ事に注意します。
[mathjax]$$ \begin{eqnarray}
\sum (a_i -\bar{a})^2 &=& \sum (a_i)^2 -N \bar{a} ^2 \\
\sum(a_i -\bar{a}) (b_i -\bar{b} ) &=&\sum a_i b_i -N\bar{a} \bar{b}
\end{eqnarray}$$
[mathjax]\( \beta_1 , \beta _2\)について式をまとめましょう。
[mathjax]$$ \begin{eqnarray}
\sum (x_{1i}-\bar{x_1} )(y_i -\bar{y})&=&
\sum ( x_{1i} -\bar{x_1})^2 \beta _1 +\sum ( x_{1i} – \bar{x_1})(x_{2i}- \bar{x_2} ) \beta_2 \\
\sum (x_{2i}-\bar{x_2} )(y_i -\bar{y})&=&
\sum ( x_{1i} – \bar{x_1})(x_{2i}- \bar{x_2} ) \beta _1 + \sum ( x_{2i} -\bar{x_2})^2 \beta_2
\end{eqnarray}$$
以下のような行列×ベクトルの形の式にまとめることが出来ます。ベクトルは横向きに書いていますが、縦ベクトルのつもりです。[mathjax] \( A=\{ a_{ij} \} \) で, 行列 を表し、[mathjax] \( A \)の [mathjax] \( (i, j) \)成分が [mathjax]\( a_{ij} \) であるとします。
[mathjax]$$ \begin{eqnarray}
S=\{ S_{ij} \} &=&\sum_{k} (x_{ik}-\bar{x_i} ) (x_{jk} – \bar{x_j}) \\
\vec{\beta} &=& (\beta _1 , \beta _2) \\
\vec{S_y} = (S_{1y}, S_{2y} ) &=& (\sum(x_{1i } – \bar{x_1 } ) (y_i – \bar{y} ), \sum(x_{2i } – \bar{x_2} ) (y_i – \bar{y} ) )
\end{eqnarray} $$
Sは分散共分散行列と呼ばれます。
定義した行列とベクトルで式を書くと次のようになります。
[mathjax]$$ \begin{eqnarray}
S\vec{\beta} =\vec{S_y}
\end{eqnarray} $$
2次の正方行列 [mathjax] \( A=\{ a_{ij} \} \) は逆行列が(存在すれば)簡単に計算出来て、以下のようになります。
[mathjax]$$ \begin{eqnarray}
A^{-1} = \frac{1}{a_{11} a_{22} -a_{12} a_{21}}
\begin{pmatrix}
a_{22} & -a_{12} \\
-a_{21} & a_{11} \\
\end{pmatrix}
\end{eqnarray} $$
Sに逆行列が存在すると仮定すると、パラメーターは以下のように求まります。
[mathjax]$$ \begin{eqnarray}
\beta _1 &=&\frac{S_{22} S_{1y}- S_{12}S_{2y} }{S_{11}S_{22}- S_{12}^2} \\
\beta _2 &=& \frac{S_{11} S_{2y} -S_{21} S_{1y} } { S_{11}S_{22}- S_{12}^2 }
\end{eqnarray} $$
[mathjax] \( \beta _0 \) と合わせて、回帰式が導出できました。
逆行列が存在しないのはどんな場合なのか調べて見ましょう。1
重回帰分析が出来ない条件
重回帰分析で逆行列が存在しないのは、 [mathjax] \( S_{11}S_{12}- S_{12}^2 =0 \)となる場合です。 つまり、データの中で次の式が成り立つ場合です。
[mathjax]$$ \begin{eqnarray}
\frac{S_{11}S_{22} } {S_{12} ^2}=1
\end{eqnarray} $$
これはどういう意味でしょうか。意味を理解するために、ベクトルの内積を思い出しましょう。2次元のベクトル [mathjax] \( \vec{a}=(a_1, a_2), \vec{b}=(b_1, b_2) \)に対して、それぞれのベクトルのなす角度を [mathjax] \( \theta \)とした時、内積 [mathjax] \( \vec{a}\cdot \vec{b} \) は以下の式で定義されました。
[mathjax]$$ \begin{eqnarray}
\vec{a}\cdot \vec{b} = \mid \vec{a} \mid \mid \vec{b} \mid \cos \theta =a_1 b_1 +a_2 b_2 =\sum a_i b_i
\end{eqnarray} $$
内積の定義と [mathjax] \( S_{ij} \)の定義を見比べると、 [mathjax] \( S_{ij} \) は [mathjax] \( \vec{ \tilde{x_i} }= \vec{x_i}- \vec{\bar{x_i} } \) というベクトルを導入して、
[mathjax]$$ \begin{eqnarray}
S_{ij} = \vec{ \tilde{x_i} } \cdot \vec{ \tilde{x_j} }
\end{eqnarray} $$
と書けることが分かります。( [mathjax] \( \vec{\bar{x_i} } \)は全ての成分が平均値[mathjax]\( \bar{x_i } \)であるベクトル ) もう一度、重回帰分析が出来ないときの条件を見てみましょう。
[mathjax]$$ \begin{eqnarray}
\frac{ \mid \vec{ \tilde{x_1} } \mid ^2 \mid \vec{ \tilde{x_2} } \mid ^2 }
{ ( \vec{ \tilde{x_1} } \cdot \vec{ \tilde{x_2} } ) ^2}=1
\end{eqnarray} $$
両辺の平方根を取ると、
[mathjax]$$ \begin{eqnarray}
\frac{ \mid \vec{ \tilde{x_1} } \mid \mid \vec{ \tilde{x_2} } \mid } { \vec{ \tilde{x_1} } \cdot \vec{ \tilde{x_2} } } = \pm1
\end{eqnarray} $$
となります。 [mathjax] \( \vec{\bar{x_1} }, \vec{\bar{x_2} } \) のなす角度を [mathjax] \( \theta \)とおくと、上の式は次のように書き直せます。
[mathjax]$$ \begin{eqnarray}
\cos \theta= \pm1
\end{eqnarray} $$
2つのベクトルに定数ベクトルを足しても、角度は変わらないので、 この式は説明変数二つが平行である事と同じことです。つまり、説明変数をベクトルとして見たときにベクトルの方向が同じ時は、重回帰分析は出来ないのです。片方の説明変数がもう片方の説明変数の定数倍になっているので、説明に両方使おうとしても意味がないというわけです。そのような場合は、片方の説明変数を削除して単回帰分析を行います。変数が3つ以上ある場合も、基本的には相関の高い変数を削除して重回帰分析をやり直します、勿論他の方法もありますが。
まとめ
・平均に関する公式と、行列を使うことでパラメーターが求められる。
・片方の説明変数がもう片方の説明変数で完全に説明できるとき、重回帰分析は出来ない。