Curso Atualidades em Macroecologia
Escola de Altos Estudos CAPES - Brasil
Universidade Federal de Sergipe
Carregar o letsR (Ver exemplo de como crear uma matriz de presencia-ausência)
library(letsR)
#carregar os dados dos morcegos (já tem a PAM lá dentro)
load("bats_PAM.Rdata")
bats.pam <- m.PAM
Calcular o range size das especies
bats.ranges <- lets.rangesize(bats.pam, units = "cell")
#trocas "_" por " " nos nomes das especies
bats.ranges.spp <- rownames(bats.ranges)
bats.ranges.spp <- gsub("_"," ",bats.ranges.spp)
rownames(bats.ranges) <- bats.ranges.spp
agora temos um vetor com os tamanhos de range (numero de celdas) das espécies
A abordagem inter-específica se basea no análise das espécies como unidades, precisando então da caraterização das propriedades das espécies. Além do traço (range size), precisamos da ‘posição’ das espécies no gradiente (latitude).
Obter a posição das especies. Nesse caso, o ‘midpoint’ de cada uma delas no gradiente latitudinal
bats.midpoints <-lets.midpoint(bats.pam, planar = F)
#os nomes tem que ter "_"
bats.midpoints[,1] <- bats.ranges.spp
Pronto! temos os dados, agora testar a relação latitude~range size
bats.lm <- lm(bats.ranges[,1]~abs(bats.midpoints[,3]))
summary(bats.lm)
Mas, e a questão evolutiva? A relação (ou falta de) se mantem? vamos testar!
#carregar pacotes para análise filogenética
library(ape)
library(caper)
#carregar a filogenia dos morcegos estudados
bats.tree <- read.tree("bats_tree")
#vamos ver a árvore
plot(bats.tree)
#trocar os "_" por " " nos nomes dos tips/espécies, pra bater com os outros dados
bats.tree.spp <- bats.tree$tip.label
bats.tree.spp <- gsub("_"," ",bats.tree.spp)
bats.tree$tip.label <- bats.tree.spp
#preparar os dados (junta-los em um objeto só)
bats.data <- cbind(bats.midpoints[,c(1,3)],bats.ranges)
colnames(bats.data) <- c("Species","MidLat","Range_size")
#criar o objeto "comparative data" necessario pro analise, de acordo com o pacote "caper"
bats.compdata <- comparative.data(bats.tree,bats.data,Species,vcv=T)
#ajustar o modelo de regressão considerando a filogenia (PGLS: phylogenetic generalized least squares)
bats.pgls <- pgls(Range_size~abs(MidLat),bats.compdata,lambda='ML')
summary(bats.pgls)
E aí?
A abordagem de assembléia se basea no análise dos locais (celdas) como unidades, precisando então da caraterização das propriedades dos conjuntos de espécies que estão presentes nesses locais. A gente precisa calcular uma métrica por assembléia, tipo a media do valor do traço pro conjunto de espécies, além da posição dessa assembléia (latitude).
#Obter os valores médios por assembléia em cada celda
#pra isso, temos o pacote letsR!
bats.medianRS <- lets.maplizer(bats.pam,bats.ranges,bats.midpoints[,1], fun = median, ras=T)
#a posição de cada celda/local já está na PAM (as primeiras duas colunas).
#daí, podemos pegar só a latitude e testar a relação mediana do tamanho do range ~ latitude
bats.lmSites <- lm(bats.medianRS$Matrix[,3]~abs(bats.medianRS$Matrix[,2]))
summary(bats.lmSites)
E daí?
Agora, incluirmos a questão evolutiva baseada na abordagem PVR para estimar os componentes filogenético (P) e específico (S)
#Obter os componentes P e S, mas como? temos o letsR! mentira, a função ainda não foi incluida no letsR, mas vai ser proximamente. Mas, temos função pra isso
#carregar pacotes necessarios
library(picante)
library(vegan)
#carregar a função (o arquivo .R deve estar no seu WD)
source("p_s_components.R")
#rodar a função
bats.pscomps <- p.s.comps(phy = bats.tree,sppnames = bats.midpoints[,1],data = bats.ranges,colnum = 1)
“Espacializar” esses componentes
#componente P
bats.meanP <- lets.maplizer(bats.pam,bats.pscomps[[2]][,1],bats.midpoints[,1], fun = mean, ras=T)
#componente S
bats.meanS <- lets.maplizer(bats.pam,bats.pscomps[[2]][,2],bats.midpoints[,1], fun = mean, ras=T)
Ajustar os modelos linares para cada componente
#modelos lineais
bats.lm.meanP <- lm(bats.meanP$Matrix[,3]~abs(bats.pam$P[,2]))
bats.lm.meanS <- lm(bats.meanS$Matrix[,3]~abs(bats.pam$P[,2]))
E aí? Qual é a conclusão? Os padrões mudaram? Por que?