evaluation.strip.data {BiodiversityR} | R Documentation |
Evaluation strips for ensemble suitability mapping
Description
These functions provide a dataframe which can subsequently be used to evaluate the relationship between environmental variables and the fitted probability of occurrence of individual or ensemble suitability modelling algorithms. The biomod2
package provides an alternative implementation of this approach (response.plot2
).
Usage
evaluation.strip.data(xn = NULL, ext = NULL,
models.list = NULL,
input.weights = models.list$output.weights,
steps=200, CATCH.OFF = FALSE
)
evaluation.strip.plot(data, TrainData=NULL,
variable.focal = NULL, model.focal = NULL,
ylim=c(0, 1.25),
dev.new.width = 7, dev.new.height = 7, ...
)
Arguments
xn |
RasterStack object ( |
ext |
an Extent object to limit the prediction to a sub-region of |
models.list |
list with 'old' model objects such as |
input.weights |
array with numeric values for the different modelling algorithms; if |
steps |
number of steps within the range of a continuous explanatory variable |
CATCH.OFF |
Disable calls to function |
data |
data set with ranges of environmental variables and fitted suitability models, typically returned by |
TrainData |
Data set representing the calibration data set. If provided, then a boxplot will be added for presence locations via |
variable.focal |
focal explanatory variable for plots with evaluation strips |
model.focal |
focal model for plots with evaluation strips |
ylim |
range of Y-axis |
dev.new.width |
Width for new graphics device ( |
dev.new.height |
Heigth for new graphics device ( |
... |
Other arguments passed to |
Details
These functions are mainly intended to be used internally by the ensemble.raster function.
evaluation.strip.data
creates a data frame with variables (columns) corresponding to the environmental variables encountered in the RasterStack object (x
) and the suitability modelling approaches that were defined. The variable of focal.var
is an index of the variable for which values are ranged. The variable of categorical
is an index for categorical (factor) variables.
A continuous (numeric) variable is ranged between its minimum and maximum values in the number of steps defined by argument steps
. When a continuous variable is not the focal variable, then the average (mean
) is used.
A categorical (factor) variable is ranged for all the encountered levels (levels
) for this variable. When a categorical variable is not the focal variable, then the most frequent level is used.
Value
function evaluation.strip.data
creates a data frame, function evaluation.strip.data
allows for plotting.
Author(s)
Roeland Kindt (World Agroforestry Centre)
References
Kindt R. 2018. Ensemble species distribution modelling with transformed suitability values. Environmental Modelling & Software 100: 136-145. doi:10.1016/j.envsoft.2017.11.009
Elith J, Ferrier S, Huettmann F & Leathwick J. 2005. The evaluation strip: A new and robust method for plotting predicted responses from species distribution models. Ecological Modelling 186: 280-289
See Also
ensemble.calibrate.models
and ensemble.raster
Examples
## Not run:
# get predictor variables
library(dismo)
predictor.files <- list.files(path=paste(system.file(package="dismo"), '/ex', sep=''),
pattern='grd', full.names=TRUE)
predictors <- stack(predictor.files)
# subset based on Variance Inflation Factors
predictors <- subset(predictors, subset=c("bio5", "bio6",
"bio16", "bio17"))
predictors <- stack(predictors)
predictors
predictors@title <- "base"
# presence points
presence_file <- paste(system.file(package="dismo"), '/ex/bradypus.csv', sep='')
pres <- read.table(presence_file, header=TRUE, sep=',')[,-1]
# the kfold function randomly assigns data to groups;
# groups are used as calibration (1/5) and training (4/5) data
groupp <- kfold(pres, 5)
pres_train <- pres[groupp != 1, ]
pres_test <- pres[groupp == 1, ]
# choose background points
background <- randomPoints(predictors, n=1000, extf=1.00)
colnames(background)=c('lon', 'lat')
groupa <- kfold(background, 5)
backg_train <- background[groupa != 1, ]
backg_test <- background[groupa == 1, ]
# calibrate the models
# MAXLIKE not included as does not allow predictions for data.frames
# ENSEMBLE.min and ENSEMBLE.weight.min set very low to explore all
# algorithms.
# If focus is on actual ensemble, then set ENSEMBLE.min and
# ENSEMBLE.weight.min to more usual values
ensemble.calibrate <- ensemble.calibrate.models(x=predictors,
p=pres_train, a=backg_train,
pt=pres_test, at=backg_test,
ENSEMBLE.min=0.5, ENSEMBLE.weight.min = 0.001,
MAXENT=0, MAXNET=1, MAXLIKE=1, GBM=1, GBMSTEP=0, RF=1, CF=1,
GLM=1, GLMSTEP=1, GAM=1, GAMSTEP=1, MGCV=1, MGCVFIX=1,
EARTH=1, RPART=1, NNET=1, FDA=1, SVM=1, SVME=1,
BIOCLIM.O=1, BIOCLIM=1, DOMAIN=1, MAHAL=0, MAHAL01=1,
Yweights="BIOMOD",
PLOTS=FALSE, models.keep=TRUE)
# obtain data for plotting the evaluation strip
strip.data <- evaluation.strip.data(xn=predictors, steps=500,
models.list=ensemble.calibrate$models)
# in case predictions for DOMAIN failed
# however, ENSEMBLE should also be recalculated
DOMAIN.model <- ensemble.calibrate$models$DOMAIN
strip.data$plot.data[, "DOMAIN"] <- dismo::predict(object=DOMAIN.model,
x=strip.data$plot.data)
# in case predictions for MAHAL01 failed
predict.MAHAL01 <- function(model, newdata, MAHAL.shape) {
p <- dismo::predict(object=model, x=newdata)
p <- p - 1 - MAHAL.shape
p <- abs(p)
p <- MAHAL.shape / p
return(as.numeric(p))
}
MAHAL01.model <- ensemble.calibrate$models$MAHAL01
MAHAL.shape1 <- ensemble.calibrate$models$formulae$MAHAL.shape
strip.data$plot.data[, "MAHAL01"] <- predict.MAHAL01(model=MAHAL01.model,
newdata=strip.data$plot.data, MAHAL.shape=MAHAL.shape1)
# create graphs
evaluation.strip.plot(data=strip.data$plot.data, variable.focal="bio6",
TrainData=strip.data$TrainData,
type="o", col="red")
evaluation.strip.plot(data=strip.data$plot.data, model.focal="ENSEMBLE",
TrainData=strip.data$TrainData,
type="o", col="red")
## End(Not run)