Skip to contents

Two-dimensional ROC analysis for evaluating diagnostic accuracy of dual biomarker combinations or multi-parametric tests. When two biomarkers are measured simultaneously (e.g., ER and PR in breast cancer, dual IHC markers, imaging plus biomarker), 2D ROC analysis finds the optimal combined decision rule in two-dimensional marker space. Unlike analyzing markers separately and combining results, 2D ROC jointly optimizes both thresholds to maximize diagnostic accuracy. Provides joint sensitivity/specificity, optimal threshold pairs, 3D ROC surface visualization, and comparison to single-marker performance. Essential for multiplex assays, dual biomarker panels, and situations where neither marker alone is sufficient but combination improves diagnosis. Applications include ER/PR combinations, dual IHC (e.g., p16/Ki67), imaging radiomics plus molecular markers, and any scenario with two continuous diagnostic measurements.

Usage

roc2d(
  data,
  marker1,
  marker2,
  outcome,
  positive_level,
  decision_rule = "linear",
  compare_single_markers = TRUE,
  plot_2d_roc_surface = TRUE,
  plot_threshold_region = TRUE,
  show_interpretation = TRUE
)

Arguments

data

.

marker1

.

marker2

.

outcome

.

positive_level

.

decision_rule

.

compare_single_markers

.

plot_2d_roc_surface

.

plot_threshold_region

.

show_interpretation

.

Value

A results object containing:

results$instructionsa html
results$individualAUCsa table
results$combinationRulesa table
results$optimalCombinationa table
results$roc2dPlotan image
results$interpretationa html

Tables can be converted to data frames with asDF or as.data.frame. For example:

results$individualAUCs$asDF

as.data.frame(results$individualAUCs)

Examples

result <- roc2d(
    data = dual_marker_data,
    marker1 = "biomarker_A",
    marker2 = "biomarker_B",
    outcome = "disease_status"
)
#> Error: object 'dual_marker_data' not found