分割表の位置・自由度・座標変換2 分割表における正単体と複体

  • 分割表では、正単体として扱われるものが2種類ある
    • (1) ある尺度a_ir_i個のカテゴリを持つ。これらのカテゴリは相互に対等な関係にある。また、すべての標本はr_i個のカテゴリのいずれか1つに属することから、r_i個の頂点を持つ正単体の内部と表層とが、標本分布の存在空間にある
    • (2) k個の尺度のそれぞれが1つの点であると考える。尺度集合Aの相互の制約関係が、R個のセルからなるk次元分割表で表され、この表の周辺度数が与えられた状態というのは、k個の頂点によってつくられた複体として表現できる。このとき、Aの部分集合が正単体をなし、正単体の集合としての複体によって、分割表の制約条件が表現される。
  • 正単体・複体の2段階階層構造としての分割表
    • 分割表の個々の尺度は、そのカテゴリを正単体の頂点として有する
    • 分割表の尺度は、相互の制約関係から、複体を成す
    • したがって、分割表は、尺度を頂点とする複体であって、その尺度は1段階下の階層における正単体となっている、という意味で、正単体・複体による2段階階層構造を作っていることになる
  • 分割表による制約と正単体上に許された点の関係
    • 分割表において、各尺度のカテゴリ比率を固定する、という制約が与えられることがある。これは、正単体・複体の2段階階層構造での尺度の正単体に許された空間のうちの1点のみが許された状態であると言える
    • 分割表において、複数の尺度が作る複合カテゴリの比率を固定する、という制約が与えられることがある。その複合カテゴリを構成する尺度が作る複体の中の正単体の1点が許されている状態であって、このときは、それに参加する個々の尺度の正単体においても、1点のみが許された状態であると言える
  • Rで複体を扱ってみよう
library(sets)
# 要素数
maxN<-3
# 部分集合の数
Nf<-3
# 部分集合の要素数を適当に定める
Ns<-sample(1:maxN,Nf,replace=TRUE)
# 部分集合をおさめるリスト
Faces<-list()
for(i in 1:Nf){
	tmpVs<-sample(Vs,Ns[i])
	Faces[[i]]<-as.set(tmpVs)
}
# 部分集合の包含関係を調べて、Facetsのリストを返す
MakeFacets<-function(Faces){
	Subs<-outer(Faces,Faces,FUN="set_is_proper_subset")
	diag(Subs)<-FALSE
	tmp.facets<-abs(sign(apply(Subs,1,sum))-1)
	Faces2<-list()
	cnt<-1
	for(i in 1:length(tmp.facets)){
		if(tmp.facets[i]==1){
			Faces2[[cnt]]<-Faces[[i]]
			cnt<-cnt+1
		}
	}
	as.set(Faces2)
}

Facets<-MakeFacets(Faces)
Facets
# Facetsをグラフにしてみる(ただし、グラフなので、3以上の要素の関係が塗りつぶされたりするわけではない
library(sets)
library(igraph)
GraphFacets<-function(Facets,plot=FALSE){
	E<-matrix(0,Nv,Nv)
	for(i in Facets){
		tmp<-c()
		for(j in i){
			tmp<-c(tmp,j)
		}
		for(j in 1:(length(tmp)-1)){
			for(k in (j+1):length(tmp)){
				E[tmp[j],tmp[k]]<-E[tmp[k],tmp[j]]<-1
			}
		}
	}
	g<-graph.adjacency(E,mode="undirected")
	if(plot){
		plot(g,layout=layout.circle)
	}
	g
}
GraphFacets(Facets,plot=TRUE)