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 [35ms]
#>
#> ℹ Extracting predictor information for absence/background locations
#> ✔ Extracting predictor information for absence/background locations [66ms]
#>
# 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.1049815
#> 2 Equal training sensitivity and specificity 0.4869773
#> 3 Maximum training sensitivity plus specificity 0.2539199
#> Fractional predicted area Training omission rate
#> 1 0.4966 0.000000
#> 2 0.2344 0.234375
#> 3 0.3620 0.043750
# Get the logistic thresholds passing the test dataset
thresholds(model,
type = "logistic",
test = test)
#> Threshold Logistic value
#> 1 Minimum training presence 0.0998378
#> 2 Equal training sensitivity and specificity 0.4002765
#> 3 Maximum training sensitivity plus specificity 0.2265583
#> 4 Equal test sensitivity and specificity 0.3786336
#> 5 Maximum test sensitivity plus specificity 0.2412580
#> Fractional predicted area Training omission rate Test omission rate P-values
#> 1 0.4966 0.000000 0.0001968504 0
#> 2 0.2344 0.234375 0.0045275591 0
#> 3 0.3620 0.043750 0.0009842520 0
#> 4 0.2502 0.209375 0.0039370079 0
#> 5 0.3520 0.056250 0.0009842520 0