Bases de dados ecológicos

Slides

Exemplo 1 (matriz de presencias e ausências)

As bases de dados do R que serão usadas no nosso curso são reais e vêem de repositórios livres de dados e exemplos do próprio R para a área de ecologia. No entanto, para iniciar nossas atividades, vamos contruir uma base de dados fictícia apenas para entender sua estrutura.

A estrutura básica de bases de dados biológicos é a de matrizes que contem ‘n’ colunas e ‘r’ linhas (n x r). Geralmente temos espécies nas linhas e localidades nas colunas. Veja abaixo como criar uma matriz simples de 10 linhas e 4 colunas. As células serão preenchidas apenas com “1” e “0” indicando se a espécie está presente ou ausente da localidade amostrada.

set.seed(999) # vai gerar sempre o mesmo resultado com as funções abaixo
tibble(
  spec = paste0("sp", 1:10),
  siteA = sample(c(0:1), replace=TRUE, size=10),
  siteB = sample(c(0:1), replace=TRUE, size=10),
  siteC = sample(c(0:1), replace=TRUE, size=10),
  siteD = sample(c(0:1), replace=TRUE, size=10)
)
## # A tibble: 10 × 5
##    spec  siteA siteB siteC siteD
##    <chr> <int> <int> <int> <int>
##  1 sp1       0     0     1     0
##  2 sp2       1     0     0     0
##  3 sp3       0     1     0     1
##  4 sp4       0     0     0     1
##  5 sp5       0     0     1     1
##  6 sp6       1     0     1     1
##  7 sp7       0     1     0     0
##  8 sp8       1     1     0     0
##  9 sp9       1     0     0     0
## 10 sp10      1     0     0     0

Exercício 1

Agora crie a sua base de dados, modificando os parâmetros do código acima para atender aos seguintes requisitos:

  1. 20 espécies
  2. 8 localidades
  3. Faça no seu computador
  • Obviamente essas bases podem ser “subidas” ao R sem maiores problemas e o ideal é que você faça isso mesmo. Crie suas bases de dados numa planilha e salve-as em formato TXT ou CSV com muita atenção ao separadores e codificação (geralmente UTF-8)

Exemplo 2 (matriz de abundâncias)

Agora podemos usar os mesmos comandos para gear uma matriz dessa vez com abundâncias fictícias. Portanto no lugar de zeros e uns, teremos números inteiros entre zero e infinito (em tese). Essas matrizes são mais realistas pois dão ideia da representatividade de cada espécie nas comunidades biológicas amostradas.

set.seed(999) # vai gerar sempre o mesmo resultado com as funções abaixo
tibble(
  spec = paste0("sp", 1:10),
  siteA = sample(c(0:10), replace=TRUE, size=10), #agora vai ter números aleatórios entre 0 e 10
  siteB = floor(runif(10, min=0, max=10)), # aqui também
  siteC = sample(c(0:20), replace=FALSE, size=10), # aqui também mas até 20
  siteD = sample.int(20, 10) # aqui também até 20
)
## # A tibble: 10 × 5
##    spec  siteA siteB siteC siteD
##    <chr> <int> <dbl> <int> <int>
##  1 sp1      10     0     4    15
##  2 sp2       3     9    18    16
##  3 sp3       6     1    11    11
##  4 sp4       8     7     8     2
##  5 sp5       0     1    20     9
##  6 sp6       9     8    17     1
##  7 sp7       9     1     9    18
##  8 sp8       5     0    14    17
##  9 sp9       2     9     3     8
## 10 sp10      6     6     7    12

Exercício 2

Novamente crie a sua base de dados, modificando os parâmetros do código acima para atender aos seguintes requisitos:

  1. 30 espécies
  2. 10 localidades
  3. Abundâncias devem variar entre 0-20 em 5 localidades e entre 0-50 em outras 5 localidades

Sumários

Qualquer análise de dados em ecologia começa com uma boa chacagem dos seu dados. Precisamos saber como se comportam os dados e para isso podemo começar com algumas funções simples como ‘summary’ (pactote base do R) ou ‘summarize’ (pacote tidyverse). Para isso, vamos pegar a matriz gerada com as abundâncias e dar a ela um nome, tranformando-a assim num objeto.

