- 先日、体系的発現データ解析で遺伝子の重みをつけるにあたって既知パスウェイ情報から作ったグラフの上で酔歩をさせて遺伝子の重みづけを変更する→結果として平滑化状態に収束する、という話があった
- じゃあ、ありきたりな量的計測値があったときに「分布」を作るときにそれが使えないか、という話
- 滑らかな分布を作るには、1、平滑にする、2、密度として高低を揃える、の2処理があるが、そのうちの1、平滑にする、の方だけ
my.rw.density <- function(X,Y,n,r){
D <- as.matrix(dist(X))
D.e <- exp(-D^2)
diag(D.e) <- 0
D.e.2 <- D.e/apply(D.e,1,sum)
diag(D.e.2) <- r
D.e.2 <- D.e.2/apply(D.e.2,1,sum)
eigen.out <- eigen(t(D.e.2))
V <- eigen.out[[2]]
S <- diag(eigen.out[[1]]^n)
U <- solve(V)
M <- V%*%S%*%U
M%*%Y
}
X <- c(rnorm(50),rnorm(500,10,3))
Y <- rep(1,length(X))
tmp.out <- Re(my.rw.density(X,Y,2000,0.3))
d.X <- density(X)
plot(d.X)
points(X,tmp.out/max(tmp.out)*max(d.X[[2]]))
- 2つの峰を離すと、峰の形はよいが、「点の数の場所」で点の数に相当する量を山分けにする仕組みなので、2つのピーク間で点のy座標を対等に比較できていない様子が見える
X <- c(rnorm(50),rnorm(500,100,3))
Y <- rep(1,length(X))
tmp.out <- Re(my.rw.density(X,Y,2000,0.3))
d.X <- density(X)
plot(d.X)
points(X,tmp.out/max(tmp.out)*max(d.X[[2]]))