行列計算がとにかく苦手です。
解説の式をみていると普通の計算式と同様にいかない点が多すぎて、ルールの確認に奔走してしまいます。あと、行列式とかトレースとか転置行列とか冪等行列とか特殊なやつもよくわかりません。
ただ、統計の勉強をしていると重回帰分析などでどうしても避けられない・・・。
本のみならずネットで検索しながらやるんですが、ネットで出てくる記事や論文って多分その道を専攻している人向けで結構計算を端折られてしまうんですよね。そこでとりあえず全然できない自分でもできるように、基本的な行列計算のルール解説も盛り込んで、できるだけわかりやすく最小二乗法について書いてみます。
まず最小二乗法で知っておきたい行列のルール
通常の行列計算の仕方はさすがに知っているので、あとは色々なルールたちです。
\[ (y – X\beta)^T (y – X\beta) = y^T y – 2 y^T X\beta + (X\beta)^T X\beta \]
行列になるといつもよくわからなくなるのですが、要は \( y \) と \( x \) の関係式
行列を使った式に直すと
\[ \mathbf{y} = X\beta + \epsilon \]
となります。
ベータの推定量を出してみよう
さて、ここからが本題。
求めたいのは \( y \) と \( x \) の関係性をつなぐ \( \beta \) ですが、前提条件として誤差項が最小でなければいけません。まず先ほどの誤差項を計算していきます。前述のように
\[ \sum_{i=1}^{n} \epsilon_i^2 = \epsilon^T \epsilon = (y – X\beta)^T (y – X\beta) \]
ここから丁寧に展開していきます。
\[ (y – X\beta)^T (y – X\beta) = y^T y – (X\beta)^T y – y^T X\beta + (X\beta)^T X\beta \]
ここで転置行列の性質から
\[ (X\beta)^T y = (X\beta)^T (y^T)^T = (y^T X\beta)^T \]
となるのですが、\( y^T X\beta \) はスカラー量(行列でもベクトルでもない)なので、転置行列を使っても変化しないことがわかります。よって
\[ (y – X\beta)^T (y – X\beta) = y^T y – 2 y^T X\beta + (X\beta)^T X\beta \]
\[ = y^T y – 2 y^T X\beta + \beta^T X^T X\beta \]
となります。
この式をベクトル \( \beta \) で微分したときに 0 になる点で \( \epsilon \) が最小になると言えるので、微分してみると
\[ \frac{\partial}{\partial \beta} \left( y^T y – 2 y^T X\beta + \beta^T X^T X\beta \right) = 0 \]
各項の微分を計算すると
\[ -2 X^T y + 2 X^T X\beta = 0 \]
これを正規方程式と言います。
あとはこれを解いて
\[ X^T X\beta = X^T y \]
を最小にするのが最小二乗法です。このときの \( \beta \) を求めることで推定量が求められます。重回帰分析の場合はそれぞれ \( y \) が定数ベクトル、\( x \) は定数行列(分析の過程で得られたデータ)となり、\( \beta \) は変数ベクトルとなります。
行列になるといつもよくわからなくなるのですが、要は \( y \) と \( x \) の関係式
行列を使った式に直すと
\[ \mathbf{y} = X\beta + \epsilon \]
となります。
ベータの推定量を出してみよう
さて、ここからが本題。
求めたいのは \( y \) と \( x \) の関係性をつなぐ \( \beta \) ですが、前提条件として誤差項が最小でなければいけません。まず先ほどの誤差項を計算していきます。前述のように
\[ \sum_{i=1}^{n} \epsilon_i^2 = \epsilon^T \epsilon = (y – X\beta)^T (y – X\beta) \]
ここから丁寧に展開していきます。
\[ (y – X\beta)^T (y – X\beta) = y^T y – (X\beta)^T y – y^T X\beta + (X\beta)^T X\beta \]
ここで転置行列の性質から
\[ (X\beta)^T y = (X\beta)^T (y^T)^T = (y^T X\beta)^T \]
となるのですが、\( y^T X\beta \) はスカラー量(行列でもベクトルでもない)なので、転置行列を使っても変化しないことがわかります。よって
\[ (y – X\beta)^T (y – X\beta) = y^T y – 2 y^T X\beta + (X\beta)^T X\beta \]
\[ = y^T y – 2 y^T X\beta + \beta^T X^T X\beta \]
となります。
この式をベクトル \( \beta \) で微分したときに 0 になる点で \( \epsilon \) が最小になると言えるので、微分してみると
\[ \frac{\partial}{\partial \beta} \left( y^T y – 2 y^T X\beta + \beta^T X^T X\beta \right) = 0 \]
各項の微分を計算すると
\[ -2 X^T y + 2 X^T X\beta = 0 \]
これを正規方程式と言います。
あとはこれを解いて
\[ X^T X\beta = X^T y \]
行列を使った式に直すと
\[ (y – X\beta)^T (y – X\beta) = y^T y – 2 y^T X\beta + (X\beta)^T X\beta \]
\[ = y^T y – 2 y^T X\beta + \beta^T X^T X\beta \]
となります。
この式をベクトル \( \beta \) で微分したときに 0 になる点で \( \epsilon \) が最小になると言えるので、微分してみると
\[ \frac{\partial}{\partial \beta} \left( y^T y – 2 y^T X\beta + \beta^T X^T X\beta \right) = 0 \]
各項の微分を計算すると
\[ -2 X^T y + 2 X^T X\beta = 0 \]
これを正規方程式と言います。
あとはこれを解いて
\[ X^T X\beta = X^T y \]
を最小にするのが最小二乗法です。このときの \( \beta \) を求めることで推定量が求められます。重回帰分析の場合はそれぞれ \( y \) が定数ベクトル、\( x \) は定数行列(分析の過程で得られたデータ)となり、\( \beta \) は変数ベクトルとなります。
行列になるといつもよくわからなくなるのですが、要は \( y \) と \( x \) の関係式
行列を使った式に直すと
\[ \mathbf{y} = X\beta + \epsilon \]
となります。
ベータの推定量を出してみよう
さて、ここからが本題。
求めたいのは \( y \) と \( x \) の関係性をつなぐ \( \beta \) ですが、前提条件として誤差項が最小でなければいけません。まず先ほどの誤差項を計算していきます。前述のように
\[ \sum_{i=1}^{n} \epsilon_i^2 = \epsilon^T \epsilon = (y – X\beta)^T (y – X\beta) \]
ここから丁寧に展開していきます。
\[ (y – X\beta)^T (y – X\beta) = y^T y – (X\beta)^T y – y^T X\beta + (X\beta)^T X\beta \]
ここで転置行列の性質から
\[ (X\beta)^T y = (X\beta)^T (y^T)^T = (y^T X\beta)^T \]
となるのですが、\( y^T X\beta \) はスカラー量(行列でもベクトルでもない)なので、転置行列を使っても変化しないことがわかります。よって
\[ (y – X\beta)^T (y – X\beta) = y^T y – 2 y^T X\beta + (X\beta)^T X\beta \]
\[ = y^T y – 2 y^T X\beta + \beta^T X^T X\beta \]
となります。
この式をベクトル \( \beta \) で微分したときに 0 になる点で \( \epsilon \) が最小になると言えるので、微分してみると
\[ \frac{\partial}{\partial \beta} \left( y^T y – 2 y^T X\beta + \beta^T X^T X\beta \right) = 0 \]
各項の微分を計算すると
\[ -2 X^T y + 2 X^T X\beta = 0 \]
これを正規方程式と言います。
あとはこれを解いて
\[ X^T X\beta = X^T y \]
丁寧な説明ありがとうございます。
「ここから丁寧に展開していきます。」の後半のくだり、以降の計算式で小文字xが出てきますが、ここはx=1~nの行列を示す大文字太文字Xという理解で良いのでしょうか。
>松村さん
ご指摘有難うございます。おっしゃる通り小文字になってしまっていましたが大文字太文字Xの誤りでしたので、修正させていただきました。
申し訳ありませんでした。