QCプラネッツ 品質のプロフェッショナルを育成するサイト

重回帰分析のテコ比がよくわかる(その1)

重回帰分析

「重回帰分析のテコ比がわからない」と困っていませんか?

こういう疑問に答えます。

本記事のテーマ

重回帰分析のテコ比がよくわかる(その1)

おさえておきたいポイント

  • ①重回帰分析を解く(その1)
  • ➁\(β_k\)の導出式を行列表記する(その1)
  • ➂ハット行列\(H\)を導出する(その1)
  • ➃ハット行列とテコ比を導出する(その2)
  • ➄ハット行列とテコ比を実際に計算する(その2)
  • ⑥テコ比がわかる(その2)
テコ比、ハット行列を実際に計算するところまで解説するのはQCプラネッツだけ!
苦手な行列表記も丁寧に解説していきます。
QCプラネッツも行列は苦手です(笑)
テコ比、ハット行列を2回にわけて丁寧に解説します。

①重回帰分析を解く

データの構造式を作る

次のようなデータを重回帰分析することを考えます。
添え字の\(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を行列表記して解ける事

例えば、
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\)における平方和を行列表記すると下図のようになります。

平方和Sを行列表記して解ける事

\(\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)
\)

ここで注意なのは、

(左辺)はp×pの行列で
(右辺)はn×p行列と、p×n行列の積であること
(右辺)は2つとも正方行列ではない点に注意!

図で描くと下のイメージです。

テコ比

確かに行列を式で表記すると
S=\(X^T X\)
と書くのでSもXも同じp×p行列と思いがちです。
行列はシンプルに式が書けるけど、中身をちゃんと追わないと
間違えやすいので難しいですね。

【結論】平方和\(S_{jk}\)を行列表記

\(S\)=\(X^T X\)
となります。

平方和\(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}
\)

ここで注意なのは、

(左辺)はn×pの行列とnのベクトルの積で
(右辺)はpのベクトルであること
n,p混同しないよう注意!

図で描くと下のイメージです。

テコ比

【結論】平方和\(S_{jy}\)を行列表記

\(S_{xy}\)=\(X^T Y\)
となります。

\(β_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\)\(β\)=\(X^T Y\)
とシンプルに書けますね。

また、(左辺)は\(β\)のみにしたいので、\(X^T X\)の逆行列を両辺にかけます。すると、

\(β\)=\((X^T X)^{-1}\)\(X^T Y\)
とシンプルに書けますね。
\(β\)について行列表記できました!
ハット行列までもう少しです!

➂ハット行列\(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}
\)

確かに\(\hat{Y}=Xβ\)ですよね。
逆の\(βX\)の行列計算はできません。

ハット行列\(H\)を導出する

さあ、ようやくまとめに入ります。

回帰直線は\(\hat{Y}\)=\(Xβ\)
で\(β\)=\((X^T X)^{-1}\)\(X^T Y\)を代入すると
\(\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

    Warning: Invalid argument supplied for foreach() in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 122
error: Content is protected !!