順位を併せる方法

  • メモ
  • ここでの2012/05/30分(こちら)での話
  • 多分、こう
    • (1)実験系の順序を変えるとIntegrate rank統計量は変わるのでは?
      • → 変わります
      • → 変わりますが、相関はあります
      • → でも、N個の遺伝子に付与される統計量は(順序は変われど)だいたい同じような値が出ます
    • (2)個々のrank 統計量を単純に足し合わせたり、その最小値で代用したり、その最大値で代用したりするとすると、それとIntegrate rank 統計量の関係は?
      • → いずれとも、なにがしかの関係があります
      • → 一番、相関が強いのは個々の順位のうちの最大値との関係のようです
      • → 特に、実験系が2つのときには、「最大値(2つの実験系でのランクのうちの大きい方)」をとると、それでの遺伝子の多寡の順番と、Integrate rank 統計量の大小の順番は一致します。
par(ask=TRUE)

# 順位統計量の種類数(実験系の数)
# それを振る
ks<-2:4
for(ik in 1:length(ks)){
k<-ks[ik]
# サンプル数(遺伝子数)
N<-1000

# 適当にNxkの順位統計量データを作る
D<-matrix(0,N,k)
for(i in 1:k){
	D[,i]<-sample(1:N)
}

D

# Integrate するときの実験系の順番をいろいろに変える
# そのために順列を使う
library(gtools)
paramorder<-permutations(k,k)

# 順列ごとにIntegrateした順位統計量を格納するオブジェクトを作る
vmat<-matrix(0,N,length(paramorder[,1]))

# すべての順列についてループする
for(ii in 1:length(paramorder[,1])){
	# この順列でのIntegrateした順位統計量を納めるオブジェクト
	# 2012/05/31に理解したと思われる方法でIntegrateした統計量を算出する
	v<-rep(0,N)
	# 遺伝子ごとにループ
	for(i in 1:N){
		# k次元空間のどの領域を「足し合わせ(積分する)」領域とするかを確認する行列
		s<-matrix(0,N,k)
		# 
		pre<-0
		for(j in 1:k){
			# 順列を反映させる
			this.j<-paramorder[ii,j]
			tmps<-which(D[,this.j]>pre & D[,this.j]<=D[i,this.j])
			s[tmps,this.j]<-1
			pre<-D[i,this.j]
		}
		#print(s)
		# 「累積確率分布 cdf」で積分するためにs(積分領域)について
		# 累積値(D(順位統計量そのもの))をかけて、足し合わせる
		v[i]<-sum(s*D)
	}
	# 納める
	vmat[,ii]<-v
	# はじめの2次元分だけ、プロットしてみる
	# 色が濃い点はIntegrate順位が高い点

	plot(D[,1:2],col=gray(0.1+0.8*(v-min(v))/(max(v)-min(v))),pch=15)
	# 個々の順位の単純和とIntegrate rankとの関係を見る
	plot(apply(D,1,sum),v)
	# 個々の順位のうちの最小値とIntegrate rankとの関係を見る
	plot(apply(D,1,min),v)
	# 個々の順位の最大値とIntegrate rankとの関係を見る
	plot(apply(D,1,max),v)

}
# すべての順列からIntegrate 順位を比較して
# 順列が違うと結果が違う
#matplot(vmat,type="l")
plot(as.data.frame(vmat))
# すべての順位からのIntegrate 順位をソートしてプロット
# 多少の違いはあるが大差ない
matplot(apply(vmat,2,sort),type="l")

}