# Load species occurrences (6 species available)
myFile <- system.file('external/species/mammals_table.csv', package = 'biomod2')
DataSpecies <- read.csv(myFile, row.names = 1)
head(DataSpecies)
# Select the name of the studied species
myRespName <- 'GuloGulo'
# Get corresponding presence/absence data
myResp <- as.numeric(DataSpecies[, myRespName])
# Get corresponding XY coordinates
myRespXY <- DataSpecies[, c('X_WGS84', 'Y_WGS84')]
# Load environmental variables extracted from BIOCLIM (bio_3, bio_4, bio_7, bio_11 & bio_12)
myFiles <- paste0('external/bioclim/current/bio', c(3, 4, 7, 11, 12), '.grd')
myExpl <- raster::stack(system.file(myFiles, package = 'biomod2'))
# \dontshow{
myExtent <- raster::extent(0,30,45,70)
myExpl <- raster::stack(raster::crop(myExpl, myExtent))
# }
# ---------------------------------------------------------------
# Format Data with true absences
myBiomodData <- BIOMOD_FormatingData(resp.var = myResp,
expl.var = myExpl,
resp.xy = myRespXY,
resp.name = myRespName)
# Create default modeling options
myBiomodOptions <- BIOMOD_ModelingOptions()
# ---------------------------------------------------------------
# Create the different validation datasets
myBiomodCV <- BIOMOD_CrossValidation(bm.format = myBiomodData)
head(myBiomodCV)
# Several validation strategies can be combined
DataSplitTable.b <- BIOMOD_CrossValidation(bm.format = myBiomodData,
k = 5,
nb.rep = 2,
do.full.models = FALSE)
DataSplitTable.y <- BIOMOD_CrossValidation(bm.format = myBiomodData,
k = 2,
do.stratification = TRUE,
method = "y")
colnames(DataSplitTable.y)[1:2] <- c("RUN11", "RUN12")
myBiomodCV <- cbind(DataSplitTable.b, DataSplitTable.y)
head(myBiomodCV)
# Model single models
myBiomodModelOut <- BIOMOD_Modeling(bm.format = myBiomodData,
modeling.id = 'mod.CV',
models = c('RF', 'GLM'),
bm.options = myBiomodOptions,
nb.rep = 2,
data.split.table = myBiomodCV,
metric.eval = c('TSS','ROC'),
var.import = 3,
do.full.models = FALSE,
seed.val = 42)
# Get evaluation scores & variables importance
myEval <- get_evaluations(myBiomodModelOut, as.data.frame = TRUE)
myEval$CV.strategy <- "Random"
myEval$CV.strategy[grepl("13", myEval$Model.name)] <- "Full"
myEval$CV.strategy[grepl("11|12", myEval$Model.name)] <- "Stratified"
head(myEval)
boxplot(myEval$Testing.data ~ interaction(myEval$Algo, myEval$CV.strategy),
xlab = "", ylab = "ROC AUC", col = rep(c("brown", "cadetblue"), 3))
Run the code above in your browser using DataLab