Graphical exploration of extrapolation or suitability pattern in the environmental and geographical space
Source:R/p_extra.R
p_extra.Rd
Graphical exploration of extrapolation or suitability pattern in the environmental and geographical space
Usage
p_extra(
training_data,
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data,
projection_data,
predictors = NULL,
geo_space = TRUE,
geo_position = "right",
prop_points = 0.2,
maxcells = 1e+05,
alpha_p = 0.5,
color_p = "black",
alpha_gradient = 0.5,
color_gradient = c("#FDE725", "#B3DC2B", "#6DCC57", "#36B677", "#1F9D87", "#25818E",
"#30678D", "#3D4988", "#462777", "#440154"),
theme = ggplot2::theme_classic()
)
Arguments
- training_data
data.frame. Database with response (0,1) and predictor values used to fit a model.
- x
character. Column name with spatial x coordinates
- y
character. Column name with spatial y coordinates
- pr_ab
character. Column name with species absence-presence, pseudo-absence-presence, or background-presence data (0,1).
- extra_suit_data
SpatRaster. Raster layer with extrapolation or suitability values. extra_suit_data must have the same resolution and extent than projection_data
- projection_data
SpatRaster. Raster layer with environmental variables used for model projection. projection_data must have the same resolution and extent than extra_suit_data
- predictors
character. Vector of predictor name(s) to calculate partial dependence plots. If NULL all predictors will be used. Default NULL.
- geo_space
logical. If TRUE will be produced a map. Default TRUE
- geo_position
character. Map position regarding plot of environmental space, right, left, bottom, or upper. Default "right"
- prop_points
numeric. Proportion of cells from extra_suit_data and projection_data to select for plotting. default. 0.5.
- maxcells
integer. Maximum number of cells used to plot in the geographical space. Default 100000
- alpha_p
numeric. a value between 0 to 1 to control transparency of presence-absence points. Lower values corresponding to more transparent colors. Default 0.5
- color_p
character. A vector with a color used to color presence-absence points. Default "black"
- alpha_gradient
numeric. a value between 0 to 1 to control transparency of projection data Lower values corresponding to more transparent colors. Default 0.5
- color_gradient
character. A vector with colors used to color projection data. Default c( "#FDE725", "#B3DC2B", "#6DCC57", "#36B677", "#1F9D87", "#25818E", "#30678D", "#3D4988", "#462777", "#440154")
- theme
ggplot2 theme. Default ggplot2::theme_classic()
Examples
if (FALSE) { # \dontrun{
require(dplyr)
require(terra)
require(ggplot2)
data(spp)
f <- system.file("external/somevar.tif", package = "flexsdm")
somevar <- terra::rast(f)
names(somevar) <- c("aet", "cwd", "tmx", "tmn")
spp$species %>% unique()
sp <- spp %>%
dplyr::filter(species == "sp2", pr_ab == 1) %>%
dplyr::select(x, y, pr_ab)
# Calibration area based on some criterion such as dispersal ability
ca <- calib_area(sp,
x = "x", y = "y",
method = c("buffer", width = 50000), crs = crs(somevar)
)
plot(somevar[[1]])
points(sp)
plot(ca, add = T)
# Sampling pseudo-absences
set.seed(10)
psa <- sample_pseudoabs(
data = sp,
x = "x",
y = "y",
n = nrow(sp) * 2,
method = "random",
rlayer = somevar,
calibarea = ca
)
# Merge presences and abasences databases to get a complete calibration data
sp_pa <- dplyr::bind_rows(sp, psa)
sp_pa
# Get environmental condition of calibration area
sp_pa_2 <- sdm_extract(data = sp_pa, x = "x", y = "y", env_layer = somevar)
sp_pa_2
# Measure extrapolation based on calibration data (presence and pseudo-absences)
# using SHAPE metric
extr <-
extra_eval(
training_data = sp_pa_2,
pr_ab = "pr_ab",
projection_data = somevar,
metric = "mahalanobis",
univar_comb = FALSE,
n_cores = 1,
aggreg_factor = 1
)
plot(extr)
## %######################################################%##
#### Explore extrapolation in the ####
#### environmental and geographical space ####
## %######################################################%##
p_extra(
training_data = sp_pa_2,
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data = extr,
projection_data = somevar,
geo_space = TRUE,
prop_points = 0.05
)
p_extra(
training_data = sp_pa_2,
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data = extr,
projection_data = somevar,
predictors = c("tmn", "cwd"),
geo_space = TRUE,
prop_points = 0.05
)
p_extra(
training_data = sp_pa_2,
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data = extr,
projection_data = somevar,
predictors = c("cwd", "tmx", "aet"),
geo_space = TRUE,
geo_position = "left",
prop_points = 0.05,
color_p = "white",
alpha_p = 0.5,
alpha_gradient = 0.2,
color_gradient = c("#404096", "#529DB7", "#7DB874", "#E39C37", "#D92120"),
theme = ggplot2::theme_dark()
)
p_extra(
training_data = sp_pa_2,
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data = extr,
projection_data = somevar,
geo_space = TRUE,
prop_points = 0.05,
color_p = "white",
alpha_p = 0.5,
alpha_gradient = 0.2,
color_gradient = c("#404096", "#529DB7", "#7DB874", "#E39C37", "#D92120"),
theme = ggplot2::theme_dark()
)
# Explore extrapolation only in the environmental space
p_extra(
training_data = sp_pa_2,
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data = extr,
projection_data = somevar,
geo_space = FALSE,
prop_points = 0.05,
color_p = "black",
color_gradient = c("#085CF8", "#65AF1E", "#F3CC1D", "#FC6A9B", "#D70500"),
theme = ggplot2::theme_minimal()
)
## %######################################################%##
#### Explore univariate ####
#### and combinatorial extrapolation ####
## %######################################################%##
extr <-
extra_eval(
training_data = sp_pa_2,
pr_ab = "pr_ab",
projection_data = somevar,
metric = "mahalanobis",
univar_comb = TRUE,
n_cores = 1,
aggreg_factor = 1
)
plot(extr)
p_extra(
training_data = sp_pa_2,
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data = extr$uni_comb, # use uni_comb layer
projection_data = somevar,
geo_space = TRUE,
prop_points = 0.05,
color_gradient = c("#B3DC2B", "#25818E")
)
## %######################################################%##
#### With p_extra also is possible ####
#### to explore the patterns of suitability ####
## %######################################################%##
sp_pa_2 <- part_random(
data = sp_pa_2,
pr_ab = "pr_ab",
method = c(method = "kfold", folds = 5)
)
rf_m1 <- fit_raf(
data = sp_pa_2,
response = "pr_ab",
predictors = c("aet", "cwd", "tmx", "tmn"),
partition = ".part",
thr = c("max_sorensen")
)
suit <- sdm_predict(models = rf_m1, pred = somevar)
plot(suit$raf)
suit <- suit$raf
# Pasterns of suitability in geographical and environmental space
p_extra(
training_data = sp_pa_2,
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data = suit,
projection_data = somevar,
geo_space = TRUE,
prop_points = 0.05,
)
# Pasterns of suitability plotting as points only presences
p_extra(
training_data = sp_pa_2 %>%
dplyr::filter(pr_ab == 1),
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data = suit,
projection_data = somevar,
geo_space = TRUE,
prop_points = 0.05,
)
# Pasterns of suitability in the environmental space only
# and plotting as points only presences
p_extra(
training_data = sp_pa_2 %>%
dplyr::filter(pr_ab == 1),
x = "x",
y = "y",
pr_ab = "pr_ab",
extra_suit_data = suit,
projection_data = somevar,
geo_space = FALSE,
prop_points = 0.05,
)
} # }