R でベータ多様性を計算する:
Bray-Curtis, vegdist 関数

UB3/informatics/r/diversity_beta

このページの最終更新日: 2024/04/07

  1. 概要: β多様性とは
  2. R vegdist() 関数による β 多様性の計算

広告

概要: β多様性とは

β多様性は、2 つのサンプルや地点間での生物多様性を示す指標である。2 つのサンプルがどれくらい似ているか (または似ていないか) が数値として与えられる。

他にも α多様性および γ多様性があるので、基礎的な内容については以下のサイト内検索から関連ページを参照のこと。


β多様性を表す指数としては、Bray-Curtis 距離Jaccard 距離 などがある。このページでは、R の vegdist() 関数を用いてこれらの距離を算出する方法をまとめる。

R vegdist() 関数による β 多様性の計算

dune データセット

R によるα多様性の計算 と同じく、vegan という パッケージ と、このパッケージに含まれている dune という 組み込みデータセット を用いる (表は dune の一部)。20 行 30 列のデータである。

library(vegan)
data(dune)

Achimill

Agrostol

Airaprae

Alopgeni

Anthodor

Bellpere

1

1

0

0

0

0

0

2

3

0

0

3

0

3

3

0

4

0

7

0

2


行は場所であるが、単に 1 - 20 の番号が割り振ってある。列の Achimill, Agrostol などは種名の略称で、

make.cepnames

を実行すると、この略称を作った関数をみることができる。

計算

vegdist() 関数でβ多様性を計算する。

dis.bc <- vegdist(dune, method = "bray")

とすると、20 個のデータの総当たりで Bray index が表示される。

つまり、input は abundance のみを含むデータフレームである。

method はさまざまな方法が指定可能で、Documentation には "manhattan", "euclidean", "canberra", "bray", "kulczynski", "jaccard", "gower", "altGower", "morisita", "horn", "mountford", "raup" , "binomial", "chao", "cao" or "mahalanobis" が載っている。

データが負の値を含む場合、results may be meaningless because data have negative entries in method “horn” のようなエラーメッセージが表示される。この GitHub ページ によると、Gower, altGower, mahalanobis は負の値も扱えるようである。altGower では上記のエラーメッセージが表示されるが、これは vegdist のエラーのようだ。

結果の表示と保存

上の関数を実行した場合、結果が保存される dis.bc は dist というクラスの下三角行列 になる。

行と列の名前は、1 - 20 の site になり、つまり 1 と 2 の群集がどれくらい似ているか、1 と 3, 1 と 4 ... 19 と 20 という総当たりの比較がデータとして出てくるわけである。

vegdist関数によるベータ多様性の計算

ただし、これを書き出すにはちょっと工夫が必要。

普通に以下のように書き出しを実行すると、Error in as.data.frame.default (x[[i]], optional = TRUE) : cannot coerce class ‘"dist"’ to a data.frame というエラーになる。形を見てわかるとおり、確かにデータフレームとは少し違っている。

write.csv(dis.bc, file = "a.csv")

この dist というクラスはかなり扱いづらいので、csv などに書き出したいのなら、最初から as.matrix としておく (3)。

dis.bc2 <- as.matrix(vegdist(dune, method = "bray"))

こうすると dis.bc2 は対角線に 0 がある対称行列となる。1 - 5 のみを示しておくが、20 x 20 である。これは write.csv などで書き出すことができる。

vegdist関数によるベータ多様性の計算
広告

References

  1. 多様性指数の算出:R備忘録. Link: Last access 2022/05/03.
  2. Vegan turotial. Link: Last access 2022/05/03.
  3. Rによるクラスター分析【ユークリッド距離】Link: Last access 2022/03/21.

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。