set.seed(999) # vai gerar sempre o mesmo resultado com as funções abaixo
tibble(
  spec = paste0("sp", 1:10),
  siteA = sample(c(0:10), replace=TRUE, size=10), #agora vai ter números aleatórios entre 0 e 10
  siteB = floor(runif(10, min=0, max=10)), # aqui também
  siteC = sample(c(0:20), replace=FALSE, size=10), # aqui também mas até 20
  siteD = sample.int(20, 10) # aqui também até 20
)-> base1 # note que esse comando "->" apontou para um objeto de nome 'base1'


base1 # eis a nossa base agora com as espécies como nomes das linhas
## # A tibble: 10 × 5
##    spec  siteA siteB siteC siteD
##    <chr> <int> <dbl> <int> <int>
##  1 sp1      10     0     4    15
##  2 sp2       3     9    18    16
##  3 sp3       6     1    11    11
##  4 sp4       8     7     8     2
##  5 sp5       0     1    20     9
##  6 sp6       9     8    17     1
##  7 sp7       9     1     9    18
##  8 sp8       5     0    14    17
##  9 sp9       2     9     3     8
## 10 sp10      6     6     7    12

Exercício 3

Abaixo temos um exemplo de resumo básico dos dados. Um resumo geral da tabela com a função mais simples do R que mostra apenas alguns “momentos” da distribuição dos dados organizados por colunas, nesse caso, por sítio de estudo.

summary(base1)
##      spec               siteA           siteB          siteC      
##  Length:10          Min.   : 0.00   Min.   :0.00   Min.   : 3.00  
##  Class :character   1st Qu.: 3.50   1st Qu.:1.00   1st Qu.: 7.25  
##  Mode  :character   Median : 6.00   Median :3.50   Median :10.00  
##                     Mean   : 5.80   Mean   :4.20   Mean   :11.10  
##                     3rd Qu.: 8.75   3rd Qu.:7.75   3rd Qu.:16.25  
##                     Max.   :10.00   Max.   :9.00   Max.   :20.00  
##      siteD      
##  Min.   : 1.00  
##  1st Qu.: 8.25  
##  Median :11.50  
##  Mean   :10.90  
##  3rd Qu.:15.75  
##  Max.   :18.00

Existem outras funções do pacote tidyverse que podem ser utilizadas com maior objetividade e para manipulações específicas. Para um curso introdutório completo de “tidyverse” veja essa maravilha aqui do Maurício Vancine Introdução ao tidyverse

Agora podemos começar a namorar nosos dados

Livro: Numerical Ecology with R

Vamos usar muitos exemplos desse livro durante a disciplina e para acostumar, vamos começar por tentar reproduzir os exercícios do capítulo 2: “Exploratpry Data Analysis”

Extraindo dados

Para baixar o livro Numerical Ecology with R, clique aqui

