Use threshold-based, logistic or linear conversion method to convert predicted suitability map to presence-absence map.
Usage
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
)
Arguments
- suitability
(
stars
orRasterLayer
) The suitability raster.- method
(
character
) The conversion method, must be one of 'threshold', 'logistic', and 'linear'. The default is 'logistic'.- beta
(
numeric
) Works for 'threshold' or 'logistic' method. Ifmethod
is threshold, thenbeta
is the threshold value to cutoff. Ifmethod
is logistic, it is the sigmoid midpoint. The default is0.5
.- alpha
(
numeric
) Works for logistic method. It is the logistic growth rate or steepness of the curve. The default is-.05
.- a
(
numeric
) Works for linear method. It is the slope of the line. The default is1
.- b
(
numeric
) Works for linear method. It is the intercept of the line. The default is0
.- species_prevalence
(
numeric
orNA
) Works for all three methods. It is the species prevalence to classify suitability map. It could beNA
, when the will be calculated automatically based on other arguments. The default isNA
.- threshold
(
numeric
) The threshold used to convert probability of occurrence to presence-absence map. It ranges in[0, 1]
. The default is 0.5.- seed
(
integer
) The seed for random progress. The default is10L
- visualize
(
logical
) IfTRUE
, plot map of suitability, probability of occurrence, and presence-absence together. The default isTRUE
.
Value
(PAConversion
) A list of
suitability (
stars
) The input suitability mapprobability_of_occurrence (
stars
) The map of occurrence probabilitypa_conversion (
list
) A list of conversion argumentspa_map (
stars
) The presence-absence map
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, 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 = 5,
sample_size = 0.8, ndim = 1L,
nthreads = 1,
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)
if (FALSE) { # \dontrun{
# 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)
} # }