Skip to contents

Compute the max TSS of a given model.

Usage

tss(model, test = NULL)

Arguments

model

SDMmodel or SDMmodelCV object.

test

SWD object when model is an SDMmodel object; logical or SWD object when model is an SDMmodelCV object. If not provided it computes the training TSS, see details.

Value

The value of the TSS of the given model.

Details

For SDMmodelCV objects, the function computes the mean of the training TSS values of the k-folds. If test = TRUE it computes the mean of the testing TSS values for the k-folds. If test is an SWD object, it computes the mean TSS values for the provided testing dataset.

References

Allouche O., Tsoar A., Kadmon R., (2006). Assessing the accuracy of species distribution models: prevalence, kappa and the true skill statistic (TSS). Journal of Applied Ecology, 43(6), 1223–1232.

See also

aicc and auc.

Author

Sergio Vignali

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 [21ms]
#> 
#>  Extracting predictor information for absence/background locations
#>  Extracting predictor information for absence/background locations [44ms]
#> 

# 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")

# Compute the training TSS
tss(model)
#> [1] 0.59385

# Compute the testing TSS
tss(model,
    test = test)
#> [1] 0.6312

# Same example but using cross validation instead of training and
# testing datasets. Create 4 random folds splitting only the presence
# locations
folds = randomFolds(train,
                    k = 4,
                    only_presence = TRUE)

model <- train(method = "Maxnet",
               data = train,
               fc = "l",
               folds = folds)

# Compute the training TSS
tss(model)
#> [1] 0.5953833

# Compute the testing TSS
tss(model,
    test = TRUE)
#> [1] 0.587825

# Compute the TSS for the held apart testing dataset
tss(model,
    test = test)
#> [1] 0.625625