自由度がペア数

  • こちらで、多変数の相関係数行列を扱っている
  • その延長で三角不等式についてこちらに書いた
  • 今日は、相関係数行列によって、因子のベクトルを書き表すことを考える
    • 相関行列の要素のうち、変化させられる要素の数は\frac{n(n-1)}{2}なので、n本のベクトル(がn次元空間に置かれたときの)相対位置は自由度\frac{n(n-1)}{2}であることもわかる(はず)
  • n\times n行列M=(m_{ij})とし、この行ベクトルがn本のベクトルの位置座標とする
  • m_{ij}=\sin(\theta_{i(i+1-j)})\prod_{t=1}^{i-j} \cos(\theta_{it});j=1,2,...,i
  • m_{ij}=0;j>i
  • \theta_{ii}=\frac{\pi}{2}
  • これは、まず、第1ベクトルを(1,0,0,...,)と定め、第2ベクトルを、第1軸-第2軸が作る平面上に置くことにして、2つのベクトルのなす角を\theta_{21}となるように置く。次に第3のベクトルには、第3軸の使用を許可し、第1軸-第2軸平面と\theta_{31}の角をなすように配置し、その上で第3ベクトルの第1軸-第2軸平面への射影と第1軸とのなす角が\theta_{32}となるように置く。次の第4ベクトルは、第4軸の使用を許可し、第1軸-第2軸-第3軸の3次元面と\theta_{41}の角をなすようにとり、その射影が、第1軸-第2軸平面と…、というように。
    • ここで、定数\theta_{ii}=\frac{\pi}{2}を敢えて用いるのは、式の一般化のため
  • n個の単位ベクトルを置きたいところに置いていく、置きながら、正規直交基底を確定していく、というやり方
  • 第1ベクトルの座標を定めるのは「不自由」、第2ベクトルを定めるために1変数、第3ベクトルに2変数、…第nベクトルにn-1変数が必要なので、合わせて\frac{n(n-1)}{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))