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.1 Sobre os dados

Veja o tópico “Sobre os dados” em [AQUI]

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
ppbio <- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06p-peixes.xlsx",
                   rowNames = T, colNames = T,
                   sheet = "Sheet1")
str(ppbio)
#View(ppbio)
ppbio[1:5,1:5] #[1:5,1:5] mostra apenas as linhas e colunas de 1 a 5.
## '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])
ppbio[1:10,1:10]
str(ppbio)
mode(ppbio)
class(ppbio)

13.4 REINÍCIO 1

m_trab <- ppbio

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 ??).

Abreviações

No interesse de sistematizar o código R das várias matrizes que são comumente usadas em uma AMD, a tabela @ref(tab:42tbl-m_2) resume seus tipos e abreviações.

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.

m_trab <- t(ppbio)
str(m_trab)
#View(m_trab)
m_trab
print(m_trab[1:5,1:5])
m_trab[1:5,1:5]
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
zeros <- (sum(m_trab == 0)/length(as.matrix(m_trab)))*100
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
Tabela 13.1: Resumo das informações sobre o tamanho da base de dados.
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:

  1. 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.
  1. Í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.
  1. Í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.
  1. 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.
  1. 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.
  1. 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.
  1. 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
Sum <- rowSums(m_trab)
#ou
Sum <- apply(m_trab,1,sum)
Sum
## Media
Mean <- rowMeans(m_trab)
Mean
## Ou
Mean <- apply(m_trab,1,mean)
Mean
## Desvio padrão
DP <- apply(m_trab,1,sd)
DP
## Máximo
Max <- apply(m_trab,1,max)
Max 
## Mínimo
Min <- apply(m_trab,1,min)
Min
## Mínimo não-zero
MinZ <- apply(m_trab, 1, function(row) {
  non_zero_values <- row[row > 0]  # Filter out 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)
bin <- decostand(m_trab,"pa")
bin[1:10, 1:10]
S <- apply(bin,1,sum)
S
#OU
Riqueza <- specnumber(m_trab)
Riqueza
Riqueza_total <- specnumber(colSums(m_trab))
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

H <- diversity(m_trab, index = "shannon")
H
D <- diversity(m_trab, "simpson")
D
D[is.na(D)] <- 0 #substitui NA ou NaN por 0
D
E <- H/log(specnumber(m_trab)) #pielou
E
E[is.na(E)] <- 0 #substitui NA ou NaN por 0
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)

Descritores1 <- cbind(Sum, Mean, DP, Max, Min, MinZ, S, E, H, D)
Descritores1 <- as.data.frame(Descritores1)
Descritores1
#Descritores1 <- Descritores1 %>% rownames_to_column(var="Espécies") #da nome a primeira coluna
SomaTotalD <- apply(Descritores1,2,sum)
SomaTotalD
MediaTotalD <- apply(Descritores1,2,mean)
MediaTotalD
DPTotalD <- apply(Descritores1,2,sd)
DPTotalD
Descritores2 <- cbind(SomaTotalD, MediaTotalD, DPTotalD)
Descritores2 <- as.data.frame(Descritores2)
Descritores2 <- t(Descritores2)
Descritores2
DescritoresFinal <- rbind(Descritores1, Descritores2)
DescritoresFinal
DescritoresFinal <- round (DescritoresFinal, 2)
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)
df <- DescritoresFinal
ncol(df); nrow(df) #no. de N colunas x M linhas
df <- cbind(Spp = rownames(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
Tabela 13.2: 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.
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:

x <- c(1, 2, NA, 4)
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
m_trab <- ppbio

Note que em uma matriz comunitária (onde os atributos são as espécies), a matriz transposta vai conter as unidades amostrais como colunas e espécies como linhas. Não tendo a mesma interpretação de matriz transposta em matemática.

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.

teste <- read.table(text = "
    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

m_trab <- ppbio

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.

G1 <- m_trab[1:12,]
names(which(colSums(G1) == 0)) #all-zero columns
G1 <- G1[, colSums(G1 != 0) > 0]
G2 <- m_trab[13:23,]
names(which(colSums(G2) == 0)) #all-zero columns
G2 <- G2[, colSums(G2 != 0) > 0]

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)
G3 <- filter(m_trab, grepl("R-", row.names(m_trab)))
names(which(colSums(G3) == 0)) #all-zero columns
G3 <- G3[, colSums(G3 != 0) > 0]
G4 <- filter(m_trab, grepl("A-", row.names(m_trab)))
names(which(colSums(G4) == 0)) #all-zero columns
G4 <- G4[, colSums(G4 != 0) > 0]
Tabela 13.3: Código para o delineamento amostral. *n, total amostrado = 23; **np, n planejado = 96.
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.

shared_spp <- intersect(names(G1), names(G2)) #get the common column names
shared_spp
G1_only <- setdiff(names(G1), names(G2))
G1_only
G2_only <- setdiff(names(G2), names(G1))
G2_only
Riqueza <- length(shared_spp) + length(G1_only) + length(G2_only)
Riqueza

Criando um data.frame com todas as espécies compartilhadas e exclusivas.

library(tidyverse)
# Create a data frame with all species
all_species <- data.frame(
  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
species_table <- table(all_species$type, all_species$species)

# Convert the table to a data frame and format it
species_table_df <- as.data.frame.matrix(species_table)
rownames(species_table_df) <- c("G1_only", "G2_only", "Shared")
species_table_df <- t(species_table_df[, order(colnames(species_table_df))])
species_table_df <- as.data.frame(species_table_df)
species_table_df
# Ordenando pelo nome da coluna
species_table_df <- 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),]
library(gt)
gt(species_table_df)

13.11 REINÍCIO 3

m_bruta <- ppbio

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
m_bruta_g <- cbind(Grupos = rownames(m_bruta), m_bruta)

###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"
###

agrup1 <- substr(m_bruta_g[, 1], 1,1)
agrup1
m_bruta_g <- m_bruta_g %>% mutate(Grupos=c(agrup1))

#m_avg_part <- aggregate(m_bruta_g[, 2:3], list(m_bruta_g$Grupos), mean)
m_avg <- m_bruta_g %>% 
  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 
m_avg <- as.data.frame(m_avg)
class(m_avg)
rownames(m_avg) <- m_avg[,1]
m_avg[,1] <- NULL
m_avg
#Salvando a matriz
write.table(m_avg,
            "m_avgcsv.csv",
            append = F,
            quote = TRUE,
            sep = ";", dec = ",",
            row.names = T)
m_avg1_csv <- read.csv("m_avgcsv.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
shared_spp1 <- intersect(names(G1), names(G2)) #get the common column names
shared_spp1
G1_only <- setdiff(names(G1), names(G2))
G1_only
G2_only <- setdiff(names(G2), names(G1))
G2_only
Riqueza <- length(shared_spp1) + length(G1_only) + length(G2_only)
Riqueza
shared_spp2 <- intersect(names(G3), names(G4))
shared_spp2
G3_only <- setdiff(names(G3), names(G4))
G3_only
G4_only <- setdiff(names(G4), names(G3))
G4_only
Riqueza <- length(shared_spp2) + length(G3_only) + length(G4_only)
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.

data <- (teste)
data
library(dplyr)
A <- filter(data, grepl("A", row.names(data)))
names(which(colSums(A) == 0)) #all-zero columns
A <- A[, colSums(A != 0) > 0]
B <- filter(data, grepl("B", row.names(data)))
names(which(colSums(B) == 0)) #all-zero columns
B <- B[, colSums(B != 0) > 0]
C <- filter(data, grepl("C", row.names(data)))
names(which(colSums(C) == 0)) #all-zero columns
C <- C[, colSums(C != 0) > 0]

13.15 REINÍCIO 4

data <- (m_bruta)

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)
rows <- grep("S-", rownames(data))
#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
species_only_in <- character(0)
# 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)) {
    species_only_in <- c(species_only_in, col)
  }
}
# 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
sum_of <- colSums(data[rows, ])
sum_of
# Initialize an empty vector to store species exclusive to 'A' rows
species_only_in <- character(0)
# 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)) {
    species_only_in <- c(species_only_in, col)
  }
}
# 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
rows <- grep("S-", rownames(data))
rows2 <- grep("B-", rownames(data))
#rows <- as.vector(rbind(c(rows, rows2)))
rows
# Calculate the sum of occurrences of each species in 'A' rows
sum_of <- colSums(data[rows, ])
sum_of
# Initialize an empty vector to store species exclusive to 'A' rows
species_only_in <- character(0)
# 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)) {
    species_only_in <- c(species_only_in, col)
  }
}
# Print species that only occur in 'A' rows
print(species_only_in)
S_only
data
rows
identical(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)
rows_G1 <- grep("S-", rownames(data))
rows_G2 <- grep("B-", rownames(data))
rows_G3 <- grep("R-", rownames(data))
rows_G4 <- grep("A-", rownames(data))
#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
species_in <- character(0)
# 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)) {
    species_in <- c(species_in, col)
  }
}
# 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")
m_venn <- as.data.frame(t(m_avg))
m_venn
gt(round(m_venn, 2), rownames_to_stub = TRUE)
m_venn[m_venn !=0] <- 1 #matriz binária 
##                     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
G1 <- nrow(subset(m_venn, S==1))
G2 <- nrow(subset(m_venn, B==1))
#G3 <- nrow(subset(m_venn, R==1))
#G4 <- nrow(subset(m_venn, A==1))
G1_G2 <- nrow(subset(m_venn, G1==1 & G2==1))
#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

