- 7日目。...一昨昨日、一昨日と昨日(記事はこちらとこちらとこちらとこちらとこちらとこちら)の続き
- NxM表の観測値と期待値との差を成分とする行列は、すべての行の和が0、すべての列の和が0。
- (N-1)x(M-1)次元空間にNxMを配置することになる。
- その座標の出し方(NxM行の長さ(N-1)x(M-1)のベクトルが返る)
- こちらでも
CategoryVector2D<-function(N,M){
CategoryVector<-function(nc=3){
df<-nc-1
d<-df+1
diagval<-1:d
diagval<-sqrt((df+1)/df)*sqrt((df-diagval+1)/(df-diagval+2))
others<--diagval/(df-(0:(d-1)))
m<-matrix(rep(others,df+1),nrow=df+1,byrow=TRUE)
diag(m)<-diagval
m[upper.tri(m)]<-0
as.matrix(m[,1:df])
}
cvN<-CategoryVector(N)
cvM<-CategoryVector(M)
#outer(c(t(cvN)),c(t(cvM)),FUN="*") これでも計算できるけれども
#順序が扱いにくい
m<-matrix(0,N*M,(N-1)*(M-1))
counter1<-1
counter2<-1
for(i in 1:N){
for(j in 1:M){
counter2<-1
for(k in 1:(N-1)){
for(l in 1:(M-1)){
m[counter1,counter2]<-cvN[i,k]*cvM[j,l]
counter2<-counter2+1
}
}
counter1<-counter1+1
}
}
m
}