Modules Ecologia Numérica Bases de dados Ecológicos
Bases de dados Ecológicos
Slides
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
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0 ✔ purrr 0.3.5
## ✔ tibble 3.1.8 ✔ dplyr 1.0.10
## ✔ tidyr 1.2.1 ✔ stringr 1.4.1
## ✔ readr 2.1.2 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
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:
- 20 espécies
- 8 localidades
- 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:
- 30 espécies
- 10 localidades
- 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
Salve a pasta descompactada no diretório local correspondente ao seu repositório do GitHub
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/ecoaplic/content/collection/eco_num/r_data/NEwR-2ed_code_data/NEwR2-Data/Doubs.RData") # mude o caminho para o seu próprio´
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.
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?