MỞ ĐẦU

Trong bài viết này chúng ta sẽ cùng nhau tính toán các chỉ số đa dạng sinh học trong sinh thái với phần mềm R. Cụ thể là: Chỉ số đa dạng Shannon (H); Chỉ số đa dạng Simpson (D); Chỉ số cân bằng Evenness (E)

Gọi

Ta có các công thức tính các chỉ số như sau:

Shannon index:

Công thức này được đề xuất bởi Claude Shannon vào năm 19481 \[H=-\sum_{i=1}^{S}p_i \ln p_i\]

Simpson index:

Chỉ số này được giới thiệu vào năm 1949 bởi Edward H. Simpson 2

\[\lambda=\sum_{i=1}^{S}p^2_i\] Khi đó chỉ số đa dạng sinh học Simpson (Simpson’s diversity index (D)) hay còn gọi là Gini–Simpson index3 sẽ là \[D=1-\lambda=1-\sum_{i=1}^{S}p^2_i\] Evenness (\(E_H\))

Chỉ số cân bằng Evenness \(E_H\) được tính bởi: \[E_H=H/H_{max}=\frac{H}{\ln(S)}\]

THỰC HÀNH VỚI R

Package

Để thực hiện việc tính các chỉ số trên, ta sử dụng package vegan4 trong phần mềm R 5

library(vegan)

Tạo dữ liệu

Tạo ngẫu nhiên số lượng cá thể cho 50 loài trong 1 ô mẫu

set.seed(134)
plot1 <- data.frame(individu=floor(runif(50, min=1, max=100)))
rownames(plot1)=paste0("sp",1:50)

Kiểm tra 10 dòng đầu tiên của bảng dữ liệu, với giá trị trong cột individu là số cá thể tương ứng của từng loài.

head(plot1, 10)
##      individu
## sp1        20
## sp2        63
## sp3        88
## sp4        25
## sp5        61
## sp6        17
## sp7        36
## sp8        78
## sp9        10
## sp10       82

Tính tổng số loài

(S <- specnumber(plot1$individu))
## [1] 50

Ta thấy kết quả là 50 loài

Tính chỉ số Shannon

(H <- diversity(plot1, index="shannon"))
## [1] 3.679757

Ta thấy kết quả \(H=3.679\)

Tính chỉ số Gini–Simpson

(D <- diversity(plot1, index="simpson"))
## [1] 0.9717399

Ta thấy kết quả \(D=0.971\)

Tính chỉ số cân bằng Evenness

(E <- H/log(S))
## [1] 0.9406277

Ta có kết quả \(E=0.94\)

Viết hàm

Ta có thể viết 1 hàm trong R để thực hiện việc tính các hàm trên cùng một lúc như sau

b.biodiv.index <- function(df){
    H <- diversity(df, index = "shannon")
    D <- diversity(df, index = "simpson")
    S <- specnumber(df)
    E <- H/log(length(S))
    print(paste("Richness is:", length(S)))
    print(paste("Shannon Index is:", H))
    print(paste("Simpson Index is:", D))
    print(paste("Evenness Index is:", E))
}

Sau đó áp dụng hàm b.biodiv.index cho data plot1 ta sẽ có kết quả của 3 chỉ số trên:

b.biodiv.index(plot1)
## [1] "Richness is: 50"
## [1] "Shannon Index is: 3.6797573941062"
## [1] "Simpson Index is: 0.971739938205576"
## [1] "Evenness Index is: 0.940627749121193"

KẾT LUẬN

Như vậy với việc sử dụng hàm diversity trong gói thư viện vegan và phần mềm R ta có thể tính nhanh các chỉ số đa dạng sinh học Shannon, Simpson và chỉ số cân bằng Evenness.


  1. Shannon, C. E. (1948) A mathematical theory of communication. The Bell System Technical Journal, 27, 379–423 and 623–656

  2. Simpson, E. H. (1949). “Measurement of diversity”. Nature. 163: 688. doi:10.1038/163688a0

  3. Jost, L (2006). “Entropy and diversity”. Oikos. 113: 363–375. doi:10.1111/j.2006.0030-1299.14714.x.

  4. Jari Oksanen, F. Guillaume Blanchet, Michael Friendly, Roeland Kindt, Pierre Legendre, Dan McGlinn, Peter R. Minchin, R. B. O’Hara, Gavin L. Simpson, Peter Solymos, M. Henry H. Stevens, Eduard Szoecs and Helene Wagner (2017). vegan: Community Ecology Package. R package version 2.4-3. https://CRAN.R-project.org/package=vegan

  5. R Core Team (2016). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.