inst/doc/basic-use.R

## ----knitr-options, include=FALSE---------------------------------------------
knitr::opts_chunk$set(comment = "#>",
                      collapse = TRUE,
                      eval = FALSE,
                      fig.align = "center")

## ----load-pkgs----------------------------------------------------------------
# library(ggplot2)    # To plot locations
# library(maps)       # To access useful maps
# library(rasterVis)  # To plot raster objects

## ----get-predictors-----------------------------------------------------------
# files <- list.files(path = file.path(system.file(package = "dismo"), "ex"),
#                     pattern = "grd",
#                     full.names = TRUE)

## ----create-raster-object-----------------------------------------------------
# predictors <- terra::rast(files)

## ----names-predicrtors--------------------------------------------------------
# names(predictors)

## ----plot-bio1----------------------------------------------------------------
# gplot(predictors$bio1) +
#     geom_tile(aes(fill = value)) +
#     coord_equal() +
#     scale_fill_gradientn(colours = c("#2c7bb6", "#abd9e9", "#ffffbf", "#fdae61", "#d7191c"),
#                          na.value = "transparent",
#                          name = "°C x 10") +
#     labs(title = "Annual Mean Temperature",
#          x = "longitude",
#          y = "latitude") +
#     scale_x_continuous(expand = c(0, 0)) +
#     scale_y_continuous(expand = c(0, 0)) +
#     theme_minimal() +
#     theme(plot.title = element_text(hjust = 0.5),
#           axis.ticks.x = element_blank(),
#           axis.ticks.y = element_blank())

## ----load-SDMtune-------------------------------------------------------------
# library(SDMtune)

## ----help-dataset-------------------------------------------------------------
# help(virtualSp)
# p_coords <- virtualSp$presence
# bg_coords <- virtualSp$background

## ----plot-presence------------------------------------------------------------
# ggplot(map_data("world"), aes(long, lat)) +
#     geom_polygon(aes(group = group), fill = "grey95", color = "gray40", size = 0.2) +
#     geom_jitter(data = p_coords, aes(x = x, y = y), color = "red",
#                 alpha = 0.4, size = 1) +
#     labs(x = "longitude", y = "latitude") +
#     theme_minimal() +
#     theme(legend.position = "none") +
#     coord_fixed() +
#     scale_x_continuous(limits = c(-125, -32)) +
#     scale_y_continuous(limits = c(-56, 40))

## ----plot-bg_model-locations--------------------------------------------------
# ggplot(map_data("world"), aes(long, lat)) +
#     geom_polygon(aes(group = group), fill = "grey95", color = "gray40", size = 0.2) +
#     geom_jitter(data = as.data.frame(bg_coords), aes(x = x, y = y),
#                 color = "blue", alpha = 0.4, size = 0.5) +
#     labs(x = "longitude", y = "latitude") +
#     theme_minimal() +
#     theme(legend.position = "none") +
#     coord_fixed() +
#     scale_x_continuous(limits = c(-125, -32)) +
#     scale_y_continuous(limits = c(-56, 40))

## ----prepare-SWD--------------------------------------------------------------
# data <- prepareSWD(species = "Virtual species",
#                    p = p_coords,
#                    a = bg_coords,
#                    env = predictors,
#                    categorical = "biome")
# 

## ----show-SWD-object----------------------------------------------------------
# data

## ----show-data----------------------------------------------------------------
# head(data@data)

## ----show-coords-data---------------------------------------------------------
# head(data@coords)

## ----show-species-------------------------------------------------------------
# data@species

## ----save-SWD-single, eval=FALSE----------------------------------------------
# swd2csv(data,
#         file_name = "data.csv")

## ----save-SWD-double, eval=FALSE----------------------------------------------
# swd2csv(data,
#         file_name = c("presence.csv", "background.csv"))

## ----train--------------------------------------------------------------------
# model <- train(method = "Maxent",
#                data = data)

## ----print-model--------------------------------------------------------------
# model

## ----get-slots----------------------------------------------------------------
# slotNames(model)

## ----model-slots--------------------------------------------------------------
# slotNames(model@model)

## ----retrain------------------------------------------------------------------
# model <- train(method = "Maxent",
#                data = data,
#                fc = "lqph",
#                reg = 1,
#                iter = 500)

## ----model-witout-default-arguments-------------------------------------------
# model <- train(method = "Maxent",
#                data = data,
#                fc = "lh",
#                reg = 0.5,
#                iter = 700)

## ----predict-train------------------------------------------------------------
# pred <- predict(model,
#                 data = data,
#                 type = "cloglog")

## ----print-pred---------------------------------------------------------------
# head(pred)

## ----predict-presence---------------------------------------------------------
# p <- data@data[data@pa == 1, ]
# pred <- predict(model,
#                 data = p,
#                 type = "cloglog")
# tail(pred)

## ----predict-raster-----------------------------------------------------------
# map <- predict(model,
#                data = predictors,
#                type = "cloglog")

## ----print-raster-output------------------------------------------------------
# map

