Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 6
)
## ----results='hide', message=FALSE, warning=FALSE-----------------------------
# Load packages
library(kuenm2)
library(terra)
# Current directory
getwd()
# Define new directory
#setwd("YOUR/DIRECTORY") # uncomment and modify if setting a new directory
# Saving original plotting parameters
original_par <- par(no.readonly = TRUE)
## ----import calibration results, warning=FALSE--------------------------------
# Import an example of calibration results
data("calib_results_maxnet", package = "kuenm2")
# Print calibration result
calib_results_maxnet
## ----import glm---------------------------------------------------------------
# Import calib_results_glm
data("calib_results_glm", package = "kuenm2")
# Print calibration result
calib_results_glm
## ----fit_selected not echo, warning=FALSE, echo=FALSE-------------------------
# Fit models using calibration results
fm <- fit_selected(calibration_results = calib_results_maxnet,
replicate_method = "kfolds", n_replicates = 4,
verbose = FALSE, progress_bar = FALSE)
## ----fit_selected not eval, warning=FALSE, eval=FALSE-------------------------
# # Fit selected models using calibration results
# fm <- fit_selected(calibration_results = calib_results_maxnet,
# replicate_method = "kfolds", n_replicates = 4)
# # Fitting replicates...
# # |========================================================================| 100%
# # Fitting full models...
# # |========================================================================| 100%
## ----explore fitted----------------------------------------------------------
# See names of selected models
names(fm$Models)
# See models inside Model 192
names(fm$Models$Model_192)
## ----omission error-----------------------------------------------------------
# Get omission error used to select models and calculate the theshold values
fm$omission_rate
## ----thresholds---------------------------------------------------------------
fm$thresholds
## ----all var resps------------------------------------------------------------
# Produce response curves for all variables in all fitted models
all_response_curves(fm)
## ----all var resps1-----------------------------------------------------------
# All response curves showing each model as a different line
all_response_curves(fm, show_lines = TRUE)
## ----all var resps2-----------------------------------------------------------
# All response curves for model 219
all_response_curves(fm, modelID = "Model_219")
## ----all var resps3-----------------------------------------------------------
# All response curves for model 219 (GAM for variability)
all_response_curves(fm, modelID = "Model_219", show_variability = TRUE)
# All response curves for model 219 (each curve is a replicate)
all_response_curves(fm, modelID = "Model_219", show_variability = TRUE,
show_lines = TRUE)
## ----Get variables------------------------------------------------------------
# Get variables with non-zero coefficients in the models
fm$Models[[1]]$Full_model$betas # From the first model selected
fm$Models[[2]]$Full_model$betas # From the second model selected
## ----response curve-----------------------------------------------------------
par(mfrow = c(2, 2), mar = c(4, 4, 1, 0.5)) # Set grid of plot
response_curve(models = fm, variable = "bio_1", las = 1)
response_curve(models = fm, variable = "bio_7", ylab = "", las = 1)
response_curve(models = fm, variable = "bio_12", las = 1)
response_curve(models = fm, variable = "bio_15", ylab = "", las = 1)
## ----response ID--------------------------------------------------------------
par(mfrow = c(2, 2), mar = c(4, 4, 2.5, 0.5)) # Set grid of plot
response_curve(models = fm, variable = "bio_1", modelID = "Model_192",
main = "Model_192", las = 1)
response_curve(models = fm, variable = "bio_1", modelID = "Model_219",
main = "Model_219", ylab = "", las = 1)
response_curve(models = fm, variable = "bio_7", modelID = "Model_192",
main = "Model_192", las = 1)
response_curve(models = fm, variable = "bio_7", modelID = "Model_219",
main = "Model_219", ylab = "", las = 1)
## ----extrapolation factor-----------------------------------------------------
par(mfrow = c(2, 2), mar = c(4, 4, 1, 0.5)) # Set grid of plot
response_curve(models = fm, variable = "bio_1", extrapolation_factor = 2,
las = 1)
response_curve(models = fm, variable = "bio_7", extrapolation_factor = 2,
ylab = "", las = 1)
response_curve(models = fm, variable = "bio_12", extrapolation_factor = 2,
las = 1)
response_curve(models = fm, variable = "bio_15", extrapolation_factor = 2,
ylab = "", las = 1)
## ----lower limit--------------------------------------------------------------
response_curve(models = fm, variable = "bio_12", extrapolation_factor = 0.1,
l_limit = 0)
## ----GAM vs lines-------------------------------------------------------------
par(mfrow = c(1, 2), mar = c(4, 4, 1, 0.5)) # Set grid of plot
response_curve(models = fm, variable = "bio_1", extrapolation_factor = 0.5,
las = 1)
response_curve(models = fm, variable = "bio_1", extrapolation_factor = 0.5,
show_lines = TRUE, ylab = "", las = 1)
## ----add points---------------------------------------------------------------
response_curve(models = fm, variable = "bio_1", show_lines = TRUE,
add_points = TRUE)
## ----bivariate----------------------------------------------------------------
# First, let's check the terms in the models fitted
## Model 192
fm$Models$Model_192$Full_model$betas
## Model 219
fm$Models$Model_219$Full_model$betas
# Example of a bivariate response plot
bivariate_response(models = fm, variable1 = "bio_1", variable2 = "bio_15",
modelID = "Model_192")
## ----bivariate1---------------------------------------------------------------
par(mfrow = c(1, 2), mar = c(4, 4, 2.5, 0.5))
# Bivariate response model 192
bivariate_response(models = fm, variable1 = "bio_1", variable2 = "bio_15",
modelID = "Model_192", add_bar = FALSE, main = "Model 192")
# Bivariate response model 219
bivariate_response(models = fm, variable1 = "bio_1", variable2 = "bio_15",
modelID = "Model_219", add_bar = FALSE, main = "Model 219",
ylab = "")
## ----var importance not echo, echo=FALSE--------------------------------------
# Calculate variable importance
imp <- variable_importance(models = fm, progress_bar = FALSE, verbose = FALSE)
## ----var importance not eval, eval=FALSE--------------------------------------
# # Calculate variable importance
# imp <- variable_importance(models = fm)
#
# # Calculating variable contribution for model 1 of 2
# # |======================================================================| 100%
# # Calculating variable contribution for model 2 of 2
# # |======================================================================| 100%
## ----print importance---------------------------------------------------------
imp
## ----plot importance----------------------------------------------------------
plot_importance(imp)
## ----one model importance-----------------------------------------------------
# Calculate variable importance for a specific selected Model
imp_192 <- variable_importance(models = fm, modelID = "Model_192",
progress_bar = FALSE)
# Plot variable contribution for model 192
plot_importance(imp_192, main = "Variable importance: Model 192")
## ----term importance----------------------------------------------------------
# Calculate variable importance for a specific selected Model
imp_terms <- variable_importance(models = fm, by_terms = TRUE,
progress_bar = FALSE)
# Check results
imp_terms
# Plot variable contribution for model 192
par(cex = 0.7, mar = c(3, 4, 2.5, 0.5)) # Set grid of plot
plot_importance(imp_terms, main = "Importance of variable terms")
## ----import new occ-----------------------------------------------------------
# Import independent records
data("new_occ", package = "kuenm2")
# See data structure
str(new_occ)
## ----extract var--------------------------------------------------------------
# Import raster layers
var <- terra::rast(system.file("extdata", "Current_variables.tif",
package = "kuenm2"))
# Extract variables to occurrences
new_data <- extract_occurrence_variables(occ = new_occ, x = "x", y = "y",
raster_variables = var)
# See data structure
str(new_data)
## ----add fake data------------------------------------------------------------
# Add some fake data beyond the limits of calibration ranges
fake_data <- data.frame("pr_bg" = c(1, 1, 1),
"x" = c(NA, NA, NA),
"y" = c(NA, NA, NA),
"bio_1" = c(10, 15, 23),
"bio_7" = c(12, 16, 20),
"bio_12" = c(2300, 2000, 1000),
"bio_15" = c(30, 40, 50),
"SoilType" = c(1, 1, 1))
# Bind data
new_data <- rbind(new_data, fake_data)
## -----------------------------------------------------------------------------
# Evaluate models with independent data
res_ind <- independent_evaluation(fitted_models = fm, new_data = new_data)
## -----------------------------------------------------------------------------
res_ind$evaluation
## -----------------------------------------------------------------------------
# Show the mop results for the last 5 independent records
res_ind$predictions$continuous[81:85 , c("mop_distance", "inside_range",
"n_var_out", "towards_low",
"towards_high")]
## -----------------------------------------------------------------------------
# Show the continuous predictions for the last 5 independent records
# Round to two decimal places
round(res_ind$predictions$continuous[81:85, 1:6], 2)
# Show the binary predictions for the last 5 independent records
res_ind$predictions$binary[81:85, 1:6]
## ----par_reset----------------------------------------------------------------
# Reset plotting parameters
par(original_par)
## ----save data, eval=FALSE----------------------------------------------------
# # Set directory to save (here, in a temporary directory)
# dir_to_save <- file.path(tempdir())
#
# # Save the data:
# saveRDS(fm, file.path(dir_to_save, "fitted_models.rds"))
#
# # Import data
# fm <- readRDS(file.path(dir_to_save, "fitted_models.rds"))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.