サンプルのクラスタリングとマーカーのクラスタリング

  • 沢山のマーカーについて沢山のサンプルで定量的データが取られる
  • サンプルをマーカー次元の空間に配置すると、「のたくった雲」のようになるとする
  • 同様に、マーカーをサンプル次元の空間に配置すると、「のたくった雲」のようになるとする
  • その心は、マーカーが表す遺伝子発現は特定のパターンがあって、サンプルはその限られた発現パターンの位置あたりに存在し、マーカー同士も関連の強いもの、そうでないものでグループ分けされる
    • シグナルそのまま

    • サンプルを3マーカー次元空間に配置

    • マーカーを3サンプル次元空間に配置

    • ヒートマップ

# サンプル数
Ns <- 500
# マーカー数
Nm <- 1000
# サンプルのパターン数(群数)
Ns.pt <- 10
# マーカーのパターン数(群数)
Nm.pt <- 10
# サンプル・マーカーの存在位置を多次元空間酔歩の道として作る
trail <- matrix(rnorm(Ns.pt*Nm.pt),Ns.pt,Nm.pt)
trail <- apply(trail,2,cumsum)
# 3次元分だけ見てみよう
library(rgl)
plot3d(trail[,1:3])
matplot(trail,type="l")
# パターン数(群数)ごとにいくつのサンプル、いくつのマーカーを帰属させるかをランダムに決める
library(MCMCpack)
ps <- rdirichlet(1,rep(1,Ns.pt))
pm <- rdirichlet(1,rep(1,Nm.pt))
ss <- sample(1:Ns.pt,Ns,replace=TRUE,prob=ps)
sm <- sample(1:Nm.pt,Nm,replace=TRUE,prob=pm)
# 行数=サンプル数、列数=マーカー数の行列
M <- trail[ss,sm]
# 少し乱す
M <- jitter(M,1000)
# 実験シグナル
image(M)
# 一部の次元だけ描いてみよう
plot3d(M[,1:3])
plot3d(t(M[1:3,]))
# ヒートマップを描いてみよう
heatmap(M)