Calculate spatially marginal, independence, and SHAP-based response figures. They can help to diagnose both how and where the species responses to environmental variables.
spatial_response(
model,
var_occ,
variables,
shap_nsim = 0,
seed = 10L,
visualize = FALSE
)
(isolation_forest
). It could
be the item model
of POIsotree
made by function isotree_po
.
(data.frame
, tibble
) The data.frame
style table that
include values of environmental variables at occurrence locations.
(stars
) The stars
of environmental variables.
It should have multiple attributes
instead of dims
.
If you have raster
object instead, you
could use st_as_stars
to convert it to stars
or use
read_stars
directly read source data as a stars
.
You also could use item variables
of POIsotree
made by function
isotree_po
.
(integer
) The number of Monte Carlo repetitions in SHAP
method to use for estimating each Shapley value. See details in documentation
of function explain
in package fastshap
. 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 function explain
in package fastshap
. The default is 0. Usually a value 10 - 20 is enough.
(integer
) The seed for any random progress. The default is 10L
.
(logical
) if TRUE
, plot the response curves.
The default is FALSE
.
(SpatialResponse
) A list of
spatial_marginal_response (list
) A list of stars
object of spatially
marginal response of all variables
spatial_independent_response (list
) A list of stars
object of spatially
independent response of all variables
spatial_shap_dependence (list
) A list of stars
object of spatially
SHAP-based response of all variables
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.
# 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)
#'