- こちらで、多変数の相関係数行列を扱っている
- その延長で三角不等式についてこちらに書いた
- 今日は、相関係数行列によって、因子のベクトルを書き表すことを考える
- 相関行列の要素のうち、変化させられる要素の数はなので、本のベクトル(が次元空間に置かれたときの)相対位置は自由度であることもわかる(はず)
- 行列とし、この行ベクトルが本のベクトルの位置座標とする
- これは、まず、第1ベクトルをと定め、第2ベクトルを、第1軸-第2軸が作る平面上に置くことにして、2つのベクトルのなす角をとなるように置く。次に第3のベクトルには、第3軸の使用を許可し、第1軸-第2軸平面との角をなすように配置し、その上で第3ベクトルの第1軸-第2軸平面への射影と第1軸とのなす角がとなるように置く。次の第4ベクトルは、第4軸の使用を許可し、第1軸-第2軸-第3軸の3次元面との角をなすようにとり、その射影が、第1軸-第2軸平面と…、というように。
- ここで、定数を敢えて用いるのは、式の一般化のため
- 個の単位ベクトルを置きたいところに置いていく、置きながら、正規直交基底を確定していく、というやり方
- 第1ベクトルの座標を定めるのは「不自由」、第2ベクトルを定めるために1変数、第3ベクトルに2変数、…第ベクトルに変数が必要なので、合わせて変数が必要
n<-10
thetas<-runif(n*(n-1)/2)*2*pi
M<-matrix(0,n,n)
M[lower.tri(M)]<-thetas
diag(M)<-pi/2
logM<-log(M)
X<-matrix(0,n,n)
for(i in 1:n){
for(j in 1:i){
X[i,j]<-sin(M[i,i+1-j])
if(j<i){
for(t in 1:(i-j)){
X[i,j]<-X[i,j]*cos(M[i,t])
}
}
}
}
X
image(X%*%t(X))