重回帰分析のテコ比がよくわかる(その1)
「重回帰分析のテコ比がわからない」と困っていませんか?
こういう疑問に答えます。
本記事のテーマ
おさえておきたいポイント
- ①重回帰分析を解く(その1)
- ➁\(β_k\)の導出式を行列表記する(その1)
- ➂ハット行列\(H\)を導出する(その1)
- ➃ハット行列とテコ比を導出する(その2)
- ➄ハット行列とテコ比を実際に計算する(その2)
- ⑥テコ比がわかる(その2)
QCプラネッツも行列は苦手です(笑)
①重回帰分析を解く
データの構造式を作る
次のようなデータを重回帰分析することを考えます。
添え字の\(i,j,k\)は
●\(i\)=1,2,…,\(n\)
●\(j\)=1,2,…,\(p\)
●\(k\)=1,2,…,\(p\)
である点に注意してください。
データ \(i\)⇊ \(j,k\)⇒ |
\(x_{1i}\) | \(x_{2i}\) | … | \(x_{ji}\) | … | \(x_{pi}\) | \(y_i\) |
1 | \(x_{11}\) | \(x_{21}\) | … | \(x_{j1}\) | … | \(x_{p1}\) | \(y_1\) |
2 | \(x_{12}\) | \(x_{22}\) | … | \(x_{j2}\) | … | \(x_{p2}\) | \(y_2\) |
… | … | … | … | … | … | … | … |
\(i\) | \(x_{1i}\) | \(x_{2i}\) | … | \(x_{ji}\) | … | \(x_{pi}\) | \(y_i\) |
… | … | … | … | … | … | … | … |
\(n\) | \(x_{1n}\) | \(x_{2n}\) | … | \(x_{jn}\) | … | \(x_{pn}\) | \(y_p\) |
最小二乗法から正規方程式を作る
上の表をデータの構造式で表現すると、
\(\hat{y_i}-\bar{y}\)=\(\sum_{k=1}^{p}β_k(x_{ki}-\bar{x_k})\) (式1)
ですね。添え字の\(i,j,k\)は
●\(i\)=1,2,…,\(n\)
●\(j\)=1,2,…,\(p\)
●\(k\)=1,2,…,\(p\)
である点に注意してください。
(式1)を書き出すと、
\(\hat{y_i}-\bar{y}\)=\(β_1(x_{1i}-\bar{x_1})\)+\(β_2(x_{2i}-\bar{x_2})\)+…+\(β_p(x_{pi}-\bar{x_p})\)
ですね。
なるべく具体的な式を書きながら
理解していきましょう!
最小二乗法から正規方程式を作って、回帰直線の傾き\(β_k\)を求める式を作ります。これは、関連記事で詳細に解説しているので、ご確認ください。
重回帰分析の推定区間の式が導出できる(その1) 重回帰分析の推定区間の式は導出できますか?公式代入だけで終わっていませんか? 本記事では2記事にわたり、重回帰分析の推定区間の式が導出をわかりやすく解説します。多変量解析を学ぶ人は必読です。 |
回帰直線の傾き\(β_k\)を求める式は
\(\left(
\begin{array}{cccc}
S_{11} & S_{12} & \ldots & S_{1p} \\
S_{21} & S_{22} & \ldots & S_{2p} \\
\vdots & \vdots & \ddots & \vdots \\
S_{p1} & S_{p2} & \ldots & S_{pp}
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
β_1 \\
β_2 \\
\vdots \\
β_p
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
S_{1y} \\
S_{2y} \\
\vdots \\
S_{py}
\end{array}
\right)
\)
ですね。Sは各成分の平方和で、逆行列を使って、\(β_i\)の各値を計算します。
回帰直線の傾き\(β_k\)を導出する式を作る
回帰直線の傾き\(β_k\)は、次の行列の式から計算できますね。
\(
\left(
\begin{array}{c}
β_1 \\
β_2 \\
\vdots \\
β_p
\end{array}
\right)
\)=\(\left(
\begin{array}{cccc}
S^{11} & S^{12} & \ldots & S^{1p} \\
S^{21} & S^{22} & \ldots & S^{2p} \\
\vdots & \vdots & \ddots & \vdots \\
S^{p1} & S^{p2} & \ldots & S^{pp}
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
S_{1y} \\
S_{2y} \\
\vdots \\
S_{py}
\end{array}
\right)
\)
となります。
ここで、\(S^{jk}\)は逆行列のj行k列目の値で、添え字を上側とします。
さあ、ここからが本記事の本題になります。
\(\hat{y}\)=\(X(X^T X)^{-1} X^T y\)=\(Hy\)
として、
\(H\)=\(X(X^T X)^{-1} X^T \)
とハット行列\(H\)を導出することです。
行列を使って式変形するのは、理解が難しいので、なるべく具体的な式を書きながらわかりやすく解説します!
そのために、結構大事なのが、
例えば、
S=\(\sum_{i=1}^{n}(x_i-\bar{x})^2\)=\(X^T X\)
\(X\)=\(\begin{pmatrix}
x_1-\bar{x}\\
x_2-\bar{x}\\
…\\
x_n-\bar{x}
\end{pmatrix}
\)
がすっと理解できることが大事なのですが、最初は難しいので、丁寧に解説していきます。
➁\(β_k\)の導出式を行列表記する
平方和\(S_{jk}\)の導出式を行列表記する
先ほど紹介しましたが、
S=\(\sum_{i=1}^{n}(x_i-\bar{x})^2\)=\(X^T X\)
が難しいので、丁寧に解説していきます。
平方和Sを書き出すと
S=\((x_1-\bar{x})^2\)+\((x_2-\bar{x})^2\)+…+\((x_i-\bar{x})^2\)+…+\((x_n-\bar{x})^2\)
ですね。
この各項の\((x_i-\bar{x})^2\)を
\((x_i-\bar{x})^2\)=\((x_i-\bar{x})\)×\((x_i-\bar{x})\)として、行列の積に当てはめていきます。下図をご覧ください。
上図は\(i\)=1,2についてですが、これを\(i\)=1,2,…,\(n\)まで拡大しても行列の積の式は同じように書けます。
\(\begin{pmatrix}
x_1-\bar{x} & x_2-\bar{x} & … & x_n-\bar{x} \end{pmatrix}\)\(\begin{pmatrix}
x_1-\bar{x}\\
x_2-\bar{x}\\
…\\
x_n-\bar{x}
\end{pmatrix}
\)
を計算すると
=\((x_1-\bar{x})^2\)+\((x_2-\bar{x})^2\)+…+\((x_i-\bar{x})^2\)+…+\((x_n-\bar{x})^2\)
=S(平方和)になりますね。
つまり、
S=\(\sum_{i=1}^{n}(x_i-\bar{x})^2\)=\(X^T X\)
がよくわかりますね。
次に、同様に考えると平方和\(S_{jk}\)は
\(S_{jk}\)=\(\sum_{i=1}^{n}(x_{ji}-\bar{x_j})(x_{ki}-\bar{x_k})\)より、行列表記すると
\(\begin{pmatrix}
x_{j1}-\bar{x_j} & x_{j2}-\bar{x_j} & … & x_{jn}-\bar{x_j} \end{pmatrix}\)\(\begin{pmatrix}
x_{k1}-\bar{x_k}\\
x_{k2}-\bar{x_k}\\
…\\
x_{kn}-\bar{x_k}
\end{pmatrix}
\)
となるがわかりますね。
つまり、
\(S_{jk}\)=\(X_j^T X_k\)
と書けることもわかりますね。
\(j,k\)をすべての場合についての平方和を行列表記する
\(j,k\)は共に1~\(p\)までありますから、すべての\(j,k\)における平方和を行列表記すると下図のようになります。
\(\left(
\begin{array}{cccc}
S_{11} & S_{12} & \ldots & S_{1k} & \ldots& S_{1p} \\
S_{21} & S_{22} & \ldots & S_{2k} & \ldots & S_{2p} \\
\vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\
S_{j1} & S_{j2} & \ldots & S_{jk} & \ldots & S_{jp} \\
\vdots & \vdots & \vdots &\vdots & \ddots & \vdots \\
S_{p1} & S_{p2} & \ldots & S_{pk} & \ldots & S_{pp}
\end{array}
\right)
\)
=\(\left(
\begin{array}{cccc}
x_{11}-\bar{x_1} & x_{12}-\bar{x_1} & \ldots & x_{1i}-\bar{x_1} & \ldots& x_{1n}-\bar{x_1} \\
x_{21}-\bar{x_2} & x_{22}-\bar{x_2} & \ldots & x_{2i}-\bar{x_2} & \ldots& x_{2n}-\bar{x_2} \\
\vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\
x_{j1}-\bar{x_j} & x_{j2}-\bar{x_j} & \ldots & x_{ji}-\bar{x_j} & \ldots& x_{jn}-\bar{x_j} \\
\vdots & \vdots & \vdots &\vdots & \ddots & \vdots \\
x_{p1}-\bar{x_p} & x_{p2}-\bar{x_p} & \ldots & x_{pi}-\bar{x_p} & \ldots& x_{pn}-\bar{x_p} \\
\end{array}
\right)
\)
\(\left(
\begin{array}{cccc}
x_{11}-\bar{x_1} & x_{21}-\bar{x_2} & \ldots & x_{ki}-\bar{x_k} & \ldots& x_{p1}-\bar{x_p} \\
x_{12}-\bar{x_1} & x_{22}-\bar{x_2} & \ldots & x_{ki}-\bar{x_k} & \ldots& x_{p2}-\bar{x_p} \\
\vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\
x_{1i}-\bar{x_1} & x_{2i}-\bar{x_2} & \ldots & x_{ki}-\bar{x_k} & \ldots& x_{pk}-\bar{x_p} \\
\vdots & \vdots & \vdots &\vdots & \ddots & \vdots \\
x_{1n}-\bar{x_1} & x_{2n}-\bar{x_2} & \ldots & x_{kn}-\bar{x_k} & \ldots& x_{pn}-\bar{x_p} \\
\end{array}
\right)
\)
ここで注意なのは、
(右辺)はn×p行列と、p×n行列の積であること
(右辺)は2つとも正方行列ではない点に注意!
図で描くと下のイメージです。
確かに行列を式で表記すると
S=\(X^T X\)
と書くのでSもXも同じp×p行列と思いがちです。
行列はシンプルに式が書けるけど、中身をちゃんと追わないと
間違えやすいので難しいですね。
【結論】平方和\(S_{jk}\)を行列表記
となります。
平方和\(S_{jy}\)の導出式を行列表記する
平方和\(S_{jk}\)の行列表記を丁寧に解説しました。同様に、平方和\(S_{jy}\)の導出式を行列表記します。
平方和\(S_{xx}\)を書き出すと
\(S_{xx}\)=\((x_1-\bar{x})^2\)+\((x_2-\bar{x})^2\)+…+\((x_i-\bar{x})^2\)+…+\((x_n-\bar{x})^2\)
ですね。
平方和Sを書き出すと
S=\((x_1-\bar{x})^2\)+\((x_2-\bar{x})^2\)+…+\((x_i-\bar{x})^2\)+…+\((x_n-\bar{x})^2\)
=\(\begin{pmatrix}
x_1-\bar{x} & x_2-\bar{x} & … & x_n-\bar{x} \end{pmatrix}\)\(\begin{pmatrix}
x_1-\bar{x}\\
x_2-\bar{x}\\
…\\
x_n-\bar{x}
\end{pmatrix}
\)
でしたね。
ここで、\((x_i-\bar{x})^2\)を\((x_i-\bar{x})(y_i-\bar{y})\)に変えても同様に行列表記できます。
\(S_{1y}\)=\((x_{j1}-\bar{x_j})(y_1-\bar{y})\)+\((x_{j2}-\bar{x_j})(y_2-\bar{y})\)+…+\((x_{jn}-\bar{x_j})(y_n-\bar{y})\)
=\(\begin{pmatrix}
x_{j1}-\bar{x_j} & x_{j2}-\bar{x_j} & … & x_{jn}-\bar{x_j} \end{pmatrix}\)\(\begin{pmatrix}
y_1-\bar{y}\\
y_2-\bar{y}\\
…\\
y_n-\bar{y}
\end{pmatrix}
\)
とかけるので、
\(S_{1y}\)=\(X^T Y\)と
行列表記できますね。
また、\(S_{1y}\),\(S_{2y}\),…,\(S_{py}\)も同様にして、まとめて行列表記できます。
\(\left(
\begin{array}{cccc}
x_{11}-\bar{x_1} & x_{12}-\bar{x_1} & \ldots & x_{1n}-\bar{x_1}\\
x_{21}-\bar{x_2} & x_{22}-\bar{x_2} & \ldots & x_{2n}-\bar{x_2}\\
\vdots & \vdots & \ddots & \vdots \\
x_{p1}-\bar{x_p} & x_{p2}-\bar{x_p} & \ldots & x_{pn}-\bar{x_p}\\
\end{array}
\right)
\)\(\begin{pmatrix}
y_{1}-\bar{y}\\
y_{2}-\bar{y}\\
…\\
y_{n}-\bar{y}
\end{pmatrix}
\)=\(\begin{pmatrix}
S_{1y}\\
S_{2y}\\
…\\
S_{py}
\end{pmatrix}
\)
ここで注意なのは、
(右辺)はpのベクトルであること
n,p混同しないよう注意!
図で描くと下のイメージです。
【結論】平方和\(S_{jy}\)を行列表記
となります。
\(β_k\)の導出式を行列表記する
さて、回帰直線の傾きを導出する式を再掲します。
\(\left(
\begin{array}{cccc}
S_{11} & S_{12} & \ldots & S_{1p} \\
S_{21} & S_{22} & \ldots & S_{2p} \\
\vdots & \vdots & \ddots & \vdots \\
S_{p1} & S_{p2} & \ldots & S_{pp}
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
β_1 \\
β_2 \\
\vdots \\
β_p
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
S_{1y} \\
S_{2y} \\
\vdots \\
S_{py}
\end{array}
\right)
\)
この式を行列表記すると下図のように
とシンプルに書けますね。
また、(左辺)は\(β\)のみにしたいので、\(X^T X\)の逆行列を両辺にかけます。すると、
とシンプルに書けますね。
ハット行列までもう少しです!
➂ハット行列\(H\)を導出する
回帰\(\hat{Y}\)の導出式を行列表記する
回帰直線を行列表記すると
\(\hat{Y}=Xβ\)
とXが前に、βが後ろに来ます。これをちゃんと理解しましょう!
回帰直線はn個のデータにおいて、次のn個の式が書けますね。
●\(\hat{y_1}-\bar{y}\)=\(β_1 (x_{11}-\bar{x_1})\)+\(β_2 (x_{21}-\bar{x_2})\)+…+\(β_p (x_{p1}-\bar{x_p})\)
●\(\hat{y_2}-\bar{y}\)=\(β_1 (x_{12}-\bar{x_1})\)+\(β_2 (x_{22}-\bar{x_2})\)+…+\(β_p (x_{p2}-\bar{x_p})\)
…
●\(\hat{y_n}-\bar{y}\)=\(β_1 (x_{1n}-\bar{x_1})\)+\(β_2 (x_{2n}-\bar{x_2})\)+…+\(β_p (x_{pn}-\bar{x_p})\)
ですね。これを行列表記すると、下の式になります。じっくり確認してください。
\(\begin{pmatrix}
\hat{y_{1}}-\bar{y}\\
\hat{y_{2}}-\bar{y}\\
…\\
\hat{y_{n}}-\bar{y}
\end{pmatrix}
\)=\(\left(
\begin{array}{cccc}
x_{11}-\bar{x_1} & x_{21}-\bar{x_2} & \ldots & x_{p1}-\bar{x_p}\\
x_{12}-\bar{x_1} & x_{22}-\bar{x_2} & \ldots & x_{p2}-\bar{x_p}\\
\vdots & \vdots & \ddots & \vdots \\
x_{1n}-\bar{x_1} & x_{2n}-\bar{x_2} & \ldots & x_{pn}-\bar{x_p}\\
\end{array}
\right)
\)\(\begin{pmatrix}
β_1\\
β_2\\
…\\
β_p
\end{pmatrix}
\)
逆の\(βX\)の行列計算はできません。
ハット行列\(H\)を導出する
さあ、ようやくまとめに入ります。
回帰直線は\(\hat{Y}\)=\(Xβ\)
で\(β\)=\((X^T X)^{-1}\)\(X^T Y\)を代入すると
\(\hat{Y}\)=\(X\)\((X^T X)^{-1}\)\(X^T\)\( Y\)
となります。
の関係式から\(\hat{Y}\)と\( Y\)の比をテコ比と考えて
ハット行列\(H\)=\(X\)\((X^T X)^{-1}\)\(X^T\)
が導出できます。
ちゃんと導出できました!
ハット行列、テコ比の具体的な計算は
「テコ比がよくわかる(その2)」で解説します。
その2に行ってみましょう!
まとめ
「重回帰分析のテコ比がよくわかる(その1)」を解説しました。
- ①重回帰分析を解く(その1)
- ➁\(β_k\)の導出式を行列表記する(その1)
- ➂ハット行列\(H\)を導出する(その1)
- ➃ハット行列とテコ比を導出する(その2)
- ➄ハット行列とテコ比を実際に計算する(その2)
- ⑥テコ比がわかる(その2)
Warning: count(): Parameter must be an array or an object that implements Countable in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 119