Para acessar os dados clique aqui (http://adn.biol.umontreal.ca/~numericalecology/numecolR/NEwR-2ed_code_data.zip)

Salve a pasta descompactada no diretório local correspondente ao seu repositório do GitHub

No meu caso está assim

Agora é só carregar as bases de dados usando o comando “load”, lembrando de colocar o caminho para o arquivo segundo

# Vamos carregar os dados que o livro usa como exemplo
load("/home/felipe/Google Drive/github/eco_numerica/data/NEwR-2ed_code_data/NEwR2-Data/Doubs.RData")
spe # matriz de abundância de espécies de peixes
##    Cogo Satr Phph Babl Thth Teso Chna Pato Lele Sqce Baba Albi Gogo Eslu Pefl
## 1     0    3    0    0    0    0    0    0    0    0    0    0    0    0    0
## 2     0    5    4    3    0    0    0    0    0    0    0    0    0    0    0
## 3     0    5    5    5    0    0    0    0    0    0    0    0    0    1    0
## 4     0    4    5    5    0    0    0    0    0    1    0    0    1    2    2
## 5     0    2    3    2    0    0    0    0    5    2    0    0    2    4    4
## 6     0    3    4    5    0    0    0    0    1    2    0    0    1    1    1
## 7     0    5    4    5    0    0    0    0    1    1    0    0    0    0    0
## 8     0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
## 9     0    0    1    3    0    0    0    0    0    5    0    0    0    0    0
## 10    0    1    4    4    0    0    0    0    2    2    0    0    1    0    0
## 11    1    3    4    1    1    0    0    0    0    1    0    0    0    0    0
## 12    2    5    4    4    2    0    0    0    0    1    0    0    0    0    0
## 13    2    5    5    2    3    2    0    0    0    0    0    0    0    0    0
## 14    3    5    5    4    4    3    0    0    0    1    1    0    1    1    0
## 15    3    4    4    5    2    4    0    0    3    3    2    0    2    0    0
## 16    2    3    3    5    0    5    0    4    5    2    2    1    2    1    1
## 17    1    2    4    4    1    2    1    4    3    2    3    4    1    1    2
## 18    1    1    3    3    1    1    1    3    2    3    3    3    2    1    3
## 19    0    0    3    5    0    1    2    3    2    1    2    2    4    1    1
## 20    0    0    1    2    0    0    2    2    2    3    4    3    4    2    2
## 21    0    0    1    1    0    0    2    2    2    2    4    2    5    3    3
## 22    0    0    0    1    0    0    3    2    3    4    5    1    5    3    4
## 23    0    0    0    0    0    0    0    0    0    1    0    0    0    0    0
## 24    0    0    0    0    0    0    1    0    0    2    0    0    1    0    0
## 25    0    0    0    0    0    0    0    0    1    1    0    0    2    1    0
## 26    0    0    0    1    0    0    1    0    1    2    2    1    3    2    1
## 27    0    0    0    1    0    0    1    1    2    3    4    1    4    4    1
## 28    0    0    0    1    0    0    1    1    2    4    3    1    4    3    2
## 29    0    1    1    1    1    1    2    2    3    4    5    3    5    5    4
## 30    0    0    0    0    0    0    1    2    3    3    3    5    5    4    5
##    Rham Legi Scer Cyca Titi Abbr Icme Gyce Ruru Blbj Alal Anan
## 1     0    0    0    0    0    0    0    0    0    0    0    0
## 2     0    0    0    0    0    0    0    0    0    0    0    0
## 3     0    0    0    0    0    0    0    0    0    0    0    0
## 4     0    0    0    0    1    0    0    0    0    0    0    0
## 5     0    0    2    0    3    0    0    0    5    0    0    0
## 6     0    0    0    0    2    0    0    0    1    0    0    0
## 7     0    0    0    0    0    0    0    0    0    0    0    0
## 8     0    0    0    0    0    0    0    0    0    0    0    0
## 9     0    0    0    0    1    0    0    0    4    0    0    0
## 10    0    0    0    0    0    0    0    0    0    0    0    0
## 11    0    0    0    0    0    0    0    0    0    0    0    0
## 12    0    0    0    0    0    0    0    0    0    0    0    0
## 13    0    0    0    0    0    0    0    0    0    0    0    0
## 14    0    0    0    0    0    0    0    0    0    0    0    0
## 15    0    0    0    0    1    0    0    0    0    0    0    0
## 16    0    1    0    1    1    0    0    0    1    0    0    0
## 17    1    1    0    1    1    0    0    0    2    0    2    1
## 18    2    1    0    1    1    0    0    1    2    0    2    1
## 19    2    1    1    1    2    1    0    1    5    1    3    1
## 20    3    2    2    1    4    1    0    2    5    2    5    2
## 21    3    2    2    2    4    3    1    3    5    3    5    2
## 22    3    3    2    3    4    4    2    4    5    4    5    2
## 23    0    0    0    0    0    0    0    0    1    0    2    0
## 24    0    1    0    0    0    0    0    2    2    1    5    0
## 25    0    0    1    0    0    0    0    1    1    0    3    0
## 26    2    2    1    1    3    2    1    4    4    2    5    2
## 27    3    3    1    2    5    3    2    5    5    4    5    3
## 28    4    4    2    4    4    3    3    5    5    5    5    4
## 29    5    5    2    3    3    4    4    5    5    4    5    4
## 30    5    3    5    5    5    5    5    5    5    5    5    5
spa # matriz espacial
##          X       Y
## 1   85.678  20.000
## 2   84.955  20.100
## 3   92.301  23.796
## 4   91.280  26.431
## 5   92.005  29.163
## 6   95.954  36.315
## 7   98.201  38.799
## 8   99.455  46.406
## 9  109.782  55.865
## 10 130.641  66.576
## 11 142.748  81.258
## 12 147.270  85.839
## 13 156.817  89.516
## 14 159.435  92.791
## 15 150.820  91.084
## 16 132.662  87.956
## 17 128.298  93.918
## 18 130.560 102.446
## 19 128.459 105.428
## 20 114.862 103.129
## 21  97.163  90.245
## 22  88.200  86.373
## 23  79.596  83.508
## 24  74.753  78.734
## 25  67.146  74.683
## 26  53.770  71.598
## 27  43.637  68.673
## 28  30.514  61.166
## 29  20.495  43.848
## 30   0.000  41.562
env # matriz ambiental
##      dfs ele  slo   dis  pH har  pho  nit  amm  oxy  bod
## 1    0.3 934 48.0  0.84 7.9  45 0.01 0.20 0.00 12.2  2.7
## 2    2.2 932  3.0  1.00 8.0  40 0.02 0.20 0.10 10.3  1.9
## 3   10.2 914  3.7  1.80 8.3  52 0.05 0.22 0.05 10.5  3.5
## 4   18.5 854  3.2  2.53 8.0  72 0.10 0.21 0.00 11.0  1.3
## 5   21.5 849  2.3  2.64 8.1  84 0.38 0.52 0.20  8.0  6.2
## 6   32.4 846  3.2  2.86 7.9  60 0.20 0.15 0.00 10.2  5.3
## 7   36.8 841  6.6  4.00 8.1  88 0.07 0.15 0.00 11.1  2.2
## 8   49.1 792  2.5  1.30 8.1  94 0.20 0.41 0.12  7.0  8.1
## 9   70.5 752  1.2  4.80 8.0  90 0.30 0.82 0.12  7.2  5.2
## 10  99.0 617  9.9 10.00 7.7  82 0.06 0.75 0.01 10.0  4.3
## 11 123.4 483  4.1 19.90 8.1  96 0.30 1.60 0.00 11.5  2.7
## 12 132.4 477  1.6 20.00 7.9  86 0.04 0.50 0.00 12.2  3.0
## 13 143.6 450  2.1 21.10 8.1  98 0.06 0.52 0.00 12.4  2.4
## 14 152.2 434  1.2 21.20 8.3  98 0.27 1.23 0.00 12.3  3.8
## 15 164.5 415  0.5 23.00 8.6  86 0.40 1.00 0.00 11.7  2.1
## 16 185.9 375  2.0 16.10 8.0  88 0.20 2.00 0.05 10.3  2.7
## 17 198.5 349  0.5 24.30 8.0  92 0.20 2.50 0.20 10.2  4.6
## 18 211.0 333  0.8 25.00 8.0  90 0.50 2.20 0.20 10.3  2.8
## 19 224.6 310  0.5 25.90 8.1  84 0.60 2.20 0.15 10.6  3.3
## 20 247.7 286  0.8 26.80 8.0  86 0.30 3.00 0.30 10.3  2.8
## 21 282.1 262  1.0 27.20 7.9  85 0.20 2.20 0.10  9.0  4.1
## 22 294.0 254  1.4 27.90 8.1  88 0.20 1.62 0.07  9.1  4.8
## 23 304.3 246  1.2 28.80 8.1  97 2.60 3.50 1.15  6.3 16.4
## 24 314.7 241  0.3 29.76 8.0  99 1.40 2.50 0.60  5.2 12.3
## 25 327.8 231  0.5 38.70 7.9 100 4.22 6.20 1.80  4.1 16.7
## 26 356.9 214  0.5 39.10 7.9  94 1.43 3.00 0.30  6.2  8.9
## 27 373.2 206  1.2 39.60 8.1  90 0.58 3.00 0.26  7.2  6.3
## 28 394.7 195  0.3 43.20 8.3 100 0.74 4.00 0.30  8.1  4.5
## 29 422.0 183  0.6 67.70 7.8 110 0.45 1.62 0.10  9.0  4.2
## 30 453.0 172  0.2 69.00 8.2 109 0.65 1.60 0.10  8.2  4.4

Exercício 4

Usando essas bases de dados, tente reproduzir alguns dos gráficos que estão nos slides, pelo menos dois.

Os scripts originais do livro estão neste repositório. O Script específico deste capítulo de análise excploratória de dados pode ser acessado por este link. Mas, sugiro que você baixe os scripts e os organize nas suas patas locais.

Exercício 5

Agora, crie suas próprias perguntas e explore os dados. Lembre-se, são dados de uma comunidade de peixes amostradas em 30 localidades de um rio na Suiça Temos tanto a localização geográfica dessas amostras quanto as características ambientais do rio nessas localidades.

Exemplo de perguntas:

  • Onde há mais riqueza de peixes?
  • Onde há mais abundância de peixes?
  • Quais espécies occorrem mais na nascente?