--- title: "Governed Decision Thresholds and Abstention" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Governed Decision Thresholds and Abstention} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>") library(gp3ml) ``` This article separates probability estimation from the scientific decision rule. gp3ml does not treat 0.5 as a universally justified decision threshold. Thresholds must be predeclared or selected using analysis/inner-resampling data, never an outer assessment or independent external-validation set. ```{r} truth <- factor(rep(c("pass", "review"), 20), levels = c("pass", "review")) probability <- seq(0.05, 0.95, length.out = 40) evaluation <- evaluate_gazepoint_thresholds( truth = truth, probability = probability, positive = "review", thresholds = seq(0.2, 0.8, by = 0.05) ) rule <- select_gazepoint_threshold( evaluation, metric = "balanced_accuracy", direction = "maximize", generalization_target = "new_participants", scientific_justification = "Balance sensitivity and specificity for predefined recording-quality review status." ) validate_gazepoint_decision_rule(rule, require_threshold = TRUE) plot(evaluation) ``` An abstention interval can be declared when the scientific protocol permits withholding a forced classification. Abstentions must be reported explicitly, including coverage and error among non-abstained predictions.