13 R Modulo 4-2
Decomposição da diversidade
RESUMO
Na ecologia de comunidades, a diversidade de espécies é uma medida importante para entender a complexidade e a estrutura de uma comunidade de organismos. Vamos explorar algumas das métricas comuns usadas para avaliar a diversidade de espécies.
Apresentação
Na ecologia de comunidades, a diversidade de espécies é uma medida importante para entender a complexidade e a estrutura de uma comunidade de organismos. Vamos explorar algumas das métricas comuns usadas para avaliar a diversidade de espécies. Essas métricas são usadas para avaliar a diversidade e a estrutura de comunidades ecológicas. Elas podem fornecer informações importantes sobre como as diferentes espécies interagem em um ecossistema e como a diversidade de espécies pode ser afetada por mudanças ambientais ou distúrbios (Magurran 1988).
13.2 Organização básica
dev.off() #apaga os graficos, se houver algum
rm(list=ls(all=TRUE)) #limpa a memória
cat("\014") #limpa o console
Instalando os pacotes necessários para esse módulo.
install.packages("vegan")
install.packages("moments")
install.packages("ggplot2")
install.packages("dplyr")
install.packages("tidyr")
install.packages("tibble")
install.packages("tidyverse") #atente para alguma msg de erro qdo executar essa linha
install.packages("forcats")
install.packages("iNEXT")
install.packages("openxlsx")
install.packages("gt")
Depois de instalados, carregue os pacotes a seguir no seu computador.
library(tibble); library(tidyverse); library(forcats); library(openxlsx); library(Rcpp)
Os códigos acima, são usados para instalar e carregar os pacotes necessários para este módulo. Esses códigos são comandos para instalar pacotes no R. Um pacote é uma coleção de funções, dados e documentação que ampliam as capacidades do R (R CRAN, (R. C. Team 2017)) e RStudio (R. S. Team 2022)). No exemplo acima, o pacote openxlsx
permite ler e escrever arquivos Excel no R. Para instalar um pacote no R, você precisa usar a função install.packages()
.
Depois de instalar um pacote, você precisa carregá-lo na sua sessão R com a função library()
. Por exemplo, para carregar o pacote openxlsx
, você precisa executar a função library(openxlsx)
. Isso irá permitir que você use as funções do pacote na sua sessão R. Você precisa carregar um pacote toda vez que iniciar uma nova sessão R e quiser usar um pacote instalado.
Agora vamos definir o diretório de trabalho. Esse código é usado para obter e definir o diretório de trabalho atual no R. O comando getwd()
retorna o caminho do diretório onde o R está lendo e salvando arquivos. O comando setwd()
muda esse diretório de trabalho para o caminho especificado entre aspas. No seu caso, você deve ajustar o caminho para o seu próprio diretório de trabalho. Lembre de usar a barra “/” entre os diretórios. E não a contra-barra “\”.
getwd()
setwd("C:/Seu/Diretório/De/Trabalho")
13.3 Importando a planilha
Note que o símbolo #
em programação R significa que o texto que vem depois dele é um comentário e não será executado pelo programa. Isso é útil para explicar o código ou deixar anotações.
- Ajuste a primeira linha do código abaixo para refletir “C:/Seu/Diretório/De/Trabalho/Planilha.xlsx”.
- Ajuste o parâmetro sheet = "Sheet1"
para refletir a aba correta do arquivo .xlsx a ser importado.
#dir <- getwd() #criamos um vetor com o diretório de trbalho
#shell.exec(dir) #abre o diretorio de trabalho no Windows Explorer
<- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06p-peixes.xlsx",
ppbio rowNames = T, colNames = T,
sheet = "Sheet1")
str(ppbio)
#View(ppbio)
1:5,1:5] #[1:5,1:5] mostra apenas as linhas e colunas de 1 a 5. ppbio[
## 'data.frame': 23 obs. of 35 variables:
## $ ap-davis : num 0 0 0 0 0 0 0 0 0 0 ...
## $ as-bimac : num 194 19 23 142 5 46 206 16 234 0 ...
## $ as-fasci : num 55 0 1 3 1 0 64 0 7 1 ...
## $ ch-bimac : num 0 0 13 3 0 178 0 0 238 0 ...
## $ ci-ocela : num 0 0 0 0 40 0 0 13 0 0 ...
## $ ci-orien : num 5 0 0 69 9 0 25 24 0 5 ...
## $ co-macro : num 0 0 0 0 0 0 0 0 2 0 ...
## $ co-heter : num 1 0 0 0 0 0 0 0 0 0 ...
## $ cr-menez : num 14 0 0 4 0 0 8 0 0 1 ...
## $ cu-lepid : num 0 0 0 0 0 0 0 0 0 0 ...
## $ cy-gilbe : num 0 0 0 0 0 0 0 0 0 50 ...
## $ ge-brasi : num 3 0 0 0 0 0 1 0 0 3 ...
## $ he-margi : num 0 0 0 1 0 0 0 0 0 1 ...
## $ ho-malab : num 1 5 0 17 10 2 31 4 20 4 ...
## $ hy-pusar : num 9 2 0 43 2 0 11 0 0 3 ...
## $ le-melan : num 0 0 0 0 0 0 0 0 0 0 ...
## $ le-piau : num 3 0 0 1 3 0 2 1 0 0 ...
## $ le-taeni : num 0 0 0 0 0 0 0 0 0 0 ...
## $ mo-costa : num 0 0 0 0 0 0 0 0 0 0 ...
## $ mo-lepid : num 39 0 0 1 0 0 0 0 0 0 ...
## $ or-nilot : num 36 0 0 77 0 0 138 0 0 73 ...
## $ pa-manag : num 0 0 0 0 0 0 0 0 0 0 ...
## $ pimel-sp : num 6 0 0 0 0 0 0 0 0 0 ...
## $ po-retic : num 0 0 0 20 0 0 5 0 0 0 ...
## $ po-vivip : num 47 15 0 221 32 0 326 10 0 28 ...
## $ pr-brevi : num 5 0 1 15 5 2 164 0 0 59 ...
## $ ps-rhomb : num 0 0 0 0 0 0 1 0 0 0 ...
## $ ps-genise: num 0 0 0 0 0 0 1 0 0 0 ...
## $ se-heter : num 40 14 4 60 0 0 38 0 0 3 ...
## $ se-piaba : num 68 0 0 0 0 0 0 0 0 0 ...
## $ se-spilo : num 0 0 0 0 0 0 1 0 0 0 ...
## $ st-noton : num 1 0 0 25 0 0 115 0 0 64 ...
## $ sy-marmo : num 0 0 0 0 1 0 0 0 0 0 ...
## $ te-chalc : num 0 0 0 0 0 0 0 0 0 0 ...
## $ tr-signa : num 18 0 0 15 0 0 7 0 0 141 ...
## ap-davis as-bimac as-fasci ch-bimac ci-ocela
## S-R-CT1 0 194 55 0 0
## S-R-CP1 0 19 0 0 0
## S-A-TA1 0 23 1 13 0
## S-R-CT2 0 142 3 3 0
## S-R-CP2 0 5 1 0 40
Exibindo os dados importados (esses comando são “case-sensitive” ignore.case(object)
).
#View(ppbio)
print(ppbio[1:8,1:8])
1:10,1:10]
ppbio[str(ppbio)
mode(ppbio)
class(ppbio)
13.4 REINÍCIO 1
<- ppbio m_trab
Aqui cria-se um novo objeto do R (m_trab
, ou a matriz de trabalho, para esse momento) que substitui a matriz de dados original, por uma nova matriz que pode ser a matriz relativizada, transformada, transposta, etc. Dessa forma, mantemos a matriz de dados original caso precisemos dela novamente (Veja a Tabela ??).
13.5 Transpor a matriz para trabalhar com as espécies
Vamos transpor a matriz para trabalharmos com as espécies. A função t
transpõe a matriz. Só deve ser usada uma vez, pois se repetida com Ctrl+Enter
continua “girando” a matriz. As espécies como colunas representam uma matriz comunitária e as espécies como linhas representam uma matriz (comunitária) transposta.
<- t(ppbio)
m_trab str(m_trab)
#View(m_trab)
m_trabprint(m_trab[1:5,1:5])
1:5,1:5]
m_trab[str(m_trab)
mode(m_trab)
class(m_trab)
## num [1:35, 1:23] 0 194 55 0 0 5 0 1 14 0 ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:35] "ap-davis" "as-bimac" "as-fasci" "ch-bimac" ...
## ..$ : chr [1:23] "S-R-CT1" "S-R-CP1" "S-A-TA1" "S-R-CT2" ...
## S-R-CT1 S-R-CP1 S-A-TA1 S-R-CT2 S-R-CP2 S-A-TA2 S-R-CT3 S-R-CP3 S-A-TA3
## ap-davis 0 0 0 0 0 0 0 0 0
## as-bimac 194 19 23 142 5 46 206 16 234
## as-fasci 55 0 1 3 1 0 64 0 7
## ch-bimac 0 0 13 3 0 178 0 0 238
## ci-ocela 0 0 0 0 40 0 0 13 0
## ci-orien 5 0 0 69 9 0 25 24 0
## co-macro 0 0 0 0 0 0 0 0 2
## co-heter 1 0 0 0 0 0 0 0 0
## cr-menez 14 0 0 4 0 0 8 0 0
## cu-lepid 0 0 0 0 0 0 0 0 0
## cy-gilbe 0 0 0 0 0 0 0 0 0
## ge-brasi 3 0 0 0 0 0 1 0 0
## he-margi 0 0 0 1 0 0 0 0 0
## ho-malab 1 5 0 17 10 2 31 4 20
## hy-pusar 9 2 0 43 2 0 11 0 0
## le-melan 0 0 0 0 0 0 0 0 0
## le-piau 3 0 0 1 3 0 2 1 0
## le-taeni 0 0 0 0 0 0 0 0 0
## mo-costa 0 0 0 0 0 0 0 0 0
## mo-lepid 39 0 0 1 0 0 0 0 0
## or-nilot 36 0 0 77 0 0 138 0 0
## pa-manag 0 0 0 0 0 0 0 0 0
## pimel-sp 6 0 0 0 0 0 0 0 0
## po-retic 0 0 0 20 0 0 5 0 0
## po-vivip 47 15 0 221 32 0 326 10 0
## pr-brevi 5 0 1 15 5 2 164 0 0
## ps-rhomb 0 0 0 0 0 0 1 0 0
## ps-genise 0 0 0 0 0 0 1 0 0
## se-heter 40 14 4 60 0 0 38 0 0
## se-piaba 68 0 0 0 0 0 0 0 0
## se-spilo 0 0 0 0 0 0 1 0 0
## st-noton 1 0 0 25 0 0 115 0 0
## sy-marmo 0 0 0 0 1 0 0 0 0
## te-chalc 0 0 0 0 0 0 0 0 0
## tr-signa 18 0 0 15 0 0 7 0 0
## S-R-CT4 S-R-CP4 S-A-TA4 B-A-MU1 B-A-GU1 B-R-PC2 B-A-MU2 B-A-GU2 B-R-PC3
## ap-davis 0 0 0 0 0 5 0 0 22
## as-bimac 0 0 394 12 2 44 99 0 75
## as-fasci 1 0 0 0 2 0 0 0 7
## ch-bimac 0 0 273 0 0 0 0 0 0
## ci-ocela 0 11 0 0 0 2 0 0 4
## ci-orien 5 6 0 0 0 0 0 0 0
## co-macro 0 0 0 0 0 0 0 0 0
## co-heter 0 0 0 0 0 0 0 0 0
## cr-menez 1 0 1 0 0 0 0 0 0
## cu-lepid 0 0 0 0 0 0 0 0 21
## cy-gilbe 50 0 0 0 0 0 0 0 0
## ge-brasi 3 0 1 190 7 8 67 23 16
## he-margi 1 0 0 0 0 0 0 0 0
## ho-malab 4 2 9 0 0 0 1 0 2
## hy-pusar 3 0 0 0 0 0 0 0 1
## le-melan 0 0 0 0 0 2 0 0 0
## le-piau 0 2 2 0 0 0 0 0 0
## le-taeni 0 0 0 0 0 1 0 0 0
## mo-costa 0 0 0 0 0 0 0 0 1
## mo-lepid 0 0 0 0 0 0 0 0 0
## or-nilot 73 0 1 6 3 5 1 36 65
## pa-manag 0 0 0 0 11 0 0 102 0
## pimel-sp 0 0 0 0 0 0 0 0 0
## po-retic 0 0 0 0 0 0 10 0 0
## po-vivip 28 80 0 0 0 0 8 0 0
## pr-brevi 59 0 3 0 0 9 0 0 6
## ps-rhomb 0 0 0 0 0 0 0 0 0
## ps-genise 0 0 0 0 0 0 0 0 0
## se-heter 3 3 0 0 0 10 0 0 93
## se-piaba 0 0 0 0 0 0 0 0 0
## se-spilo 0 0 0 0 0 0 0 0 0
## st-noton 64 0 0 0 0 0 0 0 0
## sy-marmo 0 0 0 0 0 0 0 0 0
## te-chalc 0 0 0 0 0 76 0 0 58
## tr-signa 141 0 0 0 0 23 0 0 0
## B-A-MU3 B-A-GU3 B-R-PC4 B-A-MU4 B-A-GU4
## ap-davis 0 0 0 0 0
## as-bimac 511 6 7 235 13
## as-fasci 0 0 17 0 0
## ch-bimac 0 0 0 0 0
## ci-ocela 0 0 0 0 0
## ci-orien 0 0 0 0 0
## co-macro 0 0 0 0 0
## co-heter 0 0 0 0 0
## cr-menez 0 0 0 0 0
## cu-lepid 0 0 0 0 0
## cy-gilbe 0 0 81 0 0
## ge-brasi 145 32 5 509 10
## he-margi 0 0 0 0 0
## ho-malab 0 0 1 0 0
## hy-pusar 0 0 0 0 0
## le-melan 0 0 0 0 0
## le-piau 0 0 1 0 0
## le-taeni 0 0 0 0 0
## mo-costa 0 0 0 0 0
## mo-lepid 0 0 0 0 0
## or-nilot 11 247 9 1 129
## pa-manag 0 250 0 0 190
## pimel-sp 0 0 0 0 0
## po-retic 46 0 0 266 0
## po-vivip 48 0 0 163 0
## pr-brevi 1 0 0 0 0
## ps-rhomb 0 0 0 0 0
## ps-genise 0 0 0 0 0
## se-heter 0 0 31 0 0
## se-piaba 0 0 0 0 0
## se-spilo 0 0 0 0 0
## st-noton 0 0 0 0 0
## sy-marmo 0 0 0 0 0
## te-chalc 0 0 0 0 0
## tr-signa 0 0 4 0 0
## S-R-CT1 S-R-CP1 S-A-TA1 S-R-CT2 S-R-CP2
## ap-davis 0 0 0 0 0
## as-bimac 194 19 23 142 5
## as-fasci 55 0 1 3 1
## ch-bimac 0 0 13 3 0
## ci-ocela 0 0 0 0 40
## S-R-CT1 S-R-CP1 S-A-TA1 S-R-CT2 S-R-CP2
## ap-davis 0 0 0 0 0
## as-bimac 194 19 23 142 5
## as-fasci 55 0 1 3 1
## ch-bimac 0 0 13 3 0
## ci-ocela 0 0 0 0 40
## num [1:35, 1:23] 0 194 55 0 0 5 0 1 14 0 ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:35] "ap-davis" "as-bimac" "as-fasci" "ch-bimac" ...
## ..$ : chr [1:23] "S-R-CT1" "S-R-CP1" "S-A-TA1" "S-R-CT2" ...
## [1] "numeric"
## [1] "matrix" "array"
13.5.1 Informações básicas da matriz
Agora podemos pedir ao R as informações básicas da matriz de trabalho (m_trab
), como o número de observações ou tamanho do vetor (depende do tipo da matriz), número de observações igual a zero, número de observaçõoes maiores que zero e proporção de zeros na matriz.
range(m_trab) #menor e maior valores
length(m_trab) #no. de colunas
ncol(m_trab) #no. de N colunas
nrow(m_trab) #no. de M linhas
sum(lengths(m_trab)) #soma os nos. de colunas
length(as.matrix(m_trab)) #tamanho da matriz m x n
sum(m_trab == 0) #número de observações igual a zero
sum(m_trab > 0) #número de observações maiores que zero
#calculando a proporção de zeros na matriz
<- (sum(m_trab == 0)/length(as.matrix(m_trab)))*100
zeros zeros
## [1] 0 511
## [1] 805
## [1] 23
## [1] 35
## [1] 805
## [1] 805
## [1] 620
## [1] 185
## [1] 77.01863
Tabela que resume as informações geradas (Tabela 13.1).
## Função Resultado
## 1 range 0 - 511
## 2 lenght 805
## 3 n cols 23
## 4 m linhas 35
## 5 Tamanho 805
## 6 Tamanho 805
## 7 Zeros 620
## 8 Nao zeros 185
## 9 % Zeros 77
Função | Resultado |
---|---|
range | 0 - 511 |
lenght | 805 |
n cols | 23 |
m linhas | 35 |
Tamanho | 805 |
Tamanho | 805 |
Zeros | 620 |
Nao zeros | 185 |
% Zeros | 77 |
Ou seja, temos uma matriz de tamanho n x m
igual a 35 objetos por 23 atributos, onde 77.02% dos valores da matriz são iguais a zero!
Agora de conhecimento dessas informações básicas podemos calcular os primeiros descritores da estrutura da comunidade a ser estudada.
13.6 Calculando os descritores da comunidade
Entre outras métricas, calcularemos os seguintes índices:
- Riqueza de Espécies:
- A riqueza de espécies simplesmente se refere ao número total de espécies diferentes em uma comunidade. É uma medida fundamental da diversidade ecológica e reflete a variedade de formas de vida coexistentes em um ecossistema. Comunidades com alta riqueza de espécies têm um grande número de espécies diferentes, enquanto comunidades com baixa riqueza têm menos espécies.
- Índice de Diversidade de Simpson:
- O índice de diversidade de Simpson (ou índice de Simpson) mede a probabilidade de escolher aleatoriamente duas vezes o mesmo indivíduo de uma comunidade. Quanto mais próximo de 1 for o índice de Simpson, menor é a diversidade, indicando que uma ou algumas espécies dominam a comunidade. Quanto mais próximo de 0 for o índice de Simpson, maior é a diversidade, indicando uma comunidade mais equilibrada.
- Índice de Diversidade de Shannon-Wiener:
- O índice de Shannon-Wiener (ou índice de Shannon) leva em consideração a riqueza de espécies e a equitabilidade (distribuição uniforme das abundâncias das espécies). Ele mede a incerteza associada à identificação de uma espécie aleatória em uma comunidade. Quanto maior o índice de Shannon, maior é a diversidade, pois indica uma comunidade com várias espécies bem distribuídas em termos de abundância.
- Equitabilidade:
- A equitabilidade é uma medida que avalia o quão uniformemente as abundâncias das diferentes espécies estão distribuídas em uma comunidade. Quanto maior a equitabilidade, mais igual é a distribuição das abundâncias, o que indica uma comunidade mais equilibrada.
- Abundância:
- A abundância se refere ao número total de indivíduos de uma espécie em uma comunidade. É uma medida simples que indica quantos indivíduos de uma espécie específica estão presentes na comunidade.
- Abundância Relativa:
- A abundância relativa é a proporção ou a fração da abundância de uma espécie em relação à abundância total de todas as espécies na comunidade. É uma medida que ajuda a entender a importância relativa de cada espécie na comunidade.
- Dominância de Espécies:
- A dominância de espécies se refere à presença de uma ou algumas espécies que têm uma abundância significativamente maior do que as outras na comunidade. Comunidades com alta dominância são frequentemente menos diversas, pois algumas espécies dominantes podem suprimir o crescimento de outras.
13.6.1 Variabilidade
Primeiro a variabilidade estatística
#?apply
<- rowSums(m_trab)
Sum #ou
<- apply(m_trab,1,sum)
Sum
Sum## Media
<- rowMeans(m_trab)
Mean
Mean## Ou
<- apply(m_trab,1,mean)
Mean
Mean## Desvio padrão
<- apply(m_trab,1,sd)
DP
DP## Máximo
<- apply(m_trab,1,max)
Max
Max ## Mínimo
<- apply(m_trab,1,min)
Min
Min## Mínimo não-zero
<- apply(m_trab, 1, function(row) {
MinZ <- row[row > 0] # Filter out zero values
non_zero_values if (length(non_zero_values) == 0) {
return(0) # If all values are zero, return 0
else {
} return(min(non_zero_values)) # Return the minimum of non-zero values
}
}) MinZ
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 27 2283 158 705 70 143 2 1
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 28 21 131 1020 2 109 71 2
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 15 1 1 40 838 553 6 347
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 978 270 1 1 296 68 1 205
## sy-marmo te-chalc tr-signa
## 1 134 208
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien
## 1.17391304 99.26086957 6.86956522 30.65217391 3.04347826 6.21739130
## co-macro co-heter cr-menez cu-lepid cy-gilbe ge-brasi
## 0.08695652 0.04347826 1.21739130 0.91304348 5.69565217 44.34782609
## he-margi ho-malab hy-pusar le-melan le-piau le-taeni
## 0.08695652 4.73913043 3.08695652 0.08695652 0.65217391 0.04347826
## mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 0.04347826 1.73913043 36.43478261 24.04347826 0.26086957 15.08695652
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba
## 42.52173913 11.73913043 0.04347826 0.04347826 12.86956522 2.95652174
## se-spilo st-noton sy-marmo te-chalc tr-signa
## 0.04347826 8.91304348 0.04347826 5.82608696 9.04347826
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien
## 1.17391304 99.26086957 6.86956522 30.65217391 3.04347826 6.21739130
## co-macro co-heter cr-menez cu-lepid cy-gilbe ge-brasi
## 0.08695652 0.04347826 1.21739130 0.91304348 5.69565217 44.34782609
## he-margi ho-malab hy-pusar le-melan le-piau le-taeni
## 0.08695652 4.73913043 3.08695652 0.08695652 0.65217391 0.04347826
## mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 0.04347826 1.73913043 36.43478261 24.04347826 0.26086957 15.08695652
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba
## 42.52173913 11.73913043 0.04347826 0.04347826 12.86956522 2.95652174
## se-spilo st-noton sy-marmo te-chalc tr-signa
## 0.04347826 8.91304348 0.04347826 5.82608696 9.04347826
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien
## 4.6578592 138.3362890 17.1074262 80.1774218 8.7826185 15.4330122
## co-macro co-heter cr-menez cu-lepid cy-gilbe ge-brasi
## 0.4170288 0.2085144 3.3297082 4.3788027 19.4409006 112.3159540
## he-margi ho-malab hy-pusar le-melan le-piau le-taeni
## 0.2881041 7.9384988 9.1696785 0.4170288 1.0272955 0.2085144
## mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 0.2085144 8.1252546 61.9793412 65.9989520 1.2510865 55.6620591
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba
## 83.4510578 35.4288242 0.2085144 0.2085144 24.0969714 14.1789802
## se-spilo st-noton sy-marmo te-chalc tr-signa
## 0.2085144 27.0687895 0.2085144 19.4927776 29.4980404
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 22 511 64 273 40 69 2 1
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 14 21 81 509 1 31 43 2
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 3 1 1 39 247 250 6 266
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 326 164 1 1 93 68 1 115
## sy-marmo te-chalc tr-signa
## 1 76 141
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 0 0 0 0 0 0 0 0
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 0 0 0 0 0 0 0 0
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 0 0 0 0 0 0 0 0
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 0 0 0 0 0 0 0 0
## sy-marmo te-chalc tr-signa
## 0 0 0
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 5 2 1 3 2 5 2 1
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 1 21 50 1 1 1 1 2
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 1 1 1 1 1 11 6 5
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 8 1 1 1 3 68 1 1
## sy-marmo te-chalc tr-signa
## 1 58 4
13.6.2 Riqueza
Atente para o fato de que a riqueza será a frequencia de ocorrência na matrix transposta. Converte-se primeiro para matriz binária.
library(vegan)
<- decostand(m_trab,"pa")
bin 1:10, 1:10]
bin[<- apply(bin,1,sum)
S
S#OU
<- specnumber(m_trab)
Riqueza
Riqueza<- specnumber(colSums(m_trab))
Riqueza_total Riqueza_total
## S-R-CT1 S-R-CP1 S-A-TA1 S-R-CT2 S-R-CP2 S-A-TA2 S-R-CT3 S-R-CP3 S-A-TA3
## ap-davis 0 0 0 0 0 0 0 0 0
## as-bimac 1 1 1 1 1 1 1 1 1
## as-fasci 1 0 1 1 1 0 1 0 1
## ch-bimac 0 0 1 1 0 1 0 0 1
## ci-ocela 0 0 0 0 1 0 0 1 0
## ci-orien 1 0 0 1 1 0 1 1 0
## co-macro 0 0 0 0 0 0 0 0 1
## co-heter 1 0 0 0 0 0 0 0 0
## cr-menez 1 0 0 1 0 0 1 0 0
## cu-lepid 0 0 0 0 0 0 0 0 0
## S-R-CT4
## ap-davis 0
## as-bimac 0
## as-fasci 1
## ch-bimac 0
## ci-ocela 0
## ci-orien 1
## co-macro 0
## co-heter 0
## cr-menez 1
## cu-lepid 0
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 2 20 10 5 5 7 1 1
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 5 1 2 15 2 14 7 1
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 8 1 1 2 16 4 1 5
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 11 11 1 1 10 1 1 4
## sy-marmo te-chalc tr-signa
## 1 2 6
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 2 20 10 5 5 7 1 1
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 5 1 2 15 2 14 7 1
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 8 1 1 2 16 4 1 5
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 11 11 1 1 10 1 1 4
## sy-marmo te-chalc tr-signa
## 1 2 6
## [1] 23
13.7 Índices de Diversidade
<- diversity(m_trab, index = "shannon")
H
H<- diversity(m_trab, "simpson")
D
Dis.na(D)] <- 0 #substitui NA ou NaN por 0
D[
D<- H/log(specnumber(m_trab)) #pielou
E
Eis.na(E)] <- 0 #substitui NA ou NaN por 0
E[ E
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 0.4791656 2.3390317 1.4761308 1.1783625 1.1883832 1.4976803 0.0000000 0.0000000
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 1.2205076 0.0000000 0.6648803 1.5668772 0.6931472 2.1167591 1.2492728 0.0000000
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 1.9913464 0.0000000 0.0000000 0.1169068 2.0616073 1.1156765 0.0000000 0.7994250
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 1.8633952 1.2692529 0.0000000 0.0000000 1.8675926 0.0000000 0.0000000 0.9702899
## sy-marmo te-chalc tr-signa
## 0.0000000 0.6840978 1.0985693
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 0.3017833 0.8757456 0.6986060 0.6719783 0.6102041 0.7002787 0.0000000 0.0000000
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 0.6454082 0.0000000 0.4720005 0.6897712 0.5000000 0.8398283 0.5895656 0.0000000
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 0.8533333 0.0000000 0.0000000 0.0487500 0.8361766 0.6431596 0.0000000 0.3904359
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 0.7963416 0.5777229 0.0000000 0.0000000 0.8107195 0.0000000 0.0000000 0.5729447
## sy-marmo te-chalc tr-signa
## 0.0000000 0.4909779 0.5140533
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 0.3017833 0.8757456 0.6986060 0.6719783 0.6102041 0.7002787 0.0000000 0.0000000
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 0.6454082 0.0000000 0.4720005 0.6897712 0.5000000 0.8398283 0.5895656 0.0000000
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 0.8533333 0.0000000 0.0000000 0.0487500 0.8361766 0.6431596 0.0000000 0.3904359
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 0.7963416 0.5777229 0.0000000 0.0000000 0.8107195 0.0000000 0.0000000 0.5729447
## sy-marmo te-chalc tr-signa
## 0.0000000 0.4909779 0.5140533
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 0.6912899 0.7807880 0.6410755 0.7321578 0.7383840 0.7696554 NaN NaN
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 0.7583440 NaN 0.9592195 0.5785997 1.0000000 0.8020891 0.6419992 NaN
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 0.9576352 NaN NaN 0.1686609 0.7435676 0.8047905 NaN 0.4967107
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 0.7770962 0.5293196 NaN NaN 0.8110852 NaN NaN 0.6999162
## sy-marmo te-chalc tr-signa
## NaN 0.9869445 0.6131232
## ap-davis as-bimac as-fasci ch-bimac ci-ocela ci-orien co-macro co-heter
## 0.6912899 0.7807880 0.6410755 0.7321578 0.7383840 0.7696554 0.0000000 0.0000000
## cr-menez cu-lepid cy-gilbe ge-brasi he-margi ho-malab hy-pusar le-melan
## 0.7583440 0.0000000 0.9592195 0.5785997 1.0000000 0.8020891 0.6419992 0.0000000
## le-piau le-taeni mo-costa mo-lepid or-nilot pa-manag pimel-sp po-retic
## 0.9576352 0.0000000 0.0000000 0.1686609 0.7435676 0.8047905 0.0000000 0.4967107
## po-vivip pr-brevi ps-rhomb ps-genise se-heter se-piaba se-spilo st-noton
## 0.7770962 0.5293196 0.0000000 0.0000000 0.8110852 0.0000000 0.0000000 0.6999162
## sy-marmo te-chalc tr-signa
## 0.0000000 0.9869445 0.6131232
13.7.0.0.1 Descritores da estrutura da comunidade: Espécies
Sum, soma; mean, média; DP, desvio padrão da média; Max, maior valor; Min, menor valor; S, riqueza (ou frequência de ocorrência na matriz transposta); E, índice de equitabilidade de Pielou (Pielou 1975); H, índice de diversidade de Shannon; D, índice de diversidade de Simpson (Hurlbert 1971). (Fórmulas aqui)
<- cbind(Sum, Mean, DP, Max, Min, MinZ, S, E, H, D)
Descritores1 <- as.data.frame(Descritores1)
Descritores1
Descritores1#Descritores1 <- Descritores1 %>% rownames_to_column(var="Espécies") #da nome a primeira coluna
<- apply(Descritores1,2,sum)
SomaTotalD
SomaTotalD<- apply(Descritores1,2,mean)
MediaTotalD
MediaTotalD<- apply(Descritores1,2,sd)
DPTotalD
DPTotalD<- cbind(SomaTotalD, MediaTotalD, DPTotalD)
Descritores2 <- as.data.frame(Descritores2)
Descritores2 <- t(Descritores2)
Descritores2
Descritores2<- rbind(Descritores1, Descritores2)
DescritoresFinal
DescritoresFinal<- round (DescritoresFinal, 2)
DescritoresFinal DescritoresFinal
## Sum Mean DP Max Min MinZ S E H
## ap-davis 27 1.17391304 4.6578592 22 0 5 2 0.6912899 0.4791656
## as-bimac 2283 99.26086957 138.3362890 511 0 2 20 0.7807880 2.3390317
## as-fasci 158 6.86956522 17.1074262 64 0 1 10 0.6410755 1.4761308
## ch-bimac 705 30.65217391 80.1774218 273 0 3 5 0.7321578 1.1783625
## ci-ocela 70 3.04347826 8.7826185 40 0 2 5 0.7383840 1.1883832
## ci-orien 143 6.21739130 15.4330122 69 0 5 7 0.7696554 1.4976803
## co-macro 2 0.08695652 0.4170288 2 0 2 1 0.0000000 0.0000000
## co-heter 1 0.04347826 0.2085144 1 0 1 1 0.0000000 0.0000000
## cr-menez 28 1.21739130 3.3297082 14 0 1 5 0.7583440 1.2205076
## cu-lepid 21 0.91304348 4.3788027 21 0 21 1 0.0000000 0.0000000
## cy-gilbe 131 5.69565217 19.4409006 81 0 50 2 0.9592195 0.6648803
## ge-brasi 1020 44.34782609 112.3159540 509 0 1 15 0.5785997 1.5668772
## he-margi 2 0.08695652 0.2881041 1 0 1 2 1.0000000 0.6931472
## ho-malab 109 4.73913043 7.9384988 31 0 1 14 0.8020891 2.1167591
## hy-pusar 71 3.08695652 9.1696785 43 0 1 7 0.6419992 1.2492728
## le-melan 2 0.08695652 0.4170288 2 0 2 1 0.0000000 0.0000000
## le-piau 15 0.65217391 1.0272955 3 0 1 8 0.9576352 1.9913464
## le-taeni 1 0.04347826 0.2085144 1 0 1 1 0.0000000 0.0000000
## mo-costa 1 0.04347826 0.2085144 1 0 1 1 0.0000000 0.0000000
## mo-lepid 40 1.73913043 8.1252546 39 0 1 2 0.1686609 0.1169068
## or-nilot 838 36.43478261 61.9793412 247 0 1 16 0.7435676 2.0616073
## pa-manag 553 24.04347826 65.9989520 250 0 11 4 0.8047905 1.1156765
## pimel-sp 6 0.26086957 1.2510865 6 0 6 1 0.0000000 0.0000000
## po-retic 347 15.08695652 55.6620591 266 0 5 5 0.4967107 0.7994250
## po-vivip 978 42.52173913 83.4510578 326 0 8 11 0.7770962 1.8633952
## pr-brevi 270 11.73913043 35.4288242 164 0 1 11 0.5293196 1.2692529
## ps-rhomb 1 0.04347826 0.2085144 1 0 1 1 0.0000000 0.0000000
## ps-genise 1 0.04347826 0.2085144 1 0 1 1 0.0000000 0.0000000
## se-heter 296 12.86956522 24.0969714 93 0 3 10 0.8110852 1.8675926
## se-piaba 68 2.95652174 14.1789802 68 0 68 1 0.0000000 0.0000000
## se-spilo 1 0.04347826 0.2085144 1 0 1 1 0.0000000 0.0000000
## st-noton 205 8.91304348 27.0687895 115 0 1 4 0.6999162 0.9702899
## sy-marmo 1 0.04347826 0.2085144 1 0 1 1 0.0000000 0.0000000
## te-chalc 134 5.82608696 19.4927776 76 0 58 2 0.9869445 0.6840978
## tr-signa 208 9.04347826 29.4980404 141 0 4 6 0.6131232 1.0985693
## D
## ap-davis 0.3017833
## as-bimac 0.8757456
## as-fasci 0.6986060
## ch-bimac 0.6719783
## ci-ocela 0.6102041
## ci-orien 0.7002787
## co-macro 0.0000000
## co-heter 0.0000000
## cr-menez 0.6454082
## cu-lepid 0.0000000
## cy-gilbe 0.4720005
## ge-brasi 0.6897712
## he-margi 0.5000000
## ho-malab 0.8398283
## hy-pusar 0.5895656
## le-melan 0.0000000
## le-piau 0.8533333
## le-taeni 0.0000000
## mo-costa 0.0000000
## mo-lepid 0.0487500
## or-nilot 0.8361766
## pa-manag 0.6431596
## pimel-sp 0.0000000
## po-retic 0.3904359
## po-vivip 0.7963416
## pr-brevi 0.5777229
## ps-rhomb 0.0000000
## ps-genise 0.0000000
## se-heter 0.8107195
## se-piaba 0.0000000
## se-spilo 0.0000000
## st-noton 0.5729447
## sy-marmo 0.0000000
## te-chalc 0.4909779
## tr-signa 0.5140533
## Sum Mean DP Max Min MinZ S
## 8737.00000 379.86957 850.90936 3484.00000 0.00000 273.00000 185.00000
## E H D
## 16.68245 29.50836 14.12979
## Sum Mean DP Max Min MinZ
## 249.6285714 10.8534161 24.3116961 99.5428571 0.0000000 7.8000000
## S E H D
## 5.2857143 0.4766415 0.8430960 0.4037081
## Sum Mean DP Max Min MinZ
## 454.0688653 19.7421246 34.7372096 138.2715450 0.0000000 16.4169926
## S E H D
## 5.1539330 0.3788778 0.7718261 0.3355708
## Sum Mean DP Max Min MinZ S
## SomaTotalD 8737.0000 379.86957 850.90936 3484.00000 0 273.00000 185.000000
## MediaTotalD 249.6286 10.85342 24.31170 99.54286 0 7.80000 5.285714
## DPTotalD 454.0689 19.74212 34.73721 138.27155 0 16.41699 5.153933
## E H D
## SomaTotalD 16.6824520 29.5083584 14.1297851
## MediaTotalD 0.4766415 0.8430960 0.4037081
## DPTotalD 0.3788778 0.7718261 0.3355708
## Sum Mean DP Max Min MinZ
## ap-davis 27.0000 1.17391304 4.6578592 22.00000 0 5.00000
## as-bimac 2283.0000 99.26086957 138.3362890 511.00000 0 2.00000
## as-fasci 158.0000 6.86956522 17.1074262 64.00000 0 1.00000
## ch-bimac 705.0000 30.65217391 80.1774218 273.00000 0 3.00000
## ci-ocela 70.0000 3.04347826 8.7826185 40.00000 0 2.00000
## ci-orien 143.0000 6.21739130 15.4330122 69.00000 0 5.00000
## co-macro 2.0000 0.08695652 0.4170288 2.00000 0 2.00000
## co-heter 1.0000 0.04347826 0.2085144 1.00000 0 1.00000
## cr-menez 28.0000 1.21739130 3.3297082 14.00000 0 1.00000
## cu-lepid 21.0000 0.91304348 4.3788027 21.00000 0 21.00000
## cy-gilbe 131.0000 5.69565217 19.4409006 81.00000 0 50.00000
## ge-brasi 1020.0000 44.34782609 112.3159540 509.00000 0 1.00000
## he-margi 2.0000 0.08695652 0.2881041 1.00000 0 1.00000
## ho-malab 109.0000 4.73913043 7.9384988 31.00000 0 1.00000
## hy-pusar 71.0000 3.08695652 9.1696785 43.00000 0 1.00000
## le-melan 2.0000 0.08695652 0.4170288 2.00000 0 2.00000
## le-piau 15.0000 0.65217391 1.0272955 3.00000 0 1.00000
## le-taeni 1.0000 0.04347826 0.2085144 1.00000 0 1.00000
## mo-costa 1.0000 0.04347826 0.2085144 1.00000 0 1.00000
## mo-lepid 40.0000 1.73913043 8.1252546 39.00000 0 1.00000
## or-nilot 838.0000 36.43478261 61.9793412 247.00000 0 1.00000
## pa-manag 553.0000 24.04347826 65.9989520 250.00000 0 11.00000
## pimel-sp 6.0000 0.26086957 1.2510865 6.00000 0 6.00000
## po-retic 347.0000 15.08695652 55.6620591 266.00000 0 5.00000
## po-vivip 978.0000 42.52173913 83.4510578 326.00000 0 8.00000
## pr-brevi 270.0000 11.73913043 35.4288242 164.00000 0 1.00000
## ps-rhomb 1.0000 0.04347826 0.2085144 1.00000 0 1.00000
## ps-genise 1.0000 0.04347826 0.2085144 1.00000 0 1.00000
## se-heter 296.0000 12.86956522 24.0969714 93.00000 0 3.00000
## se-piaba 68.0000 2.95652174 14.1789802 68.00000 0 68.00000
## se-spilo 1.0000 0.04347826 0.2085144 1.00000 0 1.00000
## st-noton 205.0000 8.91304348 27.0687895 115.00000 0 1.00000
## sy-marmo 1.0000 0.04347826 0.2085144 1.00000 0 1.00000
## te-chalc 134.0000 5.82608696 19.4927776 76.00000 0 58.00000
## tr-signa 208.0000 9.04347826 29.4980404 141.00000 0 4.00000
## SomaTotalD 8737.0000 379.86956522 850.9093622 3484.00000 0 273.00000
## MediaTotalD 249.6286 10.85341615 24.3116961 99.54286 0 7.80000
## DPTotalD 454.0689 19.74212458 34.7372096 138.27155 0 16.41699
## S E H D
## ap-davis 2.000000 0.6912899 0.4791656 0.3017833
## as-bimac 20.000000 0.7807880 2.3390317 0.8757456
## as-fasci 10.000000 0.6410755 1.4761308 0.6986060
## ch-bimac 5.000000 0.7321578 1.1783625 0.6719783
## ci-ocela 5.000000 0.7383840 1.1883832 0.6102041
## ci-orien 7.000000 0.7696554 1.4976803 0.7002787
## co-macro 1.000000 0.0000000 0.0000000 0.0000000
## co-heter 1.000000 0.0000000 0.0000000 0.0000000
## cr-menez 5.000000 0.7583440 1.2205076 0.6454082
## cu-lepid 1.000000 0.0000000 0.0000000 0.0000000
## cy-gilbe 2.000000 0.9592195 0.6648803 0.4720005
## ge-brasi 15.000000 0.5785997 1.5668772 0.6897712
## he-margi 2.000000 1.0000000 0.6931472 0.5000000
## ho-malab 14.000000 0.8020891 2.1167591 0.8398283
## hy-pusar 7.000000 0.6419992 1.2492728 0.5895656
## le-melan 1.000000 0.0000000 0.0000000 0.0000000
## le-piau 8.000000 0.9576352 1.9913464 0.8533333
## le-taeni 1.000000 0.0000000 0.0000000 0.0000000
## mo-costa 1.000000 0.0000000 0.0000000 0.0000000
## mo-lepid 2.000000 0.1686609 0.1169068 0.0487500
## or-nilot 16.000000 0.7435676 2.0616073 0.8361766
## pa-manag 4.000000 0.8047905 1.1156765 0.6431596
## pimel-sp 1.000000 0.0000000 0.0000000 0.0000000
## po-retic 5.000000 0.4967107 0.7994250 0.3904359
## po-vivip 11.000000 0.7770962 1.8633952 0.7963416
## pr-brevi 11.000000 0.5293196 1.2692529 0.5777229
## ps-rhomb 1.000000 0.0000000 0.0000000 0.0000000
## ps-genise 1.000000 0.0000000 0.0000000 0.0000000
## se-heter 10.000000 0.8110852 1.8675926 0.8107195
## se-piaba 1.000000 0.0000000 0.0000000 0.0000000
## se-spilo 1.000000 0.0000000 0.0000000 0.0000000
## st-noton 4.000000 0.6999162 0.9702899 0.5729447
## sy-marmo 1.000000 0.0000000 0.0000000 0.0000000
## te-chalc 2.000000 0.9869445 0.6840978 0.4909779
## tr-signa 6.000000 0.6131232 1.0985693 0.5140533
## SomaTotalD 185.000000 16.6824520 29.5083584 14.1297851
## MediaTotalD 5.285714 0.4766415 0.8430960 0.4037081
## DPTotalD 5.153933 0.3788778 0.7718261 0.3355708
## Sum Mean DP Max Min MinZ S E H D
## ap-davis 27.00 1.17 4.66 22.00 0 5.00 2.00 0.69 0.48 0.30
## as-bimac 2283.00 99.26 138.34 511.00 0 2.00 20.00 0.78 2.34 0.88
## as-fasci 158.00 6.87 17.11 64.00 0 1.00 10.00 0.64 1.48 0.70
## ch-bimac 705.00 30.65 80.18 273.00 0 3.00 5.00 0.73 1.18 0.67
## ci-ocela 70.00 3.04 8.78 40.00 0 2.00 5.00 0.74 1.19 0.61
## ci-orien 143.00 6.22 15.43 69.00 0 5.00 7.00 0.77 1.50 0.70
## co-macro 2.00 0.09 0.42 2.00 0 2.00 1.00 0.00 0.00 0.00
## co-heter 1.00 0.04 0.21 1.00 0 1.00 1.00 0.00 0.00 0.00
## cr-menez 28.00 1.22 3.33 14.00 0 1.00 5.00 0.76 1.22 0.65
## cu-lepid 21.00 0.91 4.38 21.00 0 21.00 1.00 0.00 0.00 0.00
## cy-gilbe 131.00 5.70 19.44 81.00 0 50.00 2.00 0.96 0.66 0.47
## ge-brasi 1020.00 44.35 112.32 509.00 0 1.00 15.00 0.58 1.57 0.69
## he-margi 2.00 0.09 0.29 1.00 0 1.00 2.00 1.00 0.69 0.50
## ho-malab 109.00 4.74 7.94 31.00 0 1.00 14.00 0.80 2.12 0.84
## hy-pusar 71.00 3.09 9.17 43.00 0 1.00 7.00 0.64 1.25 0.59
## le-melan 2.00 0.09 0.42 2.00 0 2.00 1.00 0.00 0.00 0.00
## le-piau 15.00 0.65 1.03 3.00 0 1.00 8.00 0.96 1.99 0.85
## le-taeni 1.00 0.04 0.21 1.00 0 1.00 1.00 0.00 0.00 0.00
## mo-costa 1.00 0.04 0.21 1.00 0 1.00 1.00 0.00 0.00 0.00
## mo-lepid 40.00 1.74 8.13 39.00 0 1.00 2.00 0.17 0.12 0.05
## or-nilot 838.00 36.43 61.98 247.00 0 1.00 16.00 0.74 2.06 0.84
## pa-manag 553.00 24.04 66.00 250.00 0 11.00 4.00 0.80 1.12 0.64
## pimel-sp 6.00 0.26 1.25 6.00 0 6.00 1.00 0.00 0.00 0.00
## po-retic 347.00 15.09 55.66 266.00 0 5.00 5.00 0.50 0.80 0.39
## po-vivip 978.00 42.52 83.45 326.00 0 8.00 11.00 0.78 1.86 0.80
## pr-brevi 270.00 11.74 35.43 164.00 0 1.00 11.00 0.53 1.27 0.58
## ps-rhomb 1.00 0.04 0.21 1.00 0 1.00 1.00 0.00 0.00 0.00
## ps-genise 1.00 0.04 0.21 1.00 0 1.00 1.00 0.00 0.00 0.00
## se-heter 296.00 12.87 24.10 93.00 0 3.00 10.00 0.81 1.87 0.81
## se-piaba 68.00 2.96 14.18 68.00 0 68.00 1.00 0.00 0.00 0.00
## se-spilo 1.00 0.04 0.21 1.00 0 1.00 1.00 0.00 0.00 0.00
## st-noton 205.00 8.91 27.07 115.00 0 1.00 4.00 0.70 0.97 0.57
## sy-marmo 1.00 0.04 0.21 1.00 0 1.00 1.00 0.00 0.00 0.00
## te-chalc 134.00 5.83 19.49 76.00 0 58.00 2.00 0.99 0.68 0.49
## tr-signa 208.00 9.04 29.50 141.00 0 4.00 6.00 0.61 1.10 0.51
## SomaTotalD 8737.00 379.87 850.91 3484.00 0 273.00 185.00 16.68 29.51 14.13
## MediaTotalD 249.63 10.85 24.31 99.54 0 7.80 5.29 0.48 0.84 0.40
## DPTotalD 454.07 19.74 34.74 138.27 0 16.42 5.15 0.38 0.77 0.34
#Fazendo uma tabela
library(gt)
<- DescritoresFinal
df ncol(df); nrow(df) #no. de N colunas x M linhas
<- cbind(Spp = rownames(df), df)
df gt(df, rowname_col = "Espécie", caption = "Descritores da diversidade por espécie (colunas). Sum, soma; mean, média; DP, desvio padrão da média; Max, maior valor; Min, menor valor; MinZ, menor valor não zero; S, riqueza (ou frequência de ocorrência na matriz transposta); E, índice de equitabilidade de Pielou; H, índice de diversidade de Shannon; D, índice de diversidade de Simpson.")
## [1] 10
## [1] 38
Spp | Sum | Mean | DP | Max | Min | MinZ | S | E | H | D |
---|---|---|---|---|---|---|---|---|---|---|
ap-davis | 27.00 | 1.17 | 4.66 | 22.00 | 0 | 5.00 | 2.00 | 0.69 | 0.48 | 0.30 |
as-bimac | 2283.00 | 99.26 | 138.34 | 511.00 | 0 | 2.00 | 20.00 | 0.78 | 2.34 | 0.88 |
as-fasci | 158.00 | 6.87 | 17.11 | 64.00 | 0 | 1.00 | 10.00 | 0.64 | 1.48 | 0.70 |
ch-bimac | 705.00 | 30.65 | 80.18 | 273.00 | 0 | 3.00 | 5.00 | 0.73 | 1.18 | 0.67 |
ci-ocela | 70.00 | 3.04 | 8.78 | 40.00 | 0 | 2.00 | 5.00 | 0.74 | 1.19 | 0.61 |
ci-orien | 143.00 | 6.22 | 15.43 | 69.00 | 0 | 5.00 | 7.00 | 0.77 | 1.50 | 0.70 |
co-macro | 2.00 | 0.09 | 0.42 | 2.00 | 0 | 2.00 | 1.00 | 0.00 | 0.00 | 0.00 |
co-heter | 1.00 | 0.04 | 0.21 | 1.00 | 0 | 1.00 | 1.00 | 0.00 | 0.00 | 0.00 |
cr-menez | 28.00 | 1.22 | 3.33 | 14.00 | 0 | 1.00 | 5.00 | 0.76 | 1.22 | 0.65 |
cu-lepid | 21.00 | 0.91 | 4.38 | 21.00 | 0 | 21.00 | 1.00 | 0.00 | 0.00 | 0.00 |
cy-gilbe | 131.00 | 5.70 | 19.44 | 81.00 | 0 | 50.00 | 2.00 | 0.96 | 0.66 | 0.47 |
ge-brasi | 1020.00 | 44.35 | 112.32 | 509.00 | 0 | 1.00 | 15.00 | 0.58 | 1.57 | 0.69 |
he-margi | 2.00 | 0.09 | 0.29 | 1.00 | 0 | 1.00 | 2.00 | 1.00 | 0.69 | 0.50 |
ho-malab | 109.00 | 4.74 | 7.94 | 31.00 | 0 | 1.00 | 14.00 | 0.80 | 2.12 | 0.84 |
hy-pusar | 71.00 | 3.09 | 9.17 | 43.00 | 0 | 1.00 | 7.00 | 0.64 | 1.25 | 0.59 |
le-melan | 2.00 | 0.09 | 0.42 | 2.00 | 0 | 2.00 | 1.00 | 0.00 | 0.00 | 0.00 |
le-piau | 15.00 | 0.65 | 1.03 | 3.00 | 0 | 1.00 | 8.00 | 0.96 | 1.99 | 0.85 |
le-taeni | 1.00 | 0.04 | 0.21 | 1.00 | 0 | 1.00 | 1.00 | 0.00 | 0.00 | 0.00 |
mo-costa | 1.00 | 0.04 | 0.21 | 1.00 | 0 | 1.00 | 1.00 | 0.00 | 0.00 | 0.00 |
mo-lepid | 40.00 | 1.74 | 8.13 | 39.00 | 0 | 1.00 | 2.00 | 0.17 | 0.12 | 0.05 |
or-nilot | 838.00 | 36.43 | 61.98 | 247.00 | 0 | 1.00 | 16.00 | 0.74 | 2.06 | 0.84 |
pa-manag | 553.00 | 24.04 | 66.00 | 250.00 | 0 | 11.00 | 4.00 | 0.80 | 1.12 | 0.64 |
pimel-sp | 6.00 | 0.26 | 1.25 | 6.00 | 0 | 6.00 | 1.00 | 0.00 | 0.00 | 0.00 |
po-retic | 347.00 | 15.09 | 55.66 | 266.00 | 0 | 5.00 | 5.00 | 0.50 | 0.80 | 0.39 |
po-vivip | 978.00 | 42.52 | 83.45 | 326.00 | 0 | 8.00 | 11.00 | 0.78 | 1.86 | 0.80 |
pr-brevi | 270.00 | 11.74 | 35.43 | 164.00 | 0 | 1.00 | 11.00 | 0.53 | 1.27 | 0.58 |
ps-rhomb | 1.00 | 0.04 | 0.21 | 1.00 | 0 | 1.00 | 1.00 | 0.00 | 0.00 | 0.00 |
ps-genise | 1.00 | 0.04 | 0.21 | 1.00 | 0 | 1.00 | 1.00 | 0.00 | 0.00 | 0.00 |
se-heter | 296.00 | 12.87 | 24.10 | 93.00 | 0 | 3.00 | 10.00 | 0.81 | 1.87 | 0.81 |
se-piaba | 68.00 | 2.96 | 14.18 | 68.00 | 0 | 68.00 | 1.00 | 0.00 | 0.00 | 0.00 |
se-spilo | 1.00 | 0.04 | 0.21 | 1.00 | 0 | 1.00 | 1.00 | 0.00 | 0.00 | 0.00 |
st-noton | 205.00 | 8.91 | 27.07 | 115.00 | 0 | 1.00 | 4.00 | 0.70 | 0.97 | 0.57 |
sy-marmo | 1.00 | 0.04 | 0.21 | 1.00 | 0 | 1.00 | 1.00 | 0.00 | 0.00 | 0.00 |
te-chalc | 134.00 | 5.83 | 19.49 | 76.00 | 0 | 58.00 | 2.00 | 0.99 | 0.68 | 0.49 |
tr-signa | 208.00 | 9.04 | 29.50 | 141.00 | 0 | 4.00 | 6.00 | 0.61 | 1.10 | 0.51 |
SomaTotalD | 8737.00 | 379.87 | 850.91 | 3484.00 | 0 | 273.00 | 185.00 | 16.68 | 29.51 | 14.13 |
MediaTotalD | 249.63 | 10.85 | 24.31 | 99.54 | 0 | 7.80 | 5.29 | 0.48 | 0.84 | 0.40 |
DPTotalD | 454.07 | 19.74 | 34.74 | 138.27 | 0 | 16.42 | 5.15 | 0.38 | 0.77 | 0.34 |
13.7.0.1 Lidando com células vazias
Em R, NaN
(Not a Number) e NA
(Not Available) são valores especiais que representam dados ausentes ou valores inválidos em um vetor, matriz, data frame ou outra estrutura de dados.
NaN (Not a Number): É usado para representar resultados inválidos em operações matemáticas, como a divisão por zero ou a operação de raiz quadrada de um número negativo.
NA (Not Available): É usado para indicar dados ausentes. Pode ser usado em contextos onde o valor real está ausente ou desconhecido.
Em muitas operações, o NA
é tratado como um valor especial que propagará em outras operações. Isso significa que se uma operação é realizada com um ou mais valores NA
, o resultado geralmente será NA
. Por outro lado, NaN
é um valor específico que indica um resultado matematicamente indefinido ou inválido.
Por exemplo, ao realizar operações em um vetor que contém NA
, o resultado será NA
para qualquer operação que envolva um valor NA
:
<- c(1, 2, NA, 4)
x mean(x) # Resultado será NA porque há um valor NA no vetor
## [1] NA
Por outro lado, NaN
resulta de operações matemáticas inválidas:
0/0 # Resultado será NaN, pois a divisão por zero é indefinida
sqrt(-1) # Resultado será NaN, pois não há raiz quadrada real de um número negativo
## Warning in sqrt(-1): NaNs produced
## [1] NaN
## [1] NaN
Em resumo, enquanto NA
indica dados ausentes ou não disponíveis, NaN
indica resultados de operações matematicamente inválidos.
13.7.0.1.1 Salvando as tabelas criadas em .txt direto no diretório de trabalho
write.table(data.frame("Spp"=rownames(DescritoresFinal),
DescritoresFinal),"DescritoresSPP.txt",
row.names=FALSE,
sep="\t")
write.table(data.frame("Spp"=rownames(NormalidadeFinal),
NormalidadeFinal),"NormalidadeSPP.txt",
row.names=FALSE,
sep="\t")
Agora é necessário voltar à matriz comunitária (antes de ter sido transposta), antes de continuarmos a análise, porque as análises anteriores também precisam ser refeitas com a matriz não transposta. A seguir confere-se se está sendo usada a matriz comunitária com as espécies nas colunas.
Para ver o código dos descritores da estrutura da comunidade para as Unidades Amostrais (UA’s), matriz não transposta, veja Descritores da estrutura da comunidade: UA’s nos apêndices.
m_trab
## S-R-CT1 S-R-CP1 S-A-TA1 S-R-CT2 S-R-CP2 S-A-TA2 S-R-CT3 S-R-CP3 S-A-TA3
## ap-davis 0 0 0 0 0 0 0 0 0
## as-bimac 194 19 23 142 5 46 206 16 234
## as-fasci 55 0 1 3 1 0 64 0 7
## ch-bimac 0 0 13 3 0 178 0 0 238
## ci-ocela 0 0 0 0 40 0 0 13 0
## ci-orien 5 0 0 69 9 0 25 24 0
## co-macro 0 0 0 0 0 0 0 0 2
## co-heter 1 0 0 0 0 0 0 0 0
## cr-menez 14 0 0 4 0 0 8 0 0
## cu-lepid 0 0 0 0 0 0 0 0 0
## cy-gilbe 0 0 0 0 0 0 0 0 0
## ge-brasi 3 0 0 0 0 0 1 0 0
## he-margi 0 0 0 1 0 0 0 0 0
## ho-malab 1 5 0 17 10 2 31 4 20
## hy-pusar 9 2 0 43 2 0 11 0 0
## le-melan 0 0 0 0 0 0 0 0 0
## le-piau 3 0 0 1 3 0 2 1 0
## le-taeni 0 0 0 0 0 0 0 0 0
## mo-costa 0 0 0 0 0 0 0 0 0
## mo-lepid 39 0 0 1 0 0 0 0 0
## or-nilot 36 0 0 77 0 0 138 0 0
## pa-manag 0 0 0 0 0 0 0 0 0
## pimel-sp 6 0 0 0 0 0 0 0 0
## po-retic 0 0 0 20 0 0 5 0 0
## po-vivip 47 15 0 221 32 0 326 10 0
## pr-brevi 5 0 1 15 5 2 164 0 0
## ps-rhomb 0 0 0 0 0 0 1 0 0
## ps-genise 0 0 0 0 0 0 1 0 0
## se-heter 40 14 4 60 0 0 38 0 0
## se-piaba 68 0 0 0 0 0 0 0 0
## se-spilo 0 0 0 0 0 0 1 0 0
## st-noton 1 0 0 25 0 0 115 0 0
## sy-marmo 0 0 0 0 1 0 0 0 0
## te-chalc 0 0 0 0 0 0 0 0 0
## tr-signa 18 0 0 15 0 0 7 0 0
## S-R-CT4 S-R-CP4 S-A-TA4 B-A-MU1 B-A-GU1 B-R-PC2 B-A-MU2 B-A-GU2 B-R-PC3
## ap-davis 0 0 0 0 0 5 0 0 22
## as-bimac 0 0 394 12 2 44 99 0 75
## as-fasci 1 0 0 0 2 0 0 0 7
## ch-bimac 0 0 273 0 0 0 0 0 0
## ci-ocela 0 11 0 0 0 2 0 0 4
## ci-orien 5 6 0 0 0 0 0 0 0
## co-macro 0 0 0 0 0 0 0 0 0
## co-heter 0 0 0 0 0 0 0 0 0
## cr-menez 1 0 1 0 0 0 0 0 0
## cu-lepid 0 0 0 0 0 0 0 0 21
## cy-gilbe 50 0 0 0 0 0 0 0 0
## ge-brasi 3 0 1 190 7 8 67 23 16
## he-margi 1 0 0 0 0 0 0 0 0
## ho-malab 4 2 9 0 0 0 1 0 2
## hy-pusar 3 0 0 0 0 0 0 0 1
## le-melan 0 0 0 0 0 2 0 0 0
## le-piau 0 2 2 0 0 0 0 0 0
## le-taeni 0 0 0 0 0 1 0 0 0
## mo-costa 0 0 0 0 0 0 0 0 1
## mo-lepid 0 0 0 0 0 0 0 0 0
## or-nilot 73 0 1 6 3 5 1 36 65
## pa-manag 0 0 0 0 11 0 0 102 0
## pimel-sp 0 0 0 0 0 0 0 0 0
## po-retic 0 0 0 0 0 0 10 0 0
## po-vivip 28 80 0 0 0 0 8 0 0
## pr-brevi 59 0 3 0 0 9 0 0 6
## ps-rhomb 0 0 0 0 0 0 0 0 0
## ps-genise 0 0 0 0 0 0 0 0 0
## se-heter 3 3 0 0 0 10 0 0 93
## se-piaba 0 0 0 0 0 0 0 0 0
## se-spilo 0 0 0 0 0 0 0 0 0
## st-noton 64 0 0 0 0 0 0 0 0
## sy-marmo 0 0 0 0 0 0 0 0 0
## te-chalc 0 0 0 0 0 76 0 0 58
## tr-signa 141 0 0 0 0 23 0 0 0
## B-A-MU3 B-A-GU3 B-R-PC4 B-A-MU4 B-A-GU4
## ap-davis 0 0 0 0 0
## as-bimac 511 6 7 235 13
## as-fasci 0 0 17 0 0
## ch-bimac 0 0 0 0 0
## ci-ocela 0 0 0 0 0
## ci-orien 0 0 0 0 0
## co-macro 0 0 0 0 0
## co-heter 0 0 0 0 0
## cr-menez 0 0 0 0 0
## cu-lepid 0 0 0 0 0
## cy-gilbe 0 0 81 0 0
## ge-brasi 145 32 5 509 10
## he-margi 0 0 0 0 0
## ho-malab 0 0 1 0 0
## hy-pusar 0 0 0 0 0
## le-melan 0 0 0 0 0
## le-piau 0 0 1 0 0
## le-taeni 0 0 0 0 0
## mo-costa 0 0 0 0 0
## mo-lepid 0 0 0 0 0
## or-nilot 11 247 9 1 129
## pa-manag 0 250 0 0 190
## pimel-sp 0 0 0 0 0
## po-retic 46 0 0 266 0
## po-vivip 48 0 0 163 0
## pr-brevi 1 0 0 0 0
## ps-rhomb 0 0 0 0 0
## ps-genise 0 0 0 0 0
## se-heter 0 0 31 0 0
## se-piaba 0 0 0 0 0
## se-spilo 0 0 0 0 0
## st-noton 0 0 0 0 0
## sy-marmo 0 0 0 0 0
## te-chalc 0 0 0 0 0
## tr-signa 0 0 4 0 0
<- ppbio m_trab
13.8 Espécies compartilhadas
Instalando os pacotes necessários
install.packages("dplyr")
install.packages("eulerr")
install.packages("VennDiagram")
install.packages("ggVennDiagram")
install.packages("ggvenn")
install.packages("gplots")
Carregado a base de dados teste
para ajudar no entendimento.
<- read.table(text = "
teste SP1 SP2 SP3 SP4 SP5 SP6 SP7 SP8 SP9 SP10 SP11 SP12 SP13 SP14 SP15 SP16 SP17 SP18 SP19 SP20
A1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 1 1 0 0
A2 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 0 0
A3 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 0 0
B1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0
B2 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0
B3 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0
C1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 1 1 0 0 1
C2 0 0 1 0 1 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0
C3 0 0 1 0 1 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0
", header = TRUE, row.names = 1)
teste
13.9 REINÍCIO 2
<- ppbio m_trab
13.9.1 Separando a matriz ppbio
em suas partes (S e B ou A e R)
Separa-se S-
e B-
, e atribui-se, respectivamente, aos grupos G1 e G2 e remove-se as colunas zeradas.
<- m_trab[1:12,]
G1 names(which(colSums(G1) == 0)) #all-zero columns
<- G1[, colSums(G1 != 0) > 0]
G1 <- m_trab[13:23,]
G2 names(which(colSums(G2) == 0)) #all-zero columns
<- G2[, colSums(G2 != 0) > 0] G2
13.9.1.1 Mesmo procedimento usando o comando grepl()
do pacote dplyr
Outra forma de separar grupos, mas agpra para R-
e A-
, atribuindo-se, respectivamente, aos grupos G3 e G4 e removendo-se as colunas zeradas.
library(dplyr)
<- filter(m_trab, grepl("R-", row.names(m_trab)))
G3 names(which(colSums(G3) == 0)) #all-zero columns
<- G3[, colSums(G3 != 0) > 0]
G3 <- filter(m_trab, grepl("A-", row.names(m_trab)))
G4 names(which(colSums(G4) == 0)) #all-zero columns
<- G4[, colSums(G4 != 0) > 0] G4
Hierarquia | n*=23 | ||||
---|---|---|---|---|---|
Área | |||||
S- | Ambiente | Ponto | Coleta | Data | |
B- | R- | CT | 1 | 01-04-2006 | |
A- | CP | 2 | 26-06-2006 | ||
TA | 3 | 22-09-2006 | |||
MU | 4 | 17-12-2006 | |||
GU | |||||
PC | |||||
2 | x 2 | x 6 | x 4 | np**= 96 |
13.10 Taxa compartilhados pelas duas bases de dados
13.10.1 Bases de dados em arquivos diferentes B
e S
Nos códigos abaixo, a função intersect()
é usada para se obter os nomes de colunas em comum entre fixo
e entorno
, que são guardados em um vetor. Esses vetores são repassados nos outros argumentos subsequentes. O propósito dos argumentos setdiff()
e \<- 0
não é preencher células vazias com zeros, mas adicionar novas colunas em cada data frame com nomes de colunas que estão presentes em um data frame mas não em outro. Se uma coluna está faltando em um data frame, ela será adicionada aquele data frame com o termo NA
ou NULL
. Para substituir os valores rotulados de NA
ou NULL
usa-se a função merged[is.na(merged)] <- 0
. Ver Apêndices.
<- intersect(names(G1), names(G2)) #get the common column names
shared_spp
shared_spp<- setdiff(names(G1), names(G2))
G1_only
G1_only<- setdiff(names(G2), names(G1))
G2_only
G2_only<- length(shared_spp) + length(G1_only) + length(G2_only)
Riqueza Riqueza
Criando um data.frame
com todas as espécies compartilhadas e exclusivas.
library(tidyverse)
# Create a data frame with all species
<- data.frame(
all_species type = c(rep("Shared", length(shared_spp)),
rep("G1_only", length(G1_only)),
rep("G2_only", length(G2_only))),
species = c(shared_spp, G1_only, G2_only)
)# Create a table using the `table()` function
<- table(all_species$type, all_species$species)
species_table
# Convert the table to a data frame and format it
<- as.data.frame.matrix(species_table)
species_table_df rownames(species_table_df) <- c("G1_only", "G2_only", "Shared")
<- t(species_table_df[, order(colnames(species_table_df))])
species_table_df <- as.data.frame(species_table_df)
species_table_df
species_table_df# Ordenando pelo nome da coluna
<- rownames_to_column(species_table_df, var = "Espécies")
species_table_df <- species_table_df[order(species_table_df$G1_only, species_table_df$G2_only, species_table_df$Shared, decreasing = TRUE),]
species_table_df library(gt)
gt(species_table_df)
13.11 REINÍCIO 3
<- ppbio m_bruta
Aqui cria-se o vertor da matriz bruta a partir da base de dados depois de feitos os ajustes necessários.
13.12 Criando uma matriz de médias
#Inserindo coluna para agrupamentos
ncol(m_bruta); nrow(m_bruta) #no. de N colunas x M linhas
<- cbind(Grupos = rownames(m_bruta), m_bruta)
m_bruta_g
###Mudando nomes de linhas, ajuste em BB-EN
#m_bruta_g$Grupos[m_bruta_g$Grupos == "EN11"] <- "BE11"
#m_bruta_g$Grupos[m_bruta_g$Grupos == "EN14"] <- "BE14"
#m_bruta_g$Grupos[m_bruta_g$Grupos == "EN15"] <- "BE15"
###
<- substr(m_bruta_g[, 1], 1,1)
agrup1
agrup1<- m_bruta_g %>% mutate(Grupos=c(agrup1))
m_bruta_g
#m_avg_part <- aggregate(m_bruta_g[, 2:3], list(m_bruta_g$Grupos), mean)
<- m_bruta_g %>%
m_avg group_by(Grupos) %>%
summarise(across(.cols = everything(), ~ mean(.x, na.rm = TRUE)))
#m_avg <- m_bruta_g %>%
# group_by(Grupos) %>%
# summarise(across(.cols = everything(), list(mean = mean, sd = sd)))
#?across
#Primeira coluna para nomes das linhas
<- as.data.frame(m_avg)
m_avg class(m_avg)
rownames(m_avg) <- m_avg[,1]
1] <- NULL
m_avg[,
m_avg#Salvando a matriz
write.table(m_avg,
"m_avgcsv.csv",
append = F,
quote = TRUE,
sep = ";", dec = ",",
row.names = T)
<- read.csv("m_avgcsv.csv",
m_avg1_csv sep = ";", dec = ",",
header = T,
row.names = 1,
na.strings = NA)
13.13 Análise de Espécies Compartilhadas: Em arquivos diferentes
#Espécies compartilhadas
<- intersect(names(G1), names(G2)) #get the common column names
shared_spp1
shared_spp1<- setdiff(names(G1), names(G2))
G1_only
G1_only<- setdiff(names(G2), names(G1))
G2_only
G2_only<- length(shared_spp1) + length(G1_only) + length(G2_only)
Riqueza Riqueza
<- intersect(names(G3), names(G4))
shared_spp2
shared_spp2<- setdiff(names(G3), names(G4))
G3_only
G3_only<- setdiff(names(G4), names(G3))
G4_only
G4_only<- length(shared_spp2) + length(G3_only) + length(G4_only)
Riqueza Riqueza
13.14 Bases de dados no mesmo arquivo ppbio
Pode-se usar a matriz teste.xlsx
para testar e verificar os resultados dos comandos em comparação com as matrizes reais. O comando fix()
permite editar uma matriz. A matriz de teste tem 9 linhas e 20 colunas, com os nomes A1, A2, A3, B1, B2, B3, C1, C2, C3 nas linhas e SP1, SP2, SP3, SP4, SP5, SP6, SP7, SP8, SP9, SP10, SP11, SP12, SP13, SP14, SP15, SP16, SP17, SP18, SP19, SP20 como os nomes das colunas. Códigos baseados nas letras A, B e C, portanto, se referem a matriz de teste.
A seguir separamos a matriz em suas partes.
<- (teste)
data
datalibrary(dplyr)
<- filter(data, grepl("A", row.names(data)))
A names(which(colSums(A) == 0)) #all-zero columns
<- A[, colSums(A != 0) > 0]
A <- filter(data, grepl("B", row.names(data)))
B names(which(colSums(B) == 0)) #all-zero columns
<- B[, colSums(B != 0) > 0]
B <- filter(data, grepl("C", row.names(data)))
C names(which(colSums(C) == 0)) #all-zero columns
<- C[, colSums(C != 0) > 0] C
13.16 Encontrando espécies exclusivas
13.16.1 Escolhendo as LINHAS OU GRUPOS para comparar
# Get the row indices where "A" occurs
rownames(data)
<- grep("S-", rownames(data))
rows #rows <- grep("B-", rownames(data))
#rows <- c(1:36)
rows
13.16.1.1 Espécies exclusivas que ocorrem em 1 LINHA E OUTRA, OU EM 1 GRUPO E OUTRO (#EM TESTE)
Aqui procuramos espécies que ocorrem em todas as linhas do grupo definido pelo vetor rows
no chunk anterior rows
# Initialize an empty vector to store species exclusive to 'A' rows
<- character(0)
species_only_in # Iterate over each column
for (col in colnames(data)) {
# Check if the species occurs only in 'A' rows
if (all(data[rows, col] != 0) && !any(data[-rows, col] != 0)) {
<- c(species_only_in, col)
species_only_in
}
}# Print species that only occur in 'A' rows
print(species_only_in)
data
13.17 Espécies exclusivas para 1 LINHA OU 1 GRUPO - Baseado na soma dos grupos (#FUNCIONA)
# Get the row indices where 'A' occurs
rows# Calculate the sum of occurrences of each species in 'A' rows
<- colSums(data[rows, ])
sum_of
sum_of# Initialize an empty vector to store species exclusive to 'A' rows
<- character(0)
species_only_in # Iterate over each column
for (col in colnames(data)) {
# Check if the species occurs only in 'A' rows
if (sum(data[rows, col]) == sum_of[col] && !any(data[-rows, col] != 0)) {
<- c(species_only_in, col)
species_only_in
}
}# Print species that only occur in 'A' rows
print(species_only_in)
S_only
data rows
13.18 Espécies exclusivas para 2 LINHAS OU 2 GRUPOs - Baseado na soma dos grupos (#FUNCIONA)
# Get the row indices where 'A' occurs
<- grep("S-", rownames(data))
rows <- grep("B-", rownames(data))
rows2 #rows <- as.vector(rbind(c(rows, rows2)))
rows
# Calculate the sum of occurrences of each species in 'A' rows
<- colSums(data[rows, ])
sum_of
sum_of# Initialize an empty vector to store species exclusive to 'A' rows
<- character(0)
species_only_in # Iterate over each column
for (col in colnames(data)) {
# Check if the species occurs only in 'A' rows
if (sum(data[rows, col]) == sum_of[col] && !any(data[-rows, col] != 0)) {
<- c(species_only_in, col)
species_only_in
}
}# Print species that only occur in 'A' rows
print(species_only_in)
S_only
data
rowsidentical(S_only, species_only_in)
intersect(S_only, species_only_in) #shared column names
setdiff(S_only, species_only_in) #only in 1st vector
length(intersect(S_only, species_only_in)) #how many
13.19 Encontrando espécies compartilhadas ENTRE DOIS (OU MAIS) GRUPOS
Encontra espécies que são compartilhadas (ocorrem em TODAS AS LINHAS) dentro do grupo analisado. Mas, não significa que elas estejam apenas nestas linhas. A função any()
indica que QUALQUER linha em comum entre duas colunas faz com que elas tenha esses colunas compartilhadas. Já a função all()
indica que, para duas colunas terem linhas compartilhadas os grupos das colunas tem que compartilhar TODAS as suas linhas. Uma análise sobre esse loop
.
Adicionamos && any(data[rows_G3, col] != 0)
para um terceiro grupo e assim sucessivamente.
# Get the rows corresponding to A and B (and C)
<- grep("S-", rownames(data))
rows_G1 <- grep("B-", rownames(data))
rows_G2 <- grep("R-", rownames(data))
rows_G3 <- grep("A-", rownames(data))
rows_G4 #rows <- as.vector(cbind(c(rows_G1, rows_G2, rows_G3, rows_G4)))
# Initialize an empty vector to store species that A and B have in common
<- character(0)
species_in # Iterate over each column
for (col in colnames(data)) {
# Check if the species has at least one non-zero value in both A and B rows
if (any(data[rows_G1, col] != 0) && any(data[rows_G2, col] != 0)) {
<- c(species_in, col)
species_in
}
}# Print species that A and B have in common
print(species_in)
shared_spp data
Uma análise feita pelo ChatGPT sobre o loop
“for…{…if{…}}” acima e os outros anteriores é apresentada aqui
13.20 Diagrama de Venn
Primeiro é necessário criar uma matriz binária para os valores das colunas nas linhas. Isso é feito a seguir.
library("gt")
<- as.data.frame(t(m_avg))
m_venn
m_venngt(round(m_venn, 2), rownames_to_stub = TRUE)
!=0] <- 1 #matriz binária m_venn[m_venn
## B S
## ap-davis 2.45454545 0.00000000
## as-bimac 91.27272727 106.58333333
## as-fasci 2.36363636 11.00000000
## ch-bimac 0.00000000 58.75000000
## ci-ocela 0.54545455 5.33333333
## ci-orien 0.00000000 11.91666667
## co-macro 0.00000000 0.16666667
## co-heter 0.00000000 0.08333333
## cr-menez 0.00000000 2.33333333
## cu-lepid 1.90909091 0.00000000
## cy-gilbe 7.36363636 4.16666667
## ge-brasi 92.00000000 0.66666667
## he-margi 0.00000000 0.16666667
## ho-malab 0.36363636 8.75000000
## hy-pusar 0.09090909 5.83333333
## le-melan 0.18181818 0.00000000
## le-piau 0.09090909 1.16666667
## le-taeni 0.09090909 0.00000000
## mo-costa 0.09090909 0.00000000
## mo-lepid 0.00000000 3.33333333
## or-nilot 46.63636364 27.08333333
## pa-manag 50.27272727 0.00000000
## pimel-sp 0.00000000 0.50000000
## po-retic 29.27272727 2.08333333
## po-vivip 19.90909091 63.25000000
## pr-brevi 1.45454545 21.16666667
## ps-rhomb 0.00000000 0.08333333
## ps-genise 0.00000000 0.08333333
## se-heter 12.18181818 13.50000000
## se-piaba 0.00000000 5.66666667
## se-spilo 0.00000000 0.08333333
## st-noton 0.00000000 17.08333333
## sy-marmo 0.00000000 0.08333333
## te-chalc 12.18181818 0.00000000
## tr-signa 2.45454545 15.08333333
B | S | |
---|---|---|
ap-davis | 2.45 | 0.00 |
as-bimac | 91.27 | 106.58 |
as-fasci | 2.36 | 11.00 |
ch-bimac | 0.00 | 58.75 |
ci-ocela | 0.55 | 5.33 |
ci-orien | 0.00 | 11.92 |
co-macro | 0.00 | 0.17 |
co-heter | 0.00 | 0.08 |
cr-menez | 0.00 | 2.33 |
cu-lepid | 1.91 | 0.00 |
cy-gilbe | 7.36 | 4.17 |
ge-brasi | 92.00 | 0.67 |
he-margi | 0.00 | 0.17 |
ho-malab | 0.36 | 8.75 |
hy-pusar | 0.09 | 5.83 |
le-melan | 0.18 | 0.00 |
le-piau | 0.09 | 1.17 |
le-taeni | 0.09 | 0.00 |
mo-costa | 0.09 | 0.00 |
mo-lepid | 0.00 | 3.33 |
or-nilot | 46.64 | 27.08 |
pa-manag | 50.27 | 0.00 |
pimel-sp | 0.00 | 0.50 |
po-retic | 29.27 | 2.08 |
po-vivip | 19.91 | 63.25 |
pr-brevi | 1.45 | 21.17 |
ps-rhomb | 0.00 | 0.08 |
ps-genise | 0.00 | 0.08 |
se-heter | 12.18 | 13.50 |
se-piaba | 0.00 | 5.67 |
se-spilo | 0.00 | 0.08 |
st-noton | 0.00 | 17.08 |
sy-marmo | 0.00 | 0.08 |
te-chalc | 12.18 | 0.00 |
tr-signa | 2.45 | 15.08 |
13.21 Usando o pacote eulerr
library("eulerr")
## Warning: package 'eulerr' was built under R version 4.3.3
## Registered S3 method overwritten by 'eulerr':
## method from
## plot.venn gplots
##
## Attaching package: 'eulerr'
## The following object is masked from 'package:gplots':
##
## venn
#set.seed() #this seed changes the orientation of the sets
plot(euler(m_venn), counts = TRUE, fontface = 1)
13.22 Usando o pacote VennDiagram
# Load required libraries
library(VennDiagram)
## Warning: package 'VennDiagram' was built under R version 4.3.3
## Carregando pacotes exigidos: grid
## Carregando pacotes exigidos: futile.logger
## Warning: package 'futile.logger' was built under R version 4.3.3
##
## Attaching package: 'VennDiagram'
## The following object is masked from 'package:mdatools':
##
## ellipse
## The following object is masked from 'package:car':
##
## ellipse
## The following object is masked from 'package:ggpubr':
##
## rotate
library(ggvenn)
## Warning: package 'ggvenn' was built under R version 4.3.3
<- nrow(subset(m_venn, S==1))
G1 <- nrow(subset(m_venn, B==1))
G2 #G3 <- nrow(subset(m_venn, R==1))
#G4 <- nrow(subset(m_venn, A==1))
<- nrow(subset(m_venn, G1==1 & G2==1))
G1_G2 #G3_G4 <- nrow(subset(m_venn, G3==1 & G4==1))
grid.newpage()
draw.single.venn(area = G1, category = "G1")
grid.newpage()
draw.single.venn(G1, category = "G1",
lty = "blank",
fill = "cornflower blue",
alpha = 0.5)
##lty - outline of cirlces, ## fill - colour, ## alpha - colour transparency
grid.newpage()
draw.pairwise.venn(G1, G2, G1_G2,
category = c("G1","G2"))
grid.newpage()
draw.pairwise.venn(G1, G2, G1_G2,
category = c("G1","G2"),
lty = rep("blank",2),
fill = c("light blue", "pink"),
alpha = rep(0.5,2),
cat.pos = c(0,0),
cat.dist = rep(0.025,2))
## cat.pos - position of category titles, represented by degree from the
## middle of the circle
## cat.dist - distance of the category titles from the edge of the circle
grid.newpage()
draw.pairwise.venn(G1, G2, G1_G2,
category = c("G1", "G2"),
lty = rep("blank",2),
fill = c("light blue", "pink"),
alpha = rep(0.5, 2),
cat.pos = c(0,0),
cat.dist = rep(0.025, 2),
scaled = FALSE)
## scaled - TRUE for scaled or FALSE for unscaled cirlces
grid.newpage() #<--
draw.pairwise.venn(area1 = G1, area2 = G2, cross.area = 0,
category = c("G1","G2"),
lty = rep("blank",2),
fill = c("light blue", "green"),
alpha = rep(0.5, 2),
cat.pos = c(0, 180),
euler.d = TRUE, sep.dist = 0.03,
rotation.degree = 45)
## euler.d - TRUE for movable circles; FALSE for unmovable circles. Must be
## TRUE to have space between non-overlapping circles.
## sep.dist - distance between circles
## rotation.degree - degrees the diagram is rotated
#grid.newpage()
#draw.triple.venn(area1 = BB, area2 = CA, area3 = EN,
# n12 = BB_CA, n23 = CA_EN, n13 = BB_EN,
# n123 = BB_CA_EN,
# category = c("Rio Barro Branco", #"Rio Caiana", "Entorno da REBio"),
# lty = "blank",
# fill = c("skyblue", "pink1", #"mediumorchid"),
# scaled = TRUE)
#grid.newpage()
#draw.quad.venn(area1 = BB, area2 = CA, area3 = EN, #area4 = RE,
# n12 = BB_CA, n23 = CA_EN, n13 = BB_EN,
# n14 = BB_RE, n24 = CA_RE, n34 = EN_RE,
# n123 = BB_CA_EN, n1234 = BB_CA_EN_RE,
# n124 = BB_CA_RE, n134 = BB_EN_RE,
# n234 = CA_EN_RE,
# category = c("BB", "CA", "EN", "RE"),
# lty = "blank",
# fill = c("skyblue", "pink1", #"mediumorchid", "orange"),
# scaled = TRUE)
## (polygon[GRID.polygon.1360], polygon[GRID.polygon.1361], text[GRID.text.1362], text[GRID.text.1363])
## (polygon[GRID.polygon.1364], polygon[GRID.polygon.1365], text[GRID.text.1366], text[GRID.text.1367])
## (polygon[GRID.polygon.1368], polygon[GRID.polygon.1369], polygon[GRID.polygon.1370], polygon[GRID.polygon.1371], text[GRID.text.1372], text[GRID.text.1373], text[GRID.text.1374], text[GRID.text.1375])
## (polygon[GRID.polygon.1376], polygon[GRID.polygon.1377], polygon[GRID.polygon.1378], polygon[GRID.polygon.1379], text[GRID.text.1380], text[GRID.text.1381], text[GRID.text.1382], text[GRID.text.1383])
## (polygon[GRID.polygon.1384], polygon[GRID.polygon.1385], polygon[GRID.polygon.1386], polygon[GRID.polygon.1387], text[GRID.text.1388], text[GRID.text.1389], text[GRID.text.1390], text[GRID.text.1391])
## (polygon[GRID.polygon.1392], polygon[GRID.polygon.1393], polygon[GRID.polygon.1394], polygon[GRID.polygon.1395], text[GRID.text.1396], text[GRID.text.1397], text[GRID.text.1398], text[GRID.text.1399])
13.23 Diagrama de Venn - BASEADO EM PALAVRAS
Cálculo do overlap AQUI ou AQUI
<- m_venn
lista
lista
<- rownames(lista)[which(lista$S !=0)]
G1 <- rownames(lista)[which(lista$B !=0)]
G2 <- rownames(lista)[which(lista$R !=0)]
G3 <- rownames(lista)[which(lista$A !=0)]
G4 = list(G1, G2)
over
over
venn.diagram(#salva o diagrama em um arquivo
x = list(G1, G2),
category.names = c("G1","G2"),
filename = 'fig-venn_diagramm2.png',
height = 3000, width = 3000, resolution = 500,
disable.logging = T, scaled = T,
output = F,
lty = "blank",
fill = c("skyblue", "pink1"))
<- calculate.overlap(over)
overlap
overlap::get.venn.partitions(over) VennDiagram
## Warning in make.truth.table(x): fixing missing, empty or duplicated names.
## B S
## ap-davis 1 0
## as-bimac 1 1
## as-fasci 1 1
## ch-bimac 0 1
## ci-ocela 1 1
## ci-orien 0 1
## co-macro 0 1
## co-heter 0 1
## cr-menez 0 1
## cu-lepid 1 0
## cy-gilbe 1 1
## ge-brasi 1 1
## he-margi 0 1
## ho-malab 1 1
## hy-pusar 1 1
## le-melan 1 0
## le-piau 1 1
## le-taeni 1 0
## mo-costa 1 0
## mo-lepid 0 1
## or-nilot 1 1
## pa-manag 1 0
## pimel-sp 0 1
## po-retic 1 1
## po-vivip 1 1
## pr-brevi 1 1
## ps-rhomb 0 1
## ps-genise 0 1
## se-heter 1 1
## se-piaba 0 1
## se-spilo 0 1
## st-noton 0 1
## sy-marmo 0 1
## te-chalc 1 0
## tr-signa 1 1
## [[1]]
## [1] "as-bimac" "as-fasci" "ch-bimac" "ci-ocela" "ci-orien" "co-macro"
## [7] "co-heter" "cr-menez" "cy-gilbe" "ge-brasi" "he-margi" "ho-malab"
## [13] "hy-pusar" "le-piau" "mo-lepid" "or-nilot" "pimel-sp" "po-retic"
## [19] "po-vivip" "pr-brevi" "ps-rhomb" "ps-genise" "se-heter" "se-piaba"
## [25] "se-spilo" "st-noton" "sy-marmo" "tr-signa"
##
## [[2]]
## [1] "ap-davis" "as-bimac" "as-fasci" "ci-ocela" "cu-lepid" "cy-gilbe" "ge-brasi"
## [8] "ho-malab" "hy-pusar" "le-melan" "le-piau" "le-taeni" "mo-costa" "or-nilot"
## [15] "pa-manag" "po-retic" "po-vivip" "pr-brevi" "se-heter" "te-chalc" "tr-signa"
##
## INFO [2024-06-13 09:47:48] $x
## INFO [2024-06-13 09:47:48] list(G1, G2)
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $category.names
## INFO [2024-06-13 09:47:48] c("G1", "G2")
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $filename
## INFO [2024-06-13 09:47:48] [1] "fig-venn_diagramm2.png"
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $height
## INFO [2024-06-13 09:47:48] [1] 3000
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $width
## INFO [2024-06-13 09:47:48] [1] 3000
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $resolution
## INFO [2024-06-13 09:47:48] [1] 500
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $disable.logging
## INFO [2024-06-13 09:47:48] T
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $scaled
## INFO [2024-06-13 09:47:48] T
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $output
## INFO [2024-06-13 09:47:48] F
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $lty
## INFO [2024-06-13 09:47:48] [1] "blank"
## INFO [2024-06-13 09:47:48]
## INFO [2024-06-13 09:47:48] $fill
## INFO [2024-06-13 09:47:48] c("skyblue", "pink1")
## INFO [2024-06-13 09:47:48]
## [1] 1
## $a1
## [1] "as-bimac" "as-fasci" "ch-bimac" "ci-ocela" "ci-orien" "co-macro"
## [7] "co-heter" "cr-menez" "cy-gilbe" "ge-brasi" "he-margi" "ho-malab"
## [13] "hy-pusar" "le-piau" "mo-lepid" "or-nilot" "pimel-sp" "po-retic"
## [19] "po-vivip" "pr-brevi" "ps-rhomb" "ps-genise" "se-heter" "se-piaba"
## [25] "se-spilo" "st-noton" "sy-marmo" "tr-signa"
##
## $a2
## [1] "ap-davis" "as-bimac" "as-fasci" "ci-ocela" "cu-lepid" "cy-gilbe" "ge-brasi"
## [8] "ho-malab" "hy-pusar" "le-melan" "le-piau" "le-taeni" "mo-costa" "or-nilot"
## [15] "pa-manag" "po-retic" "po-vivip" "pr-brevi" "se-heter" "te-chalc" "tr-signa"
##
## $a3
## [1] "as-bimac" "as-fasci" "ci-ocela" "cy-gilbe" "ge-brasi" "ho-malab" "hy-pusar"
## [8] "le-piau" "or-nilot" "po-retic" "po-vivip" "pr-brevi" "se-heter" "tr-signa"
##
## X1 X2 ..set..
## 1 TRUE TRUE X1∩X2
## 2 FALSE TRUE (X2)∖(X1)
## 3 TRUE FALSE (X1)∖(X2)
## ..values..
## 1 as-bimac, as-fasci, ci-ocela, cy-gilbe, ge-brasi, ho-malab, hy-pusar, le-piau, or-nilot, po-retic, po-vivip, pr-brevi, se-heter, tr-signa
## 2 ap-davis, cu-lepid, le-melan, le-taeni, mo-costa, pa-manag, te-chalc
## 3 ch-bimac, ci-orien, co-macro, co-heter, cr-menez, he-margi, mo-lepid, pimel-sp, ps-rhomb, ps-genise, se-piaba, se-spilo, st-noton, sy-marmo
## ..count..
## 1 14
## 2 7
## 3 14
library("ggVennDiagram")
<- list(
x G1 = rownames(lista)[which(lista$S !=0)],
G2 = rownames(lista)[which(lista$B !=0)],
G3 = rownames(lista)[which(lista$R !=0)],
G4 = rownames(lista)[which(lista$A !=0)])
ggvenn(
x, fill_color = c("#0073C2FF", "#EFC000FF", "#868686FF", "#CD534CFF"),
stroke_size = 0.5, set_name_size = 4
)
# Default plot
ggVennDiagram(
label_alpha = 0,
x, category.names = c("G1","G2","G3","G4")
+
) ::scale_fill_gradient(low="yellow",high = "green")
ggplot2
grid.newpage()
ggVennDiagram(x[1:2], label_alpha = 0)
library("ggvenn")
grid.newpage()
ggvenn(x)
library("gplots")
grid.newpage()
<- venn(x)
v.table <- as.data.frame(v.table)
v.table print(v.table)
print(t(m_avg))
# Estrutura da comunidade
system(paste("open", shQuote("D:/Elvio/OneDrive/MSS/_Zoo-Rebio/R_ZooRebio/strcom.qmd")))