重回帰分析

回帰分析は原因と結果、あるいは結果と結果の量的関係を見る分析手法の一つである。例えば、オーキシンは植物の茎の伸長成長を促進する物質として知られている。植物に与えるオーキシンが高濃度ほど、茎の伸長成長率が大きくなる。このように、伸長成長率という結果は、オーキシン濃度という原因によって説明できる。このとき、y を伸長成長率、x をオーキシンの濃度とおくと、y と x は次のような 1 次関数の回帰式で表せる。この回帰式において、x は独立変数(または説明変数)、y は従属変数(または目的変数)とよばれている。

\[ y = \beta_{0} + \beta_{1}x \]

1 つの結果が 1 つだけの原因に影響されるシンプルなケースのほかに、1 つの結果が複数の原因に影響される複雑なケースも考えられる。例えば、桜の開花日は、気温、降水量、日射量など様々な原因に影響されていると考えられる。このように、原因が複数存在するとき、複数の独立変数 x1, x2, .. を用意して、1 つの従属変数 y を説明する回帰式を立てる必要がある。

\[ y = \beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + \cdots + \beta_{n}x_{n} \]

重回帰分析

重回帰分析は、1 つの結果を複数の原因で説明するための分析手法である。ある回帰式をもとに、1 つの結果 y を、複数の原因 x を利用して説明していく手法である。このために、その回帰式の各係数を決定していく必要がある。回帰式の係数の決定は、最小二乗法が使われる。その考え方は、単回帰分析と同じく、「回帰モデル式で計算された y の推測値」と「実際に観測された y の観測値」との間の誤差 e を最小にするように、回帰式の各係数を決定する。

最小二乗法

ここで、1 つの従属変数を、n 個の独立変数で説明するモデルを考える。このとき、i セット目のデータ(従属変数 yi; 独立変数 xi1, xi2, ..., xin)に着目したとき、観測値と推測値の誤差 ei は次のように計算できる。

\[ e_{i} = y_{i} - \left(\beta_{0} + \beta_{1}x_{i1} + \beta_{2}x_{i2} + \cdots + \beta_{n}x_{in}\right) \]

ei はプラスとマイナス両方の値が取ることができる。そのため、i = 1, 2, 3, ... のときの誤差の和を求めるときに不便である。そこで、この誤差をそのまま使うのではなく、二乗してから使う。このとき、全ての誤差 ei を同時に最小にすることは、これらの和を最小にすることと等しい。そこで、誤差の二乗の和 Se について考える。

\[ S_{e} = \sum_{i=1}^{n}e_{i}^{2} = \sum_{i=1}^{n}\left(y_{i} - \left(\beta_{0} + \beta_{1}x_{i1} + \beta_{2}x_{i2} + \cdots + \beta_{n}x_{in}\right)\right)^{2} \]

Se が最小となるような係数 βk (k = 0,1, ..., n) を求めるには、Se を βk (k = 0,1, ..., n) の多変量関数とみなして、各 βk (k = 0,1, ..., n) で偏微分し、Se が最小となる βk (k = 0,1, ..., n) を求めればよい。

最小二乗法の行列計算

従属変数からなるベクトルを Y とする。また、独立変数を X とし、回帰係数からなるベクトルを β とする。このとき、回帰モデルは次式で書き表すことができる。

\[ \mathbf{Y} = \mathbf{X}\mathbf{\beta} \]

このとき、誤差二乗和は、次のように求められる。

\[ \begin{eqnarray} \mathbf{e} &=& \sum\left( \mathbf{Y} - \mathbf{X}\mathbf{\beta} \right)^{2} \\ &=& \left ( \mathbf{Y} - \mathbf{X}\mathbf{\beta} \right)^{T}\left( \mathbf{Y} - \mathbf{X}\mathbf{\beta} \right ) \\ &=& \mathbf{Y}'\mathbf{Y} - 2\mathbf{Y}^{T}\mathbf{X}\mathbf{\beta}+ \mathbf{\beta}^{T}\mathbf{X}^{T}\mathbf{X}\mathbf{\beta} \end{eqnarray} \]

この式に対して、列ベクトル β で偏微分して、列ベクトル e が最小となる列ベクトル β を求める。

\[ \begin{eqnarray} \frac{\partial\mathbf{e}}{\partial\mathbf{\beta}} = \frac{\partial\left ( \mathbf{Y}^{T}\mathbf{Y} - 2\mathbf{Y}'\mathbf{X}\mathbf{\beta}+ \mathbf{\beta}^{T}\mathbf{X}^{T}\mathbf{X}\mathbf{\beta}\right )}{\partial\mathbf{\beta}} &=& \mathbf{0} \\ \Longleftrightarrow -2\mathbf{X}^{T}\mathbf{Y} + 2\left (\mathbf{X}^{T}\mathbf{X}\right )^{T}\mathbf{\beta} &=& \mathbf{0} \end{eqnarray} \]

ここで、もし行列 X'X が逆行列を持つならば、左右に XTX の逆行列をかけることで、列ベクトル β が求まる。

\[ \hat{\mathbf{\beta}} = \left(\mathbf{X}^{T}\mathbf{X}\right)^{-1}\mathbf{X}^{T}\mathbf{Y} \]

複数の説明変数間に高い相関が見られる場合に XTX に逆行列が存在しない場合がある。このそき、XTX に微小なノイズ λI を加えることによって (XTX + λI) の逆行列を求めて回帰係数を求める方法がある。これを Ridge 回帰という。

\[ \hat{\mathbf{\beta}} = \left(\mathbf{X}^{T}\mathbf{X} + \lambda \mathbf{I}\right)^{-1}\mathbf{X}^{T}\mathbf{Y} \]

独立変数の選択

独立変数 x はデータとして用意されていれば、すべてモデルに組み込むことができる。しかし、相関の高い独立変数をモデル式に組み込んでも、共線性により X'X の逆行列が計算できなかったり、モデルが独立変数に過剰に適合してしまう危険性が大きくなる。このような危険性を抑制するには、モデル作成時に、データに含まれている独立変数をすべてモデルに組み込むのではなく、従属変数を説明するのに重要な独立変数だけをモデルに組み込む必要がある。重要な独立変数を選択する方法には、次のような方法がある。

  • 実験の計画段階において、すでに重要と思われる要因(因子)を独立変数として選択する。
  • 考えられるすべての要因の全組合せを利用して回帰分析を行い、それぞれの解析結果についてを評価指標(AIC、Cp 統計量など)を用いて評価し、もっとも良かった組合せを利用する。
  • すべての要因それぞれについて、単独で回帰式に代入し分析を行う。結果のもっとも良かったものを残す。次に、この独立変数と、残りの独立変数から一つを選び、2 つの独立変数で回帰分析を行う。さらに続けて、3 つの独立変数で回帰分析を行い、4 つの独立変数で回帰分析を行ってなどのように、適合が改善されるなくなるまでに逐次に独立変数を増やしていく。
  • 初めてにすべての独立変数を回帰式に代入し分析を行う。次に、独立変数を 1 つだけ削除して回帰モデルを作成し、適合を調べる。適合もっとも改善されたモデルを残し、このモデルからさらにもう一つの独立変数を減らして、適合を調べる。このような作業を、適合が改善されなくなるまで、逐次に独立変数を減らしていく。

ここにあげた変数の選択法以外には、LASSOElastic Net とよばれる変数選択法などもある。LASSO や Elastic Net は正則化の一つであり、モデル構築と変数選択を同時に行えるアルゴリズムである。