階層的クラスタリング

階層的クラスタリングによるクラスター分析を行う。以下のように、"HM", "HO", "I", IH, "KK", "MO", "SN", "SO"の8つのサンプルが、"a"から"j"の項目についてそれぞれ値を持っている場合のクラスタリングを行う。

クラスタリングデータ

まず、以下の選択範囲で示すように表全体をコピーする。

クラスタリングデータ選択

次に、Rコンソール上で以下のように打ち込むことでオブジェクト"data"にデータを格納する。

1|$data=read.table("clipboard",header=T)

次に、以下のように"dist"にて各サンプル間の距離を計算し、結果を"d"に格納する。

1|$d=dist(data)

次に、"hclust"にてクラスタリングを実行する。"hclust"は"hclust(インプットデータ,クラスタリングのアルゴリズム)"という形式で使用する。"hclust"で使用できるアルゴリズムは以下のものがある。様々なアルゴリズムが使用できるが、そもそもクラスタリングはデータの縮約を目的にした探索的な手法であり、"この場合にはこのアルゴリズムを使う"、といったような決まりごとはない。しかし、生物学分野では群平均法が最も用いられてきたし、ウォード法が最も分類感度が高いので、まずはウォード法を使うべきであるという主張もなくはない。

Clustering algorithmDescription
single単連結法 (最短距離法):クラスター間で各クラスターに属するOTU間の距離が最短のものをそのクラスターの距離とする。
complete完全連結法 (最長距離法):クラスター間で各クラスターに属するOTU間の距離が最長のものをそのクラスターの距離とする。
average群平均法:UPGMAとも言う。各クラスターに属する全OTU間の距離の平均をクラスター間の距離とする。
centroid重心法:クラスター間の重心間距離からクラスター間距離を導く。別のクラスターとの距離は重心間距離を要素数で重み付けした点から生成する。
medianメディアン法:重心法と若干異なり、重心間距離を要素数でウエイトせずに単純に中点から別のクラスターとの距離を生成する。
wardWard法 (最小分散法):クラスター内のOTU間の距離平方和の増加量が最小になるクラスターを併合させる。
mcquittyMcQuitty法:クラスターAとクラスターBを併合した新クラスターCと別のクラスターDの距離を距離ADおよびBDから決定する。

今回はWard法を用いる。以下のコマンドで、Ward法によるクラスタリングを実行し、結果を"clust_w"に格納する。クラスタリングアルゴリズムはダブルクォーテーション (")で囲む。

1|$clust_w=hclust(d,"ward")

得られた結果を以下のコマンドでグラフ化する。

1|$plot(clust_w)

以下のようなデンドログラムが得られる。

クラスタリング結果

これらのサンプルのアルファベット二文字はプロ野球選手のイニシャルで、項目"a"から"j"はその選手のOPSが最大の年度の打撃成績の一部であるが、Ward法を用いると"世界の王"と"ゴジラ松井"、"ミスター三冠王"が近い関係にまとめられるのが分かる。

コマンド"cutree"を用いると、指定したクラスター数で分割した場合の各グループのエントリー (値) を知ることができる。

1|$cutree(clust_w,2)

上の場合では、クラスターの房の数を"2"と指定しているので、グループ1には"KK", "MO", "SN", "I", "IH"が、グループ2には"SO", "HM", "HO"が分類された結果が得られる。

このエントリーをはてなブックマークに追加

Site search

ページのトップへ戻る