Rで解析 クラスタリング

今回は、生物の群集構造をクラスター解析していく際のコード例。地点間とか、時間ごととか、まあとりあえず複数の群集構造解析に使えそうなデータがあれば、クラスター解析ができる(多分)。

色々やり方はあるはずで、しかもこのコードはあまりスマートなものではないかもしれない(知っている方、助言下さる方がいると大変ありがたいです)。

データセットは、以下の様なものを想定しています。(データセット例は超適当なので気にしないで下さい)

(データセット例)


標準和名\地点名  沖縄  和歌山  東京  宮城 

マルタ                    5

シロザケ                   10

ボラ        15   15    50   30

コボラ       10             

メナダ           20    15   20

クロダイ          50    30   30

ミナミクロダイ   50             

リボンスズメダイ  10             

カワスズメ     70               

ゴマフエダイ    30   10          

ゴマアイゴ     30               

オキナワフグ    20              


繰り返しになりますが、このデータは私がテキトーに考えた、本当に何の意味も無いデータセットです。要は、こんな形式のデータを想定しているということさえ伝わってくれれば良いのです。(PCで表示すると上手くいっていますが、所詮はカクヨムに打ち込んでいるだけなので、スマホだと崩れて表示されてしまうかも。縦軸が種名、横軸が地点名になっています)。数字は、各地点で得られた個体数。


さて、以下はコード例。今回はWard法を使っています(詳しくはググってね)。


library(tidyverse)

library(vegan)

library(cluster)


setwd("適切なパス")


Result = read.csv("読み込みたいファイル名.csv", fileEncoding = "CP932")


DATASET <- Result

# NAを0に変換(NA=空欄、空欄の無いデータセットを使うときは省略可)

DATASET2 = DATASET

DATASET2[is.na(DATASET)] = 0


# クラスタリングに使用する数値データを作成(標準和名列を除外)

numeric_data <- DATASET2[, -1]


# データフレームの行と列を入れ替える

transposed_data <- t(numeric_data)


# クラスタリング

dis.mh = vegdist(transposed_data, method="horn")

dis.bc = vegdist(transposed_data, method="bray")


resmh.ward <- hclust(dis.mh, method="ward.D2")

plot(resmh.ward)


#クラスター数の最適解を推定

asil = numeric(nrow(transposed_data))

for (i in 2:(nrow(transposed_data)-1)){

sil <- silhouette(cutree(resmh.ward, k=i), dis.mh)

asil[i] <- mean(sil[,3])

}

asil

resmh.ward.g <- cutree(resmh.ward, k=which.max(asil))

resmh.ward.g

sil <- silhouette(resmh.ward.g, dis.mh)

rownames(sil) <- row.names(transposed_data)

plot(sil)


# デンドログラムの葉の高さを揃える

plot(resmh.ward, hang = -1)


  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る