R
クラスタリング
More than 1 year has passed since last update.

Cheatsheet

action command
CSV読み込み read.csv("~/Downloads/democsv.csv", header = T, row.names = 1)
CSV書き込み read.write("~/Downloads/democsv.csv"
特定の列以外を抽出 useCsv <- csv[, colnames(csv) != "会員ID"]
特定の値を含む行以外を抽出 subset(democsv, !grepl("-", democsv$"利用目的"))
protの文字を小さく par(ps = 6)
fontの指定 par(family="HiraKakuProN-W3")
階層ツリーのprot時、高さそろえる plot(dumm.hc, hang=-1)
無作為に行を抽出 csv[sample(nrow(csv), size=100),]
行のカウント nrow(csv)
列のカウント ncol(csv)
散布図作成(非階層クラスタリング) plot(pam(csv, 4),ask = TRUE)

階層的クラスタリング

以下の手順で階層的クラスタリングと結果の描画を行うことができます。

csv <- read.csv("demo.csv", header=T, row.names=1) # 1行目、1列目をそれぞれヘッダにする
csv.d <- dist(csv, method="single") # 第二引数でmethodを設定できる
csv.hc <- hclust(csv.d) # 階層的クラスタリング
par(family = "HiraKakuProN-W3", ps=6) # 文字化け対策、文字サイズ調整
plot(miniCSV.hc,hang=1, main="タイトル") # 描画

注意

  • read.csv 時、1列目の値がすべてユニークでない場合エラーが出る

距離の求め方

dist の methodで指定できるものとその使い分け

dist(csv, method="euclidean")
method info
euclidean(ユークリッド) 日常で用いる距離で、もっとも一般的なもの
maximum(最長距離) 最長距離の指定
manhattan(マンハッタン) 2乗していないので外れ値の影響を抑えることができる
canberra(キャンベラ) ?
binary(バイナリ) 第一引数がバイナリ時に使用
minkowski(ミンコフスキー) ユークリッド距離を一般化したもの

クラスタリングのアルゴリズム

hclust の methodで指定できるものとその使い分け

hclust(csv.d, method="single")
method info
single 単連結法 (最短距離法):クラスター間で各クラスターに属するOTU間の距離が最短のものをそのクラスターの距離とする.
complete 完全連結法 (最長距離法):クラスター間で各クラスターに属するOTU間の距離が最長のものをそのクラスターの距離とする.
average 群平均法:UPGMA とも言う.各クラスターに属する全OTU間の距離の平均をクラスター間の距離とする.
centroid 重心法:クラスター間の重心間距離からクラスター間距離を導く.別のクラスターとの距離は重心間距離を要素数で重み付けした点から生成する.
median メディアン法:重心法と若干異なり,重心間距離を要素数でウエイトせずに単純に中点から別のクラスターとの距離を生成する.
mcquitty McQuitty法:クラスターAとクラスターBを併合した新クラスターCと別のクラスターDの距離を距離ADおよびBDから決定する.
ward.D Ward法 (最小分散法):クラスター内の OTU 間の距離平方和の増加量が最小になるクラスターを併合させる.R のバージョン3.0.3以前は単に ward のみで指定した.
ward.D2 Ward法 (最小分散法):クラスター内の OTU 間の距離平方和の増加量が最小になるクラスターを併合させる.ward.D は本来の Ward 法の実装ではなく,こっちが本物.ward.D では本来すべき距離の二乗が計算されない.

非階層クラスタリング

plot(pam(csv, 4),ask = TRUE)
  • 4の部分がクラスタ数