R: J-index

j_index {yardstick} | R Documentation

## J-index

### Description

Youden's J statistic is defined as:

`sens()` + `spec()` - 1

A related metric is Informedness, see the Details section for the relationship.

### Usage

    j_index(data, ...)

    ## S3 method for class 'data.frame'
    j_index(
      data,
      truth,
      estimate,
      estimator = NULL,
      na_rm = TRUE,
      event_level = yardstick_event_level(),
      ...
    )

    j_index_vec(
      truth,
      estimate,
      estimator = NULL,
      na_rm = TRUE,
      event_level = yardstick_event_level(),
      ...
    )

### Arguments

`data` | Either a `data.frame` containing the `truth` and `estimate` columns, or a `table`/`matrix` where the true class results should be in the columns of the table.
`...` | Not currently used.
`truth` | The column identifier for the true class results (that is a `factor`). This should be an unquoted column name although this argument is passed by expression and supports quasiquotation (you can unquote column names). For `_vec()` functions, a `factor` vector.
`estimate` | The column identifier for the predicted class results (that is also `factor`). As with `truth` this can be specified different ways but the primary method is to use an unquoted variable name. For `_vec()` functions, a `factor` vector.
`estimator` | One of: `"binary"`, `"macro"`, `"macro_weighted"`, or `"micro"` to specify the type of averaging to be done. `"binary"` is only relevant for the two class case. The other three are general methods for calculating multiclass metrics. The default will automatically choose `"binary"` or `"macro"` based on `estimate`.
`na_rm` | A `logical` value indicating whether `NA` values should be stripped before the computation proceeds.
`event_level` | A single string. Either `"first"` or `"second"` to specify which level of `truth` to consider as the "event". This argument is only applicable when `estimator = "binary"`. The default uses an internal helper that generally defaults to `"first"`, however, if the deprecated global option `yardstick.event_first` is set, that will be used instead with a warning.

### Details

The value of the J-index ranges from [0, 1] and is `1` when there are no false positives and no false negatives.

The binary version of J-index is equivalent to the binary concept of Informedness. Macro-weighted J-index is equivalent to multiclass informedness as defined in Powers, David M W (2011), equation (42).

### Value

A `tibble` with columns `.metric`, `.estimator`, and `.estimate` and 1 row of values.

For grouped data frames, the number of rows returned will be the same as the number of groups.

For `j_index_vec()`, a single `numeric` value (or `NA`).

### Relevant Level

There is no common convention on which factor level should automatically be considered the "event" or "positive" result when computing binary classification metrics. In `yardstick`, the default is to use the first level. To alter this, change the argument `event_level` to `"second"` to consider the last level of the factor the level of interest. For multiclass extensions involving one-vs-all comparisons (such as macro averaging), this option is ignored and the "one" level is always the relevant result.

### Multiclass

Macro, micro, and macro-weighted averaging is available for this metric. The default is to select macro averaging if a `truth` factor with more than 2 levels is provided. Otherwise, a standard binary calculation is done. See `vignette("multiclass", "yardstick")` for more information.

### Author(s)

Max Kuhn

### References

Youden, W.J. (1950). "Index for rating diagnostic tests". Cancer. 3: 32-35.

Powers, David M W (2011). "Evaluation: From Precision, Recall and F-Score to ROC, Informedness, Markedness and Correlation". Journal of Machine Learning Technologies. 2 (1): 37-63.

### See Also

Other class metrics: `accuracy()`, `bal_accuracy()`, `detection_prevalence()`, `f_meas()`, `kap()`, `mcc()`, `npv()`, `ppv()`, `precision()`, `recall()`, `sens()`, `spec()`

### Examples

    # Two class
    data("two_class_example")
    j_index(two_class_example, truth, predicted)

    # Multiclass
    library(dplyr)
    data(hpc_cv)

    hpc_cv %>%
      filter(Resample == "Fold01") %>%
      j_index(obs, pred)

    # Groups are respected
    hpc_cv %>%
      group_by(Resample) %>%
      j_index(obs, pred)

    # Weighted macro averaging
    hpc_cv %>%
      group_by(Resample) %>%
      j_index(obs, pred, estimator = "macro_weighted")

    # Vector version
    j_index_vec(
      two_class_example$truth,
      two_class_example$predicted
    )

    # Making Class2 the "relevant" level
    j_index_vec(
      two_class_example$truth,
      two_class_example$predicted,
      event_level = "second"
    )

[Package yardstick version 0.0.8 Index]