生物統計学

クラスター分析に関するRの関数について

dist(変数)
データは数値行列。次のhclustで使う距離行列を計算する。デフォルトはユークリッド距離。
hclust(距離行列, method="average")
methodはクラスタリングの方法で、指定しなければ"complete" (最遠隣法) になる。その他、"single" (最近隣法)、"average" (群平均法)、"centroid" (重心法)、"median" (メディアン法)、"ward.D" (ウォード法) などが指定できる。
RSVGTipsDeviceパッケージ
RのグラフィックスをSVG形式で保存するためのパッケージ。ダウンロード、インストール後にlibrary(RSVGTipsDevice)として読み込む。現在のところ、Windowsバージョンは提供されていないので、linuxもしくはOS Xでのみ利用可能。
devSVGTips(file="ファイル名.svg",toolTipMode=0)
通常なら画面に出力されるグラフィックスを指定したファイルにSVG形式で書き込む。toolTipMode=1にするとウェブブラウザでファイルを開いた時にラベルを表示するためのJavaScriptが同時に保存される。
dev.off()
ファイルを閉じて、出力を画面に戻す。

保存されたSVG形式のファイルはウェブブラウザで開いたり、Inkscape(フリーウェア)やIllustrator(商用)などのアプリケーションを使って編集し、線の太さやフォントを変更できる。

クラスター分析の実行例

> pet<-read.table("petunia.csv",sep=",",header=T)

このデータは欠測値として-1を使っているが、普通に読み込むと数値の-1として扱われる。例えば、B703, B819は結実しなかったので、果実のデータがない。

&gt; pet[37,]
     pl           sp   X1   X3   X4    X5   X6        X7   X8   X9 X10
37 B703 integrifolia 4.24 2.66 2.38 18.74 7.28 0.3885191 16.4 1.32 1.4
         X11   X12  X14  X16  X17      X19   X21  X24   X25  X29 X30 X31
   0.9455087 13.92 2.12 2.52 1.54 2.910401 25.52 9.84 35.58 22.5  -1  -1
   X33  X34
    -1 86.7

そこで、これらをNAで置き換える。

> pet[37,22:24]<-NA
> pet[47,22:24]<-NA

もしくは、最初にデータを読むときに-1を欠測値として扱うように指定する。

> pet<-read.table("petunia.csv",sep=",",header=T,na.strings="-1")

欠測値を含むデータは正しい類似関係を示さない可能性があるので、除外する。もちろん、除外しないものと比較しても良い。

> pet2<-subset(pet,complete.cases(pet)) # 欠測値を含む2ケースを除外
> pet_dist<-dist(pet2[,3:24]) # pl, sp, X34を除いたデータで距離行列を計算、[,3:25]とすればpl, sp以外の全データを使う
> cl_res<-hclust(pet_dist,method="average")
> plot(cl_res,labels=pet2$pl,hang=-1)  # 予定した形のグラフになるか確認
# 図をファイルに保存
> library(RSVGTipsDevice)
> devSVGTips(file="cluster.svg",toolTipMode=0)
> plot(cl_res,labels=pet2$pl,hang=-1) 
> dev.off()