R: ヒートマップから特定のクラスターを取り出す

UB3/informatics/r/heatmap_cluster_extract

このページの最終更新日: 2022/05/21


  1. ヒートマップの特定のクラスターを取り出す: heatmap.2 関数

広告

ヒートマップの特定のクラスターを取り出すには

下にあるような、値を色の違いで表した図をヒートマップ heatmap という (図は Public domain)。ヒートマップを作る際には、データを並べ替えるクラスタリング clustering も同時に行われることが多い。下の図では、X および Y の 2 つの軸でクラスタリングが行われている。

Rで作成したヒートマップ
広告

研究の過程で、ヒートマップを作成した後に特定のクラスターを取り出したいケースがあった。データ数が少なければ手動でできるのだが、非常に多くて行の文字が見えないような状態だったので、R を使って取り出す必要があった。そのときのメモ。

あまりネットに情報がないが、役に立ったのは このページ。heatmap.2 を使うが、クラスター解析には hclust という別の関数を使う。hclust の結果を row_clust という変数に保存して、それを使って heatmap.2 でヒートマップを書き、また row_clust から直接クラスターを取り出している。

mat というのがデータを含む行列で、スクリプトはこんな感じ。heatmap.2 を使っているので、gplots ライブラリが必要。

row_clust = hclust(dist(mat, method = 'euclidean'), method = 'ward.D2')
# まず変数を row_clust として保存。

out = heatmap.2(mat, Rowv = as.dendrogram(row_clust))
# クラスタリングに row_clust を as.dendrogram で使用している。

これとは別に、plot で直接 dendrogram を作成。クラスターの指定は、cutree を使って k でクラスターの数を指定する。

sort(cutree(row_clust, k=2))

または、h でカットオフ値を指定する。こっちの方が、abline でカットオフの場所を視覚化できるので好みである。

sort(cutree(row_clust, h=70)) abline(h = 70, col = "red2", lty = 2, lwd = 2)

table を使って、各クラスターに含まれる要素の数を見ることができる。

table(sort(cutree(row_clust, h=70)))


広告

References

コメント欄

各ページのコメント欄を復活させました。スパム対策のため、以下の禁止ワードが含まれるコメントは表示されないように設定しています。レイアウトなどは引き続き改善していきます。「管理人への質問」「フォーラム」へのバナーも引き続きご利用下さい。

禁止ワード: http, the, м (ロシア語のフォントです)


このページにコメント

Name:


Comment:



これまでに投稿されたコメント

Date Name Comment