## ----save-map, eval=FALSE-----------------------------------------------------
# map <- predict(model,
#                data = predictors,
#                type = "cloglog",
#                file = "my_map",
#                format = "GTiff")

## ----exercise-----------------------------------------------------------------
# # First create the extent that surrounds Chile
# e = terra::ext(c(-77, -60, -56, -15))
# # Now use the extent to make the prediction
# map_e <- predict(model,
#                  data = predictors,
#                  type = "cloglog",
#                  extent = e)

## ----plot-map-default---------------------------------------------------------
# plotPred(map)

## ----plot-map-custom----------------------------------------------------------
# plotPred(map,
#          lt = "Habitat\nsuitability",
#          colorramp = c("#2c7bb6", "#abd9e9", "#ffffbf", "#fdae61", "#d7191c"))

## ----thresholds---------------------------------------------------------------
# ths <- thresholds(model,
#                   type = "cloglog")
# ths

## ----plot-pa------------------------------------------------------------------
# plotPA(map,
#        th = ths[3, 2])

## ----plot-and-save-pa, eval=FALSE---------------------------------------------
# plotPA(map,
#        th = ths[3, 2],
#        filename = "my_pa_map",
#        format = "GTiff")

## ----auc----------------------------------------------------------------------
# auc(model)

## ----plot-roc-----------------------------------------------------------------
# plotROC(model)

## ----tss----------------------------------------------------------------------
# tss(model)

## ----aicc---------------------------------------------------------------------
# aicc(model,
#      env = predictors)

## ----train-test---------------------------------------------------------------
# library(zeallot)  # For unpacking assignment
# c(train, test) %<-% trainValTest(data,
#                                  test = 0.2,
#                                  only_presence = TRUE,
#                                  seed = 25)

## ----trai-with-train-dataset--------------------------------------------------
# model <- train("Maxent",
#                data = train)

## ----evaluate-test------------------------------------------------------------
# auc(model)
# auc(model, test = test)

## ----plot-AUC-train-test------------------------------------------------------
# plotROC(model, test = test)

## ----experiment---------------------------------------------------------------
# # Create an empty data.frame
# output <- data.frame(matrix(NA, nrow = 10, ncol = 3))
# colnames(output) <- c("seed", "trainAUC", "testAUC")
# 
# # Create 10 different random seeds
# set.seed(25)
# seeds <- sample.int(1000, 10)
# 
# # Loop through the seeds
# for (i in 1:length(seeds)) {
#   # Make the train/test split
#   c(train, test) %<-% trainValTest(data,
#                                    test = 0.2,
#                                    seed = seeds[i],
#                                    only_presence = TRUE)
# 
#   # train the model
#   m <- train("Maxent", data = train)
# 
#   # Populate the output data.frame
#   output[i, 1] <- seeds[i]
#   output[i, 2] <- auc(m)
#   output[i, 3] <- auc(m, test = test)
# }
# 
# # Print the output
# output
# # compute the range of the testing AUC
# range(output[, 3])

## ----random-folds-------------------------------------------------------------
# folds <- randomFolds(data,
#                      k = 4,
#                      only_presence = TRUE,
#                      seed = 25)

## ----cv, eval=FALSE-----------------------------------------------------------
# cv_model <- train("Maxent",
#                   data = data,
#                   folds = folds)
# cv_model

## ----cv-auc-------------------------------------------------------------------
# auc(cv_model)
# auc(cv_model, test = TRUE)

## ----enmeval-block------------------------------------------------------------
# library(ENMeval)
# block_folds <- get.block(occ = data@coords[data@pa == 1, ],
#                          bg.coords = data@coords[data@pa == 0, ])
# 
# model <- train(method = "Maxent",
#                data = data,
#                fc = "l",
#                reg = 0.8,
#                folds = block_folds)

## ----enmeval-checherboard1----------------------------------------------------
# cb_folds <- get.checkerboard1(occ = data@coords[data@pa == 1, ],
#                               env = predictors,
#                               bg.coords = data@coords[data@pa == 0, ],
#                               aggregation.factor = 4)
# 
# model <- train(method = "Maxent",
#                data = data,
#                fc = "l",
#                reg = 0.8,
#                folds = cb_folds)

## ----blockCV------------------------------------------------------------------
# library(blockCV)
# # Create sf object
# sf_df <- sf::st_as_sf(cbind(data@coords, pa = data@pa),
#                       coords = c("X", "Y"),
#                       crs = terra::crs(predictors,
#                                        proj = TRUE))
# 
# # Spatial blocks
# spatial_folds <- cv_spatial(x = sf_df,
#                             column = "pa",
#                             rows_cols = c(8, 10),
#                             k = 5,
#                             hexagon = FALSE,
#                             selection = "systematic")
# 
# model <- train(method = "Maxent",
#                data = data,
#                fc = "l",
#                reg = 0.8,
#                folds = spatial_folds)

Try the SDMtune package in your browser

Any scripts or data that you put into this service are public.

SDMtune documentation built on Aug. 28, 2025, 1:10 a.m.