Precisaremos dos seguintes pacotes antes das análises. Se não os tiver instalado, use o seguinte código antes. Note que é necessário que a internet esteja ligada.
install.packages("vegan")
install.packages("tidyverse")
install.packages("forcats")
install.packages("iNEXT")
Depois de instalado, carregue os pacotes no seu computador.
library(vegan)
library(tidyverse)
library(forcats)
library(iNEXT)
Carregue os seus dados de comunidades (locais nas linhas e espécies nas colunas) usando o comando read.csv (se estiver em usando windows provavelmente precisará trocar o read.csv por read.csv2). Aqui vamos usar os dados de exmplo do pacote vegan, para que todos possam acompanhar.
# Carregar os dados do pacote vegan.
data("dune")
comunidade <- dune[c(1, 10, 20), ]
# remover especies sem abundancia
comunidade <- comunidade[, colSums(comunidade) > 0]
# Mudar o nome dos locais
rownames(comunidade) <- paste0("Local", 1:nrow(comunidade))
Veja como se a tabela está correta.
comunidade
Achimill | Agrostol | Anthodor | Bellpere | Bromhord | Eleopalu | Elymrepe | Juncarti | Lolipere | Planlanc | Poaprat | Poatriv | Ranuflam | Salirepe | Scorautu | Trifrepe | Vicilath | Bracruta | Callcusp | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Local1 | 1 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 7 | 0 | 4 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Local2 | 4 | 0 | 4 | 2 | 4 | 0 | 0 | 0 | 6 | 3 | 4 | 4 | 0 | 0 | 3 | 6 | 1 | 2 | 0 |
Local3 | 0 | 5 | 0 | 0 | 0 | 4 | 0 | 4 | 0 | 0 | 0 | 0 | 4 | 5 | 2 | 0 | 0 | 4 | 3 |
Para calcular a riqueza de espécies de cada local, podemos usar a função specnumber
do pacote vegan
.
Riqueza <- specnumber(comunidade)
Riqueza
## Local1 Local2 Local3
## 5 12 8
Riqueza total ou riqueza gama, pode ser calculada após somar as colunas da comunidade, ou seja somar a abundância de cada espécie de todos os locais.
Riqueza_total <- specnumber(colSums(comunidade))
Riqueza_total
## [1] 19
Os índices de diversidade de Shannon e Simpson de cada local podem ser calculados usando a função diversity
do pacote vegan
.
# Shannon
Shannon <- diversity(comunidade, index = "shannon")
Shannon
## Local1 Local2 Local3
## 1.440482 2.398613 2.048270
# Simpson
Simpson <- diversity(comunidade, index = "simpson")
Simpson
## Local1 Local2 Local3
## 0.7345679 0.9031909 0.8678460
Da mesma maneira que fizemos para a riqueza, precisamos apenas somar as abundâncias de cada espécies para obter a diversidade total.
# Shannon
Shannon_total <- diversity(colSums(comunidade), index = "shannon")
Shannon_total
## [1] 2.829731
# Simpson
Simpson_total <- diversity(colSums(comunidade), index = "simpson")
Simpson_total
## [1] 0.9338374
A equitabilidade de Pielou pode ser calculada para cada área dividindo o índice de Shannon pelo log da riqueza (que é igual ao Shannon máximo dado o número total de espécies).
J <- Shannon / log(Riqueza)
J
## Local1 Local2 Local3
## 0.8950216 0.9652727 0.9850099
Para a equitabilidade total, basta substituir pelo Shannon e Riqueza total.
J_total <- Shannon_total / log(Riqueza_total)
J_total
## [1] 0.9610424
Podemos utilizar uma série de Hill ao invés dos índices específicos de diversidade. Assim, quanto maior o valor de q (definido em scales
), maior será o peso para a equabilidade. Quanto mais próximo de zero, maior o peso para riqueza (quando q = 0, o valor de Hill é igual a riqueza de espécies).
R <- renyi(comunidade,
hill = TRUE)
R
## 0 0.25 0.5 1 2 4 8 16
## Local1 5 4.766143 4.560165 4.222730 3.767442 3.296660 2.933413 2.738495
## Local2 12 11.711669 11.452629 11.007893 10.329609 9.437708 8.481983 7.801161
## Local3 8 7.932189 7.868853 7.754478 7.566929 7.303063 6.986039 6.661309
## 32 64 Inf
## Local1 2.650977 2.610268 2.571429
## Local2 7.467880 7.313334 7.166667
## Local3 6.430132 6.312350 6.200000
Podemos mapear isso em um gráfico de perfil de diversidade.
g1 <- R %>%
rownames_to_column() %>%
pivot_longer(-rowname) %>%
mutate(name = factor(name, name[1:length(R)])) %>%
ggplot(aes(x = name, y = value, group = rowname,
col = rowname)) +
geom_point(size = 2) +
geom_line(size = 1) +
xlab("Parâmetro de ordem de diversidade (q)") +
ylab("Diversidade") +
labs(col = "Locais") +
theme_bw() +
theme(text = element_text(size = 16))
g1
# Use esse código para salvar sua figura
ggsave("Perfil_de_diversidade.tiff", g1)
Uma maneira de observar a diversidade de espécies é usando um gráfico de distribuição de abundâncias de uma comunidade, como a seguir mostrado a seguir. Note que aqui utilizamos as abundâncias totais das espécies, mas é possível fazer por linha, basta substituir o objeto abund
pela abundância de uma linha como na linha marcada com o #.
abund <- colSums(comunidade)
# Retire a # do início para rodar apenas para o local 1
# mude o número para o local que quiser.
# abund <- comunidade[1, ]
df <- data.frame(sp = colnames(comunidade),
abun = abund)
g2 <- ggplot(df, aes(fct_reorder(sp, -abun),
abun, group = 1)) +
geom_col() +
geom_line(col = "red", linetype = "dashed") +
geom_point(col = "red") +
xlab("Espécies") +
ylab("Abundância") +
theme_bw() +
theme(axis.text.x = element_text(
angle = 45,
hjust = 1,
face = "italic"
))
g2
Distribuição de abundância das espécies de toda a comunidade.
# Use esse código para salvar sua figura
ggsave("Distribuicao_abundancia.tiff", g2)
O código abaixo indica como usar o pacote iNEXT
para extrapolar e interpolar curvas de rarefação visando comparar a riqueza de diferentes locais.
comunidade2 <- t(comunidade)
# Mude o q para 1 para comparar a diversidade de Shannon e para 2 para Simpson
out <- iNEXT(comunidade2, q = 0,
datatype = "abundance",
size = seq(0, 100, length.out=20))
g3 <- ggiNEXT(out, type = 1) +
theme_bw() +
labs(fill = "Áreas") +
xlab("Número de indivíduos") +
ylab("Riqueza de espécies") +
theme(legend.title=element_blank())
g3
Curva de rarefação. A linha sólida representa a interpolação do número de espécies observadas, e a linha tracejada mostra uma extrapolação do que seria esperado dado um aumento no número de indivíduos coletados. A área mais clara representa o intervalo de confiança de 95%.
# Use esse código para salvar sua figura
ggsave("raref.tiff", g3)