Calculate spatially marginal, independence, and SHAP-based response figures. They can help to diagnose both how and where the species responses to environmental variables.
Arguments
- model
(
isolation_forest
). It could be the itemmodel
ofPOIsotree
made by functionisotree_po
.- var_occ
(
data.frame
,tibble
) Thedata.frame
style table that include values of environmental variables at occurrence locations.- variables
(
stars
) Thestars
of environmental variables. It should have multipleattributes
instead ofdims
. If you haveraster
object instead, you could usest_as_stars
to convert it tostars
or useread_stars
directly read source data as astars
. You also could use itemvariables
ofPOIsotree
made by functionisotree_po
.- shap_nsim
(
integer
) The number of Monte Carlo repetitions in SHAP method to use for estimating each Shapley value. See details in documentation of functionexplain
in packagefastshap
. Set it to 0 if you don't want to make SHAP-based spatial dependence. When the number of variables is large, a smaller shap_nsim could be used. Be cautious that making SHAP-based spatial dependence will be slow because of Monte-Carlo computation for all pixels. But it is worth the time because it is much more informative. See details in documentation of functionexplain
in packagefastshap
. The default is 0. Usually a value 10 - 20 is enough.- seed
(
integer
) The seed for any random progress. The default is10L
.- visualize
(
logical
) ifTRUE
, plot the response curves. The default isFALSE
.
Value
(SpatialResponse
) A list of
spatial_marginal_response (
list
) A list ofstars
object of spatially marginal response of all variablesspatial_independent_response (
list
) A list ofstars
object of spatially independent response of all variablesspatial_shap_dependence (
list
) A list ofstars
object of spatially SHAP-based response of all variables
Details
The values show how each environmental variable affects the modeling prediction in space. These maps could help to answer questions of where in terms of environmental response. Compared to marginal dependence or independent dependence maps, SHAP-based maps are way more informative because SHAP-based dependence explain the contribution of each variable to final result.
Examples
# Using a pseudo presence-only occurrence dataset of
# virtual species provided in this package
library(dplyr)
library(sf)
library(stars)
library(itsdm)
# Prepare data
data("occ_virtual_species")
obs_df <- occ_virtual_species %>% filter(usage == "train")
eval_df <- occ_virtual_species %>% filter(usage == "eval")
x_col <- "x"
y_col <- "y"
obs_col <- "observation"
# Format the observations
obs_train_eval <- format_observation(
obs_df = obs_df, eval_df = eval_df,
x_col = x_col, y_col = y_col, obs_col = obs_col,
obs_type = "presence_only")
env_vars <- system.file(
'extdata/bioclim_tanzania_10min.tif',
package = 'itsdm') %>% read_stars() %>%
slice('band', c(1, 5, 12))
# With imperfect_presence mode,
mod <- isotree_po(
obs_mode = "imperfect_presence",
obs = obs_train_eval$obs,
obs_ind_eval = obs_train_eval$eval,
variables = env_vars, ntrees = 20,
sample_size = 0.8, ndim = 1L,
seed = 123L, nthreads = 1,
response = FALSE,
spatial_response = FALSE,
check_variable = FALSE)
spatial_responses <- spatial_response(
model = mod$model,
var_occ = mod$vars_train,
variables = mod$variables,
shap_nsim = 1)
plot(spatial_responses)
#'