Hiroyuki HANADA (花田 博幸)

Formula for sample (population) covariance matrix (標本共分散行列の公式)

(In Japanese; English to be added)

問題設定

1変量の値の集まり \((x_1, x_2, ..., x_n)\) については、標本分散の計算方法として有名な公式

\[\frac{1}{n} \sum_{i=1}^n x_i^2 - \Bigl[\frac{1}{n} \sum_{i=1}^n x_i \Bigr]^2\]

があるが、これが標本共分散行列だとどうなるだろうか。

結果

まず定義として、持ち合わせているデータを計画行列 (design matrix) \(X\in\mathbb{R}^{n\times d}\) の形式で表す。\(n\) は事例数、\(d\) は1事例あたりの変量の数である。

\(X\) の添字に「:」を付けた場合、その値をすべて集めたものとする(例えば、 \(X_{i:}\) は「 \(X\) の \(i\) 行目のすべての値=\(X\) の \(i\) 番目の事例のすべての変量」、 \(X_{:j}\) は「\(X\) の \(j\) 列目のすべての値=\(X\) の \(j\) 番目の変量を全事例ぶん集めたもの」となる)。

そのうえで、標本共分散行列 \(S\) は以下のように求められる。

\[S = X^\top \Bigl[\frac{1}{n} I_n - \frac{1}{n^2} J_n \Bigr] X\]

ただし、\(I_n\) は \(n\) 次元単位行列、\(J_n\) は「すべての要素が1である\(n\times n\)行列」とする。

なお、もし\(d=1\)の場合(\(X\)が\(n\)次元列ベクトルである場合)、

\(X^\top \Bigl[\frac{1}{n} I_n\Bigr] X = \frac{1}{n} Σ_i x_i^2\)
\(X^\top \Bigl[\frac{1}{n^2} J_n\Bigr] X = \Bigl[\frac{1}{n} Σ_i x_i\Bigr]^2\)

となる、すなわち1変量n事例のデータに対する標本分散と一致することが確認できる。

計算

まず、共分散行列の第\((j, k)\)要素 \(S_{jk}\) (\(1\leq j\leq d\), \(1\leq k\leq d\)) は、共分散の公式より

\(S_{jk} = \frac{1}{n} \sum_{i=1}^n X_{ij} X_{ik} - \frac{1}{n^2} \Bigl[\sum_{i=1}^n X_{ij} \Bigr] \Bigl[\sum_{i=1}^n X_{ik} \Bigr]\)
\(= \frac{1}{n} X_{:j}^\top X_{:k} - \frac{1}{n^2} X_{:j}^\top J_n X_{:k}\)
\(= X_{:j}^\top \Bigl[\frac{1}{n} I_n - \frac{1}{n^2} J_n \Bigr] X_{:k}\)

となる。

また、共分散行列の第\(k\)列は、上記の結果を \(j = 1, 2, ..., d\) として縦に並べればよいのだが、ここで \(j\) は \(X_{:j}^\top\) という行ベクトルを使う形でしか現れていないため、

\[S_{:k} = X^\top \Bigl[\frac{1}{n} I_n - \frac{1}{n^2} J_n \Bigr] X_{:k}\]

とするだけでよい。

同様に、これらを k = 1, 2, …, d として横に並べれば共分散行列 S が得られるが、ここで k は X_{:k} という列ベクトルを使う形でしか現れていないため、

\[S = X^\top \Bigl[\frac{1}{n} I_n - \frac{1}{n^2} J_n \Bigr] X\]

となる。