maximize_metric {cutpointr} R Documentation

## Optimize a metric function in binary classification

### Description

Given a function for computing a metric in `metric_func`, these functions maximize or minimize that metric by selecting an optimal cutpoint. The metric function should accept the following inputs:

• `tp`: vector of number of true positives

• `fp`: vector of number of false positives

• `tn`: vector of number of true negatives

• `fn`: vector of number of false negatives

### Usage

```maximize_metric(
data,
x,
class,
metric_func = youden,
pos_class = NULL,
neg_class = NULL,
direction,
tol_metric,
use_midpoints,
...
)

minimize_metric(
data,
x,
class,
metric_func = youden,
pos_class = NULL,
neg_class = NULL,
direction,
tol_metric,
use_midpoints,
...
)
```

### Arguments

 `data` A data frame or tibble in which the columns that are given in x and class can be found. `x` (character) The variable name to be used for classification, e.g. predictions or test values. `class` (character) The variable name indicating class membership. `metric_func` (function) A function that computes a metric to be maximized. See description. `pos_class` The value of class that indicates the positive class. `neg_class` The value of class that indicates the negative class. `direction` (character) Use ">=" or "<=" to select whether an x value >= or <= the cutoff predicts the positive class. `tol_metric` All cutpoints will be returned that lead to a metric value in the interval [m_max - tol_metric, m_max + tol_metric] where m_max is the maximum achievable metric value. This can be used to return multiple decent cutpoints and to avoid floating-point problems. `use_midpoints` (logical) If TRUE (default FALSE) the returned optimal cutpoint will be the mean of the optimal cutpoint and the next highest observation (for direction = ">") or the next lowest observation (for direction = "<") which avoids biasing the optimal cutpoint. `...` Further arguments that will be passed to `metric_func`.

### Details

The above inputs are arrived at by using all unique values in `x`, Inf, or -Inf as possible cutpoints for classifying the variable in class.

### Value

A tibble with the columns `optimal_cutpoint`, the corresponding metric value and `roc_curve`, a nested tibble that includes all possible cutoffs and the corresponding numbers of true and false positives / negatives and all corresponding metric values.

Other method functions: `maximize_boot_metric()`, `maximize_gam_metric()`, `maximize_loess_metric()`, `maximize_spline_metric()`, `oc_manual()`, `oc_mean()`, `oc_median()`, `oc_youden_kernel()`, `oc_youden_normal()`
```cutpointr(suicide, dsi, suicide, method = maximize_metric, metric = accuracy)