読者です 読者をやめる 読者になる 読者になる

エンジニアを目指す浪人のブログ

情報系に役立ちそうな応用数理をゆるめにメモします

データから計算される分散共分散行列と相関行列の定義をメモする

応用上,測定データから計算される分散共分散行列(covariance matrix)と相関行列(correlation matrix)が用いられることがよくあります(英語ではそれぞれ,sample covariance/correlation matrix, empirical covariance/correlation matrixなどと呼ばれることもあるようです).その定義をメモしておくことにしました.

文献[1]を参考にしています.

{\displaystyle P } 個の変数についてそれぞれ {\displaystyle N } 個のサンプルがある場合を考え,測定値を {\displaystyle \{ x_{np}^* \}_{n=1,\cdots,N ; \ p=1,\cdots,P} } とします.各変数についてその平均と分散は以下です.

(1){\displaystyle \;\;\; \bar{x}_p = \frac{1}{N} \sum_{n=1}^N x_{np} , \;\;\;\;\;\; p=1,\cdots,P }

(2){\displaystyle \;\;\; \sigma_{x_p}^2 = \frac{1}{N-1} \sum_{n=1}^N ( x_{np} - \bar{x}_p )^2 , \;\;\;\;\;\; p=1,\cdots,P }


これらを用いて

(3){\displaystyle \;\;\; x_{np} = x_{np}^* - \bar{x}_p, \;\;\;\;\;\;  n=1,\cdots,N \ ; \ p=1,\cdots,P }

(4){\displaystyle \;\;\; \tilde{x}_{np} = \frac{ x_{np}^* - \bar{x}_p}{\sigma_{x_p}} , \;\;\;\;\;\;  n=1,\cdots,N \ ; \ p=1,\cdots,P }


を導入します.すると測定データ全体は以下の {\displaystyle N \times P } 行列であるデータ行列 {\displaystyle X } あるいは {\displaystyle \tilde{X} } で表現できます.各サンプルを意味する {\displaystyle N } 個の測定データベクトル {\displaystyle \{ \boldsymbol{x}_{n} \}_{n=1\cdots,N}, \ \{ \boldsymbol{\tilde{x}}_{n} \}_{n=1\cdots,N}} を定義しておきます.

(5){\displaystyle \;\;\; X=  \begin{bmatrix} x_{11} & x_{12} & \cdots & x_{1P} \\ x_{21} & x_{22} & \cdots &  x_{2P} \\ \vdots & \vdots & \vdots & \vdots  \\ \vdots & \vdots  & \vdots & \vdots  \\ x_{N1} & x_{N2}  & \cdots & x_{NP} \end{bmatrix} = \begin{bmatrix} \boldsymbol{x}_{1}^T  \\ \boldsymbol{x}_{2}^T \\ \vdots \\ \vdots \\ \boldsymbol{x}_{N}^T \end{bmatrix} , \;\;\;\;\;\; \boldsymbol{x}_{n} = \begin{bmatrix} x_{n1} \\ x_{n2}  \\ \vdots \\ x_{nP} \end{bmatrix}, \;\;\; n=1\cdots,N }

(6){\displaystyle \;\;\; \tilde{X} =  \begin{bmatrix} \tilde{x}_{11} & \tilde{x}_{12} & \cdots & \tilde{x}_{1P} \\ \tilde{x}_{21} & \tilde{x}_{22} & \cdots &  \tilde{x}_{2P} \\ \vdots & \vdots & \vdots & \vdots  \\ \vdots & \vdots  & \vdots & \vdots  \\ \tilde{x}_{N1} & \tilde{x}_{N2}  & \cdots & \tilde{x}_{NP} \end{bmatrix} = \begin{bmatrix} \boldsymbol{\tilde{x}}_{1}^T  \\ \boldsymbol{\tilde{x}}_{2}^T \\ \vdots \\ \vdots \\ \boldsymbol{\tilde{x}}_{N}^T \end{bmatrix} , \;\;\;\;\;\; \boldsymbol{\tilde{x}}_{n} = \begin{bmatrix} \tilde{x}_{n1} \\ \tilde{x}_{n2}  \\ \vdots \\ \tilde{x}_{nP} \end{bmatrix}, \;\;\; n=1\cdots,N }


分散共分散行列を定義します.分散共分散行列は以下の {\displaystyle P \times P } 行列 {\displaystyle V } で表現できます,その {\displaystyle (i,j) } 要素 {\displaystyle v_{ij} } も示します.

(7){\displaystyle  \;\;\; V = \frac{1}{N-1} X^T  X  }

(8){\displaystyle \;\;\; v_{ij} = \frac{1}{N-1} \sum_{n=1}^N x_{ni} x_{nj} = \frac{1}{N-1} \sum_{n=1}^N ( x_{ni}^* - \bar{x}_i) (x_{nj}^* - \bar{x}_j) = v_{ji} }


相関行列を定義します.相関行列は以下の {\displaystyle P \times P } 行列 {\displaystyle R } で表現できます,その {\displaystyle (i,j) } 要素 {\displaystyle r_{ij} } も示します.

(9){\displaystyle \;\;\; R = \frac{1}{N-1} \tilde{X}^T  \tilde{X}  }

(10){\displaystyle \;\;\; r_{ij} = \frac{1}{N-1} \sum_{n=1}^N \tilde{x}_{ni} \tilde{x}_{nj} = \frac{1}{N-1} \sum_{n=1}^N  \left( \frac{ {x}_{ni}^* - \bar{x}_i}{\sigma_{x_i}} \right) \left( \frac{ x_{nj}^* - \bar{x}_j}{\sigma_{x_j}} \right) = r_{ji} }


定義より分散共分散行列と相関行列は半正定値です.また,(8)(10)より {\displaystyle V= V^T, \; R= R^T } でありどちらも実対称行列なのでエルミート行列でもあり,例えば,すべての固有値は実数,相異なる固有値に対する固有ベクトルは直交する,というよく使われるよい性質があります.それらの証明は以下の過去記事にあります.

分散共分散行列(と相関行列)は半正定値であることを証明する - エンジニアを目指す浪人のブログ

エルミート行列のすべての固有値は実数であることの証明をメモする - エンジニアを目指す浪人のブログ

エルミート行列の相異なる固有値に対する固有ベクトルは直交することの証明をメモする - エンジニアを目指す浪人のブログ


以上,データから計算される分散共分散行列と相関行列の定義をメモしました.


参考文献
[1] 京都大学 加納 学 先生のノート http://manabukano.brilliant-future.net/document/text-PCA.pdf
[2] Wikipedia Sample mean and covarianceのページ https://en.wikipedia.org/wiki/Sample_mean_and_covariance