重回帰分析

問題の定式化と推定

 説明変数が複数である回帰分析が重回帰分析であり、データの数を\(\small n \)個、説明変数の数を\(\small m \)個とすると、最小二乗法の問題は $$\small \min_{ \beta_1,\cdots,\beta_m } F( \beta_1,\cdots,\beta_m) = \min_{\beta_1,\cdots,\beta_m} \sum_{k=1}^n \left(y_k-\sum_{j=1}^m \beta_j x_{j,k} \right)^2$$と定式化できる。定数を回帰式に含める場合は、\( \small x_{0,k} = 1, k=1,\cdots,n \)とおいて、$$\small \min_{ \beta_0,\cdots,\beta_m } F( \beta_0,\cdots,\beta_m) = \min_{\beta_0,\cdots,\beta_m} \sum_{k=1}^n \left(y_k-\sum_{j=0}^m \beta_j x_{j,k} \right)^2$$とすればよいだろう。

 目的関数を各説明変数で偏微分すると$$\small \frac{\partial F}{\partial \beta_j} = 2 \left( \beta_j \sum_{k=1}^n x^2_{j,k}+\sum_{l=0, l \neq j}^m \beta_l \sum_{k=1}^n x_{j,k} x_{l,k}-\sum_{k=1}^n x_{j,k} y_{k} \right) = 0 $$であるから、行列の形で連立方程式を整理すると$$\small \left[ \begin{array}{cccc} \displaystyle \sum_{k=1}^n x^2_{0,k} & \displaystyle \sum_{k=1}^n x_{0,k} x_{1,k} &\cdots& \displaystyle \sum_{k=1}^n x_{0,k} x_{m,k} \\ \displaystyle \sum_{k=1}^n x_{1,k} x_{0,k} & \displaystyle \sum_{k=1}^n x^2_{1,k} &\cdots& \displaystyle \sum_{k=1}^n x_{1,k} x_{m,k} \\ \vdots&\vdots&\ddots&\vdots \\ \displaystyle \sum_{k=1}^n x_{m,k} x_{0,k} & \displaystyle \sum_{k=1}^n x_{m,k} x_{1,k} &\cdots& \displaystyle \sum_{k=1}^n x^2_{m,k} \end{array} \right] \left[ \begin{array}{c} \beta_0\\ \beta_1\\ \vdots\\ \beta_{m} \end{array} \right]=\left[ \begin{array}{l} \displaystyle \sum_{k=1}^n x_{0,k} y_{k} \\ \displaystyle \sum_{k=1}^n x_{1,k} y_{k} \\ \vdots \\ \displaystyle \sum_{k=1}^n x_{m,k} y_{k} \end{array} \right]$$であり、この連立方程式をLU分解などで解くことで回帰係数\( \small \beta_0, \beta_1, \cdots, \beta_m \)を求めることができる。この連立方程式は正規方程式(Normal equation)といわれる。

特異値分解

 現実には、重回帰分析は正規方程式を直接解く方法で実装されることはあまりないと考えられる。相関が高いデータを説明変数に用いたり、データ数が多いと正規方程式の行列が特異(階数が行列の行や列の数より低いこと)になってしまい、解が発散してしまうことがあるためである。代わりに用いられるのが特異値分解、一般化逆行列を用いた方法である。

 通常の意味での逆行列は\(\small n \times n\)の行列でしか存在しないが、 任意の\(\small m \times n\)の行列\( \small A \)について以下の性質を持つ\(\small n \times m\)の行列\( \small A^{-1} \)が存在し、これを逆行列と類似の性質を持つものとして扱うことができる(転置のところは厳密には複素共役の転置行列だが、ここでは転置行列にしておく。)。$$ \small AA^{-1}A=A \qquad \quad \\ A^{-1}AA^{-1}=A^{-1} \\ (AA^{-1})^T=AA^{-1} \\ (A^{-1}A)^T=A^{-1}A $$この性質を満たす行列を(Moore-Penroseの)一般化逆行列(Generalized Inverse Matrix)という。\(\small n \times n\)の正則な行列(逆行列が存在する行列)では逆行列に一致することが知られている。

 厳密な解が存在しない連立方程式\( \small Y = XB \)(例えば、\(\small Y \)を\(\small n \times 1 \)、\(\small X \)を\(\small n \times m \)、 \(\small B \)を\(\small m \times 1 \)の行列とする。)について、この一般化逆行列を用いて連立方程式を解くと、\(\small B=X^{-1}Y \)であり、当然のことながら連立方程式の解にはならないものの、最小二乗法の解になることが知られている。この性質を利用して、重回帰分析の回帰係数を求めることができる。

 一般化逆行列を具体的に求める方法として用いられるのが特異値分解(SVD: Singular Value Decomposition)といわれる計算手法であり、任意の\(\small m \times n\)の行列\( \small A \)は以下の性質をもつ3つの行列に分解することができる。$$ \small A = U WV^T \qquad \qquad \; \\ \small W = diag[w_1, w_, \cdots, w_n] $$ここで、\(\small U \)は\(\small m \times n \)の直交行列、 \(\small V \)は\(\small n \times n \)の直交行列、\(\small diag[w_1, w_, \cdots, w_n] \)は対角の要素が \(\small w_i \)でそれ以外の要素が0の行列を表す。\(\small w_1, w_, \cdots, w_n \)は行列\( \small A \)の特異値といわれる。直交行列は\( \small AA^{T} = I \)を満たす行列である(\( \small I \)は単位行列)。この特異値分解が与えられたものとすると、一般化逆行列は$$ \small A^{-1} = VW^{-1}U^{T} \qquad \qquad \quad \;\; \\ \small W^{-1} = diag \left[\frac{1}{w_1}, \frac{1}{w_2}, \cdots, \frac{1}{w_n} \right]$$で計算できる。\( \small w_i = 0 \)の場合は\( \small \frac{1}{w_i} \)は0に置き換えて計算する。

 以上により、重回帰分析の回帰係数を求めることができる。特異値分解を求める具体的なアルゴリズムはかなり複雑なのでここでは扱わないが、数値計算系のパッケージには通常あるものなので、道具として扱えるようになれれば十分であろうと考える。