Title: Multiclass Performance Evaluation Toolkit
Version: 0.1.0
Description: Implementation of custom 'tidymodels' metrics for multi-class prediction models with a single negative class. Currently are implemented macro-average sensitivity and specificity as in Mortaz, Ebrahim (2020) "Imbalance accuracy metric for model selection in multi-class imbalance classification problems” <doi:10.1016/j.knosys.2020.106490> and a generalized weighted Youden index as in Li, D.L., Shen F., Yin Y., Peng J.X and Chen P.Y. (2013) “Weighted Youden index and its two-independent-sample comparison based on weighted sensitivity and specificity” <doi:10.3760/cma.j.issn.0366-6999.20123102>.
License: MIT + file LICENSE
Suggests: testthat (≥ 3.0.0)
Config/testthat/edition: 3
Encoding: UTF-8
RoxygenNote: 7.3.3
URL: https://github.com/astamm/mupet, https://astamm.github.io/mupet/
BugReports: https://github.com/astamm/mupet/issues
Imports: rlang, yardstick
NeedsCompilation: no
Packaged: 2026-01-16 14:36:25 UTC; stamm-a
Author: Lise Bellanger [aut], Manon Simonot [aut], Aymeric Stamm ORCID iD [aut, cre]
Maintainer: Aymeric Stamm <aymeric.stamm@cnrs.fr>
Repository: CRAN
Date/Publication: 2026-01-21 20:10:09 UTC

Macro Average Sensitivity

Description

This function computes the macro-average sensitivity for a multi-class prediction model. It assumes that the negative class is the first one.

Usage

macro_average_sensitivity_vec(
  truth,
  estimate,
  estimator = NULL,
  na_rm = TRUE,
  case_weights = NULL,
  event_level = "first",
  ...
)

macro_average_sensitivity(data, ...)

## S3 method for class 'data.frame'
macro_average_sensitivity(
  data,
  truth,
  estimate,
  estimator = NULL,
  na_rm = TRUE,
  case_weights = NULL,
  event_level = "first",
  ...
)

Arguments

truth

The column identifier for the true class results (that is a factor).

estimate

The column identifier for the predicted class results (that is also factor).

estimator

One of: "binary", "macro", "macro_weighted", or "micro" to specify the type of averaging to be done.

na_rm

A logical value indicating whether NA values should be stripped before the computation proceeds.

case_weights

The optional column identifier for case weights.

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".

...

Currently unused.

data

Either a data.frame containing the columns specified by the truth and estimate arguments, or a table/matrix where the true class results should be in the columns of the table.

Value

A scalar storing the value of the macro-average sensitivity score.

Examples

fold1 <- subset(yardstick::hpc_cv, Resample == "Fold01")
macro_average_sensitivity_vec(fold1$obs, fold1$pred)
macro_average_sensitivity(fold1, obs, pred)

Macro Average Specificity

Description

This function computes the macro-average specificity for a multi-class prediction model. It assumes that the negative class is the first one.

Usage

macro_average_specificity_vec(
  truth,
  estimate,
  estimator = NULL,
  na_rm = TRUE,
  case_weights = NULL,
  event_level = "first",
  ...
)

macro_average_specificity(data, ...)

## S3 method for class 'data.frame'
macro_average_specificity(
  data,
  truth,
  estimate,
  estimator = NULL,
  na_rm = TRUE,
  case_weights = NULL,
  event_level = "first",
  ...
)

Arguments

truth

The column identifier for the true class results (that is a factor).

estimate

The column identifier for the predicted class results (that is also factor).

estimator

One of: "binary", "macro", "macro_weighted", or "micro" to specify the type of averaging to be done.

na_rm

A logical value indicating whether NA values should be stripped before the computation proceeds.

case_weights

The optional column identifier for case weights.

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".

...

Currently unused.

data

Either a data.frame containing the columns specified by the truth and estimate arguments, or a table/matrix where the true class results should be in the columns of the table.

Value

A scalar storing the value of the macro-average specificity score.

Examples

fold1 <- subset(yardstick::hpc_cv, Resample == "Fold01")
macro_average_specificity_vec(fold1$obs, fold1$pred)
macro_average_specificity(fold1, obs, pred)

Weighted Youden Index

Description

This function computes the weighted Youden index for a multi-class prediction model. It assumes that the negative class is the first one.

Usage

weighted_youden_index_vec(
  truth,
  estimate,
  sensitivity_weight = 0.5,
  estimator = NULL,
  na_rm = TRUE,
  case_weights = NULL,
  event_level = "first",
  ...
)

weighted_youden_index(data, ...)

## S3 method for class 'data.frame'
weighted_youden_index(
  data,
  truth,
  estimate,
  sensitivity_weight = 0.5,
  estimator = NULL,
  na_rm = TRUE,
  case_weights = NULL,
  event_level = "first",
  ...
)

Arguments

truth

The column identifier for the true class results (that is a factor).

estimate

The column identifier for the predicted class results (that is also factor).

sensitivity_weight

A scalar value specifying the weight to put on sensitivity. Defaults to 0.5 which puts equal weights to sensitivity and specificity.

estimator

One of: "binary", "macro", "macro_weighted", or "micro" to specify the type of averaging to be done.

na_rm

A logical value indicating whether NA values should be stripped before the computation proceeds.

case_weights

The optional column identifier for case weights.

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".

...

Currently unused.

data

Either a data.frame containing the columns specified by the truth and estimate arguments, or a table/matrix where the true class results should be in the columns of the table.

Value

A scalar storing the value of the weighted Youden index.

Examples

fold1 <- subset(yardstick::hpc_cv, Resample == "Fold01")
weighted_youden_index_vec(fold1$obs, fold1$pred)
weighted_youden_index(fold1, obs, pred)

mirror server hosted at Truenetwork, Russian Federation.