RによるHeatmapグラフの作成
手順
距離関数Dist()で類似度を求め、hclust()でクラスタリングし、heatmap()のColv,Rowvオプションにdendrogram()を指定して出力する。プログラム例
library(amap) # Heatmapグラフ作成 # # ファイルの読み込み data <- read.table("test.txt", header=TRUE, row.names=1, sep="\t") # # PDFに出力する pdf() # # 距離関数で類似度のアルゴリズムとしてCosine係数を使用する # (method="pearson")は(1 - cosine)と同義である d1<-Dist(data, method="pearson") d2<-Dist(t(data), method="pearson") # # クラスタリングでAverage Linkageを使用する c1<-hclust(d1, method="average") c2<-hclust(d2, method="average") # # Heatmap PDFファイルの出力 heatmap(as.matrix(data), Colv=as.dendrogram(c2),Rowv=as.dendrogram(c1), scale="none", col=cm.colors(256), main="Cosine-Average", margin=c(8,10)) # # デバイスを閉じる dev.off()
関数の主な仕様
距離関数
距離関数にはamapライブラリのDist()と標準のdist()がある。標準のdist()は類似度を指定するmethodオプションにPearson's相関係数とCosine係数が無いので、Dist()を使用した方がよい。また、dist()は結果の距離行列が千倍程度(?)の値になる。- Dist()関数の使用例
Dist()は類似度をmethodオプションとして指定できる。
library(amap) Dist(data,method="peason")
methodオプションの名前はまぎらわしいので気をつけること。
"correlation" : Pearson's相関係数。(1 - peason)の値。 "pearson" : Cosine係数。(1 - cosine)の値。 "euclidean" : ユークリッド距離 "maximum" : 最大距離 "manhattan" : マンハッタン(シティーブロック)距離 "canberra" : キャンベラ距離 "binary" : バイナリー距離
クラスタリング関数
- hclust()関数の使用例
hclust()は階層的手法をmethodオプションとして指定できる。
c1<-hclust(d1, method="average")
"single" : 単連結法 (Single Linkage) "complete" : 完全連結法(Complete Linkage) "average" : 群平均法 (Average Linkage) "ward" : ウォード法(Ward's Minimum Variance)
ヒートマップ関数
- heatmap()関数の使用例
heatmap(as.matrix(data), Colv=as.dendrogram(c2),Rowv=as.dendrogram(c1), scale="none", col=cm.colors(256), main="Cosine-Average", margin=c(8,10))
Colv,Rowvオプションにdendrogram()の返り値を指定する。このオプションの指定が無い場合は、正方行列のデータからしかヒートマップを作成できない。縦、横のサイズが異なるデータにおいては、Colv,Rowvオプションの指定は必須である。
scaleオプションには"none"を指定すること。