| BIOMOD_EnsembleForecasting {biomod2} | R Documentation |
Project ensemble species distribution models onto new environment
Description
This function allows to project ensemble models built with the
BIOMOD_EnsembleModeling function onto new environmental data
(which can represent new areas, resolution or time scales for example).
Usage
BIOMOD_EnsembleForecasting(
bm.em,
bm.proj = NULL,
proj.name = NULL,
new.env = NULL,
new.env.xy = NULL,
models.chosen = "all",
metric.binary = NULL,
metric.filter = NULL,
compress = TRUE,
nb.cpu = 1,
na.rm = TRUE,
...
)
Arguments
bm.em |
a |
bm.proj |
a |
proj.name |
(optional, default |
new.env |
(optional, default |
new.env.xy |
(optional, default |
models.chosen |
a |
metric.binary |
(optional, default |
metric.filter |
(optional, default |
compress |
(optional, default |
nb.cpu |
(optional, default |
na.rm |
(optional, default |
... |
(optional, see Details) |
Details
If models.chosen = 'all', projections are done for all calibration and pseudo absences
runs if applicable.
These projections may be used later by the
BIOMOD_EnsembleForecasting function.
If build.clamping.mask = TRUE, a raster file will be saved within the projection
folder. This mask values will correspond to the number of variables in each pixel that are out
of their calibration / validation range, identifying locations where predictions are uncertain.
... can take the following values :
-
on_0_1000: alogicalvalue defining whether0 - 1probabilities are to be converted to0 - 1000scale to save memory on backup -
do.stack: alogicalvalue defining whether all projections are to be saved as oneSpatRasterobject or severalSpatRasterfiles (the default if projections are too heavy to be all loaded at once in memory) -
keep.in.memory: alogicalvalue defining whether all projections are to be kept loaded at once in memory, or only links pointing to hard drive are to be returned -
output.format: acharactervalue corresponding to the projections saving format on hard drive, must be either.grd,.img,.tifor.RData(the default ifnew.envis given asmatrixordata.frame)
Value
A BIOMOD.projection.out object containing models projections, or links to saved
outputs.
Models projections are stored out of R (for memory storage reasons) in
proj.name folder created in the current working directory :
the output is a
data.frameifnew.envis amatrixor adata.frameit is a
SpatRasterifnew.envis aSpatRaster(or severalSpatRasterobjects, ifnew.envis too large)raw projections, as well as binary and filtered projections (if asked), are saved in the
proj.namefolder
Author(s)
Wilfried Thuiller, Damien Georges, Robin Engler
See Also
BIOMOD_FormatingData, bm_ModelingOptions,
BIOMOD_Modeling, BIOMOD_EnsembleModeling,
BIOMOD_RangeSize
Other Main functions:
BIOMOD_EnsembleModeling(),
BIOMOD_FormatingData(),
BIOMOD_LoadModels(),
BIOMOD_Modeling(),
BIOMOD_Projection(),
BIOMOD_RangeSize()
Examples
library(terra)
# Load species occurrences (6 species available)
data(DataSpecies)
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)
data(bioclim_current)
myExpl <- terra::rast(bioclim_current)
# --------------------------------------------------------------- #
file.out <- paste0(myRespName, "/", myRespName, ".AllModels.models.out")
if (file.exists(file.out)) {
myBiomodModelOut <- get(load(file.out))
} else {
# Format Data with true absences
myBiomodData <- BIOMOD_FormatingData(resp.var = myResp,
expl.var = myExpl,
resp.xy = myRespXY,
resp.name = myRespName)
# Model single models
myBiomodModelOut <- BIOMOD_Modeling(bm.format = myBiomodData,
modeling.id = 'AllModels',
models = c('RF', 'GLM'),
CV.strategy = 'random',
CV.nb.rep = 2,
CV.perc = 0.8,
OPT.strategy = 'bigboss',
metric.eval = c('TSS','ROC'),
var.import = 3,
seed.val = 42)
}
file.proj <- paste0(myRespName, "/proj_Current/", myRespName, ".Current.projection.out")
if (file.exists(file.proj)) {
myBiomodProj <- get(load(file.proj))
} else {
# Project single models
myBiomodProj <- BIOMOD_Projection(bm.mod = myBiomodModelOut,
proj.name = 'Current',
new.env = myExpl,
models.chosen = 'all',
build.clamping.mask = TRUE)
}
file.EM <- paste0(myRespName, "/", myRespName, ".AllModels.ensemble.models.out")
if (file.exists(file.EM)) {
myBiomodEM <- get(load(file.EM))
} else {
# Model ensemble models
myBiomodEM <- BIOMOD_EnsembleModeling(bm.mod = myBiomodModelOut,
models.chosen = 'all',
em.by = 'all',
em.algo = c('EMmean', 'EMca'),
metric.select = c('TSS'),
metric.select.thresh = c(0.7),
metric.eval = c('TSS', 'ROC'),
var.import = 3,
seed.val = 42)
}
# --------------------------------------------------------------- #
# Project ensemble models (from single projections)
myBiomodEMProj <- BIOMOD_EnsembleForecasting(bm.em = myBiomodEM,
bm.proj = myBiomodProj,
models.chosen = 'all',
metric.binary = 'all',
metric.filter = 'all')
# Project ensemble models (building single projections)
myBiomodEMProj <- BIOMOD_EnsembleForecasting(bm.em = myBiomodEM,
proj.name = 'CurrentEM',
new.env = myExpl,
models.chosen = 'all',
metric.binary = 'all',
metric.filter = 'all')
myBiomodEMProj
plot(myBiomodEMProj)