Professora: Marinez Ferreira de Siqueira
Andrea Sánchez-Tapia
Pablo Viany Prieto
Felipe Sodré
Rafael Oliveira
2014
Primeiro passo: Habilitar os pacotes a serem usados:
library(dismo)
Os dados básicos para a modelagem potencial de espécies são:
Para facilitar, utilizaremos dados bióticos (bradypus.csv) e abióticos existentes no paco DISMO.
Dados Bióticos:
file <- paste(system.file(package="dismo"), "/ex/bradypus.csv", sep="")
bradypus <- read.table(file, header=TRUE, sep= ",")
head(bradypus)
species lon lat
1 Bradypus variegatus -65.40 -10.38
2 Bradypus variegatus -65.38 -10.38
3 Bradypus variegatus -65.13 -16.80
4 Bradypus variegatus -63.67 -17.45
5 Bradypus variegatus -63.85 -17.40
6 Bradypus variegatus -64.42 -16.00
#Deixaremos o objeto 'bradypus' apenas com as coordenadas
bradypus <- bradypus[,2:3]
Dados abióticos
##dados abióticos (ambientais)
#criamos o caminho para os rasters
files2 <- list.files(path=paste(system.file(package="dismo"),
'/ex', sep=''), pattern='grd', full.names=TRUE )
#Definimos os rasters como objeto 'predictors'
predictors <- stack(files2)
plot(predictors)
Uma vez que temos como camada ambiental a informação de bioma e esta não será utilizada na modelagem, vamos desconsidera-la.
pred_nf <- dropLayer(predictors,'biome')
Vamos visualizar os dados bióticos espacializados sobre uma das camadas preditoras:
plot(pred_nf, 1)
points(bradypus, bg='red', cex=1,pch=21)
Agora que temos os dados bióticos e abióticos, precisamos extrair os valores ambientais das localidades onde há registros de ocorrência, usando a função 'extract'. A tais valores daremos o nome de 'presvals':
presvals <- extract(pred_nf, bradypus)
Faremos então a divisão dos nossos dados de bradypus em 5 grupos diferentes para utilizarmos 4 para treino e apenas um para teste
group <- kfold(bradypus, 5)
pres_train <- bradypus[group != 1, ]
pres_test <- bradypus[group == 1, ]
Agora criaremos pontos leatórios, como bakcground e os dividiremos em 5 grupos diferentes: 4 para treino e um para teste:
ext <- extent(-90, -32, -33, 23)
backg <- randomPoints(pred_nf, n=1000, ext=ext, extf = 1.25)
colnames(backg) = c( 'lon' , 'lat' )
##Criando e separando as partições:
group <- kfold(backg, 5)
backg_train <- backg[group != 1, ]
backg_test <- backg[group == 1, ]
Para visualizar onde estão as ocorrências de bradypus e onde estão os pontos aleatórios: bradypus
r<- raster(pred_nf, 1)
plot(!is.na(r), col=c( 'white' , 'light grey' ), legend=FALSE)
plot(ext, add=TRUE, col= 'red' , lwd=2)
points(pres_train, pch= '+' , col= 'green' )
points(pres_test, pch= '+' , col= 'blue' )
E os dados aleatórios
plot(!is.na(r), col=c( 'white' , 'light grey' ), legend=FALSE)
plot(ext, add=TRUE, col= 'red' , lwd=2)
points(backg_train, pch= '-' , cex=0.5, col= 'yellow' )
points(backg_test, pch= '-' , cex=0.5, col= 'black' )
Rodando a modelagem:
bc <- bioclim(pred_nf, pres_train)
Avaliando o modelo gerado, usando o conjunto de presença deixada para teste e os aleatórios de teste:
e <- evaluate(pres_test, backg_test, bc, pred_nf)
e
class : ModelEvaluation
n presences : 23
n absences : 200
AUC : 0.7116
cor : 0.1267
max TPR+TNR at : 0.03216
Definindo um threshold:
threshold <- e@t[which.max(e@TPR + e@TNR)]
threshold
[1] 0.03216
pb <- predict(pred_nf, bc, ext=ext, progress='' )
pb
class : RasterLayer
dimensions : 112, 116, 12992 (nrow, ncol, ncell)
resolution : 0.5, 0.5 (x, y)
extent : -90, -32, -33, 23 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : layer
values : 0, 0.7312 (min, max)
Visualizando o resultado no espaço geográfico:
par(mfrow=c(1,2))
plot(pb, main= 'Bioclim, raw values' )
plot(pb > threshold, main= 'presence/absence ')
points(pres_train, pch= '+' )
Modelo Original
Mapa binários