このページでは,R システムを用いた不偏分散共分散行列の求め方と図解で説明する. このページでは,高次元の不偏分散共分散行列に焦点をあてます. 不偏分散共分散行列の意味については, 「R システムを用いた不偏分散共分散行列」の Web ページを見てください.
「R システムを用いた不偏分散共分散行列」の Web ページでは,3次元のベクトルデータを扱っていました.この意味は,次の通りです.
言い換えると,CSV ファイル Book1.csv では,「1行」が1回の観測値ということです.
3列目,4列目,5列目に並んだデータを1つのベクトルとして扱ってきました.「[,3:5]」という書き方を使ってきました. つまり,3列目,4列目,5列目の部分は、3次元空間中の点の集まり,とみなされる.
一方で,この Web ページの手順では,CSV ファイルを読み込んだあと,R の t() 関数を使って,転置させます.
3 つの変数を n 回観測して得られる n 個の標本から構成される長さ n のベクトル に対する不偏分散共分散行列と不偏相関係数行列の定義は次の通り。
R システムの CRAN の URL: https://cran.r-project.org/
Book1.csv をダウンロード (参考: 「外国為替データ(時系列データ)の情報源の紹介」の Web ページ)
以下の説明では、
として説明を続ける.
※ 自前の CSV ファイルを使うときの注意: read.table() 関数を使うので, 属性名は英語になっていること.属性名は,CSV ファイルの第一行目に書いていること.
属性名が CSV ファイルの1行目に書かれていることを確認する.
次のコマンドを実行.
◆ Windows での動作手順例
X <- read.table("C:/R/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
◆ Linux での動作手順例
X <- read.table("/tmp/Book1.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE);
R の read.table のオプション
次のコマンドを実行.
edit(X);
次のコマンドを実行.
str(X)
cov() 関数を使って不偏分散共分散行列を求める
次のコマンドを実行.
covTX <- cov( t( X[,3:5] ) )
※ 実は,covTX は,2834行2834列になっています. 長すぎるので,「covTX」+ Enter ではうまく表示できません.
str(covTX) edit(covTX);
cov( t( X[,3:5] ) )
crossprod( D ) / ( nrow(D) - 1 ); ※ この式は「t( D ) %*% t( D ) / ( nrow(D) - 1 )」と同じ意味
但し、D は次の手順で作る. D は,行列 X の各列の平均値を X の各要素から引き,転置した行列になっている. ここで「転置」になっているのは R のリサイクル規則を使って簡単に作れるから。
D <- t( t( X[,3:5] ) - colMeans( X[,3:5] ) );