Compute three threshold values: minimum training presence, equal training sensitivity and specificity and maximum training sensitivity plus specificity together with fractional predicted area and the omission rate. If a test dataset is provided it returns also the equal test sensitivity and specificity and maximum test sensitivity plus specificity thresholds and the p-values of the one-tailed binomial exact test.
Details
The equal training sensitivity and specificity minimizes the difference between sensitivity and specificity. The one-tailed binomial test checks that test points are predicted no better than by a random prediction with the same fractional predicted area.
Examples
# Acquire environmental variables
files <- list.files(path = file.path(system.file(package = "dismo"), "ex"),
                    pattern = "grd",
                    full.names = TRUE)
predictors <- terra::rast(files)
# Prepare presence and background locations
p_coords <- virtualSp$presence
bg_coords <- virtualSp$background
# Create SWD object
data <- prepareSWD(species = "Virtual species",
                   p = p_coords,
                   a = bg_coords,
                   env = predictors,
                   categorical = "biome")
#> ℹ Extracting predictor information for presence locations
#> ✔ Extracting predictor information for presence locations [20ms]
#> 
#> ℹ Extracting predictor information for absence/background locations
#> ✔ Extracting predictor information for absence/background locations [47ms]
#> 
# Split presence locations in training (80%) and testing (20%) datasets
datasets <- trainValTest(data,
                         test = 0.2,
                         only_presence = TRUE)
train <- datasets[[1]]
test <- datasets[[2]]
# Train a model
model <- train(method = "Maxnet",
               data = train,
               fc = "l")
# Get the cloglog thresholds
thresholds(model,
           type = "cloglog")
#>                                       Threshold Cloglog value
#> 1                     Minimum training presence    0.08913867
#> 2    Equal training sensitivity and specificity    0.49192908
#> 3 Maximum training sensitivity plus specificity    0.29045251
#>   Fractional predicted area Training omission rate
#> 1                    0.5332               0.000000
#> 2                    0.2376               0.237500
#> 3                    0.3412               0.059375
# Get the logistic thresholds passing the test dataset
thresholds(model,
           type = "logistic",
           test = test)
#>                                       Threshold Logistic value
#> 1                     Minimum training presence     0.08539202
#> 2    Equal training sensitivity and specificity     0.40374481
#> 3 Maximum training sensitivity plus specificity     0.25546924
#> 4        Equal test sensitivity and specificity     0.36816416
#> 5     Maximum test sensitivity plus specificity     0.21103523
#>   Fractional predicted area Training omission rate Test omission rate P-values
#> 1                    0.5332               0.000000       0.0000000000        0
#> 2                    0.2376               0.237500       0.0045275591        0
#> 3                    0.3412               0.059375       0.0019685039        0
#> 4                    0.2618               0.190625       0.0041338583        0
#> 5                    0.3736               0.043750       0.0005905512        0