lista <- m_venn
lista

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)]
over = list(G1, G2)
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"))

overlap <- calculate.overlap(over)
overlap
VennDiagram::get.venn.partitions(over)
## 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

Mais opções Aqui e Aqui

library("ggVennDiagram")
x <- list(
  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(
  x, label_alpha = 0,
  category.names = c("G1","G2","G3","G4")
  ) +
  ggplot2::scale_fill_gradient(low="yellow",high = "green")

grid.newpage()
ggVennDiagram(x[1:2], label_alpha = 0)

library("ggvenn")
grid.newpage()
ggvenn(x)

library("gplots")
grid.newpage()
v.table <- venn(x)
v.table <- as.data.frame(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")))

Apêndices

Script limpo

Aqui apresento o scrip na íntegra sem os textos ou outros comentários. Você pode copiar e colar no R para executa-lo. Lembre de remover os # ou ## caso necessite executar essas linhas.

Referências

Bibliografia

Hurlbert, Stuart H. 1971. “The Nonconcept of Species Diversity: A Critique and Alternative Parameters.” Journal Article. Ecology 52 (4): 577–86. https://doi.org/10.2307/1934145.
Magurran, Anne E. 1988. Ecological Diversity and Its Measurement. Book. Croom Helm Ltd.
Pielou, E. C. 1975. Ecological Diversity. Book. New York, NY: John Wiley & Sons.
———. 2017. R: A Language and Environment for Statistical Computing. Book. Austria: R Foundation for Statistical Computing. https://www.r-project.org/.
Team, R Studio. 2022. RStudio: Integrated Development Environment for r. Book. Boston, MA: RStudio, PBC. https://posit.co/products/open-source/rstudio/.