Pacotes necessários

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)

Carregar os dados

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

Riqueza de espécies

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

Diversidade de espécies

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

Equitabilidade

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

Série de Hill e perfil de diversidade

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)

Distribuição de abundância

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.

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)

Curva de rarefação

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%.

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)