roc_auc_survival: Time-Dependent ROC AUC for Censored Data

View source: R/surv-roc_auc_survival.R

roc_auc_survivalR Documentation

Time-Dependent ROC AUC for Censored Data

Description

Compute the area under the ROC survival curve using predicted survival probabilities that corresponds to different time points.

Usage

roc_auc_survival(data, ...)

## S3 method for class 'data.frame'
roc_auc_survival(data, truth, ..., na_rm = TRUE, case_weights = NULL)

roc_auc_survival_vec(truth, estimate, na_rm = TRUE, case_weights = NULL, ...)

Arguments

data

A data.frame containing the columns specified by truth and ....

...

Not currently used.

truth

The column identifier for the true survival result (that is created using survival::Surv().). 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, an survival::Surv() object.

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. This should be an unquoted column name that evaluates to a numeric column in data. For ⁠_vec()⁠ functions, a numeric vector.

estimate

If truth is binary, a numeric vector of class probabilities corresponding to the "relevant" class. Otherwise, a matrix with as many columns as factor levels of truth. It is assumed that these are in the same order as the levels of truth.

Details

This formulation takes survival probability predictions at one or more specific evaluation times and, for each time, computes the area under the ROC curve. To account for censoring, inverse probability of censoring weights (IPCW) are used in the calculations. See equation 7 of section 4.3 in Blanche at al (2013) for the details.

The column passed to ... should be a list column with one element per independent experiential unit (e.g. patient). The list column should contain data frames with several columns:

  • .eval_time: The time that the prediction is made.

  • .pred_survival: The predicted probability of survival up to .eval_time

  • .weight_censored: The case weight for the inverse probability of censoring.

The last column can be produced using parsnip::.censoring_weights_graf(). This corresponds to the weighting scheme of Graf et al (1999). The internal data set lung_surv shows an example of the format.

This method automatically groups by the .eval_time argument.

Smaller values of the score are associated with better model performance.

Value

A tibble with columns .metric, .estimator, and .estimate.

For an ungrouped data frame, the result has one row of values. For a grouped data frame, the number of rows returned is the same as the number of groups.

For roc_auc_survival_vec(), a numeric vector same length as the input argument eval_time. (or NA).

Author(s)

Emil Hvitfeldt

References

Blanche, P., Dartigues, J.-F. and Jacqmin-Gadda, H. (2013), Review and comparison of ROC curve estimators for a time-dependent outcome with marker-dependent censoring. Biom. J., 55: 687-704.

Graf, E., Schmoor, C., Sauerbrei, W. and Schumacher, M. (1999), Assessment and comparison of prognostic classification schemes for survival data. Statist. Med., 18: 2529-2545.

See Also

Compute the ROC survival curve with roc_curve_survival().

Other dynamic survival metrics: brier_survival_integrated(), brier_survival()

Examples

library(dplyr)

lung_surv %>%
  roc_auc_survival(
    truth = surv_obj,
    .pred
  )

yardstick documentation built on April 21, 2023, 9:08 a.m.