confu_mat_optim: Function to find the cut-off threshold that optimizes the...

View source: R/confu_mat_optim.R

confu_mat_optimR Documentation

Function to find the cut-off threshold that optimizes the confusion matrix

Description

The function finds out which is the best cut-off threshold that optimizes the confusion matrix based on any of the entries of the confusion matrix (a,b,c,d) or by Kappa, TSS, Prevalence, Specificity, Sensibility, Correct Classification Rate, Miss Classification Rate.

Usage

confu_mat_optim(
  sdm_raster,
  valData,
  longitude,
  latitude,
  pres_abs,
  optim_by = "kappa",
  th_range = c(0, 1),
  step = 0.005
)

Arguments

sdm_raster

Continuos predicition raster.

valData

A data.frame or a matrix with validation data. The data must contain longitude, latitude, and a column of presences (1) and absences (0).

longitude

Column name of the longitude data

latitude

Column name of the latitude data

pres_abs

Column name of presences and absences. The presences have to represented by 1 and the absences with 0.

optim_by

The optimation should be by any of the following options: kappa, tss, a, b, c, d, correct_class_rate, miss_cla_rate, posit_pre_pow, nega_pre_pow, comission_error,or by omission_error.

th_range

A vector with the minimum and max range of threshold values used in the searching process.

step

A numeric value representing the step size to be used in the searching process.

Value

Returns a data.frame with the values of the confusion matrix, kappa, tss, prevalence, specificity, sensibility,correct classification rate (correct_class_rate), miss classification rate (miss_cla_rate), positive predictive power (posit_pre_pow), negative predictive power (nega_pre_pow), comission error (comission_error) and omission error (omission_error).

References

Fielding, A.H. and Bell,J. (1997) A review of methods for the assessment of prediction errors in conservation presence/absence models. Environ. Conserv., 24, 38–49.

Examples

## Not run: 
# Read a Ambystoma tigrinum model
sdm_model <- raster::raster(file.path(system.file("extdata",
                                                     package = "ntbox"),
                                                     "ambystoma_model.tif"))
# Validation data with presences and absences
validation_data <- utils::read.csv(file.path(system.file("extdata",
                                                     package = "ntbox"),
                                                     "ambystoma_validation.csv"))
# ----------------------------------------------------------------------------------
# Optimization by Kappa metric
# ----------------------------------------------------------------------------------
kappa_threshold <- confu_mat_optim(sdm_raster = sdm_model,
                                      valData = validation_data,
                                      longitude = "longitude",
                                      latitude = "latitude",
                                      pres_abs = "presence_absence",
                                      optim_by = "kappa",
                                      th_range = c(0.005,0.5),step = 0.005)

# Convert continuos model to binary by using Kappa optimization threshold
sdm_bin_kappa <- sdm_model >= kappa_threshold$threshold[1]
# Plot binary model
raster::plot(sdm_bin_kappa)
# ----------------------------------------------------------------------------------
# Optimization by Sensibility.
# ----------------------------------------------------------------------------------
sensibility_threshold <- confu_mat_optim(sdm_raster = sdm_model,
                                         valData = validation_data,
                                         longitude = "longitude",
                                         latitude = "latitude",
                                         pres_abs = "presence_absence",
                                         optim_by = "sensibility",
                                         th_range = c(0.005,0.5),step = 0.005)

# Convert the continuous model to binary by using Sensibility optimization threshold
sdm_bin_sensibility <- sdm_model >= sensibility_threshold$threshold[1]
# Plot binary model
raster::plot(sdm_bin_sensibility)

## End(Not run)

luismurao/ntbox documentation built on April 3, 2024, 5:47 a.m.