Slides
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
Agora crie a sua base de dados, modificando os parâmetros do código acima para atender aos seguintes requisitos:
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
Novamente crie a sua base de dados, modificando os parâmetros do código acima para atender aos seguintes requisitos:
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
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
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”
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
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.
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: