R でアルファ多様性を計算する:
シャノンおよびシンプソン指数
UB3/informatics/r/diversity_alpha
このページの最終更新日: 2024/09/30- 概要: α多様性とは
- R による Shannon および Simpson indices の計算
- diversity() 関数: vegan パッケージ
- renyi() 関数
- R による chao1 の計算
広告
概要: α多様性とは
α多様性は、ある地点の生物多様性を示す指標である。他にも β多様性および γ多様性があるので、基礎的な内容については以下のサイト内検索から関連ページを参照のこと。
α多様性を表す指数としては、
なお、Shannon および Simpson indices は 以下の式で定義されている。s は全体の種の数、pi は種 i の個体数が全体の個体数に占める割合である。
Shannon 指数
Simpson 指数
R による Shannon および Simpson indices の計算
diversity 関数
vegan という パッケージ の diversity() 関数で、2 つの指数が同時に計算される (1)。
データ形式は、1 つの行が 1 サンプル (または地点)、各行にそれぞれの種の abundance がある整然データである。すなわち、以下の表のような形。
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 |
これは vegan パッケージに含まれている dune という 組み込みデータセット の一部である。数字はおそらく個体数、Achimill, Agrostol... などは Achillea millefolium、Agrostis stolonifera などの種の名前である。
dune は 20 行 30 列のデータなので、上に表示しているのはごく一部。
多様性は
diversity(dune, "simpson")
diversity(dune) # 指定しないと Shannon が計算される
結果は以下のようにベクターになる。5 個しか示していないが、dune の場合は 20 個のサンプル (20 行に分けて収められている) について全て多様性が計算されるので、全体で 20 個の数値が得られる。
diversity() 関数の可能なオプションを表にしておく。網羅していないので、R Documentation も参照のこと。
index |
shannon, simpson, invsimpson のうちから選ぶ。 |
renyi 関数
renyi という関数を使う方法もあるようである (1)。exp(renyi(dune)) のようにすると、0 が種数、1 がシャノン・ウィナー、2 がシンプソンになると書かれているが、どうも diversity() 関数の結果と一致しない。あとでこの関数について調べて更新。
R による chao1 の計算
chao1 index は、上記の diversity() 関数ではサポートされていない。fossil というパッケージの chao1() 関数で計算できる (参考)。
データフレームをインプットにすると、This data appears to be presence/absence based, but this estimator is for abundance data only. というエラーが出てしまった。abundance データを使っているように思うのだが、なぜか解決できない。
slice と for loop で、1 行ごとにインプットしたら計算できた。
chao1 index は 100 以上の値となり、3 とか 4 ぐらいの Shannon とはだいぶ異なる。
広告
References
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。