Use threshold-based, logistic or linear conversion method to convert predicted suitability map to presence-absence map.
convert_to_pa( suitability, method = "logistic", beta = 0.5, alpha = -0.05, a = 1, b = 0, species_prevalence = NA, threshold = 0.5, seed = 10L, visualize = TRUE )
RasterLayer) The suitability raster.
character) The conversion method, must be one of
'threshold', 'logistic', and 'linear'. The default is 'logistic'.
numeric) Works for 'threshold' or 'logistic' method.
method is threshold, then
beta is the threshold value to cutoff.
method is logistic, it is the sigmoid midpoint. The default is
numeric) Works for logistic method.
It is the logistic growth rate or steepness of the curve.
The default is
numeric) Works for linear method. It is the slope of the line.
The default is
numeric) Works for linear method.
It is the intercept of the line. The default is
NA) Works for all three methods.
It is the species prevalence to classify suitability map.
It could be
NA, when the will be calculated automatically
based on other arguments. The default is
numeric) The threshold used to convert probability of
occurrence to presence-absence map. It ranges in
[0, 1]. The default is 0.5.
integer) The seed for random progress. The default is
TRUE, plot map of suitability,
probability of occurrence, and presence-absence together.
The default is
PAConversion) A list of
stars) The input suitability map
stars) The map of occurrence probability
list) A list of conversion arguments
stars) The presence-absence map
Multiple methods and arguments could be used as a combination to do the conversion.
# 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, 16)) # 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 = 2L, seed = 123L, response = FALSE, spatial_response = FALSE, check_variable = FALSE) # Threshold conversion pa_thred <- convert_to_pa(mod$prediction, method = 'threshold', beta = 0.5, visualize = FALSE) pa_thred plot(pa_thred) # Logistic conversion pa_log <- convert_to_pa(mod$prediction, method = 'logistic', beta = 0.5, alpha = -.05) # Linear conversion pa_lin <- convert_to_pa(mod$prediction, method = 'linear', a = 1, b = 0) #'