R: Are two ROC curves paired?

are.paired {pROC} | R Documentation

## Are two ROC curves paired?

### Description

This function determines if two ROC curves can be paired.

### Usage

    are.paired(...)
    ## S3 method for class 'auc'
    are.paired(roc1, roc2, ...)
    ## S3 method for class 'smooth.roc'
    are.paired(roc1, roc2, ...)
    ## S3 method for class 'roc'
    are.paired(roc1, roc2, return.paired.rocs=FALSE,
      reuse.auc = TRUE, reuse.ci = FALSE, reuse.smooth=TRUE, ...)

### Arguments

`roc1, roc2` | the two ROC curves to compare. Either “roc”, “auc” or “smooth.roc” objects (types can be mixed).
`return.paired.rocs` | if `TRUE` and the ROC curves can be paired, the two paired ROC curves with `NA`s removed will be returned.
`reuse.auc, reuse.ci, reuse.smooth` | if `return.paired.rocs=TRUE`, determines if `auc`, `ci` and `smooth` should be re-computed (with the same parameters than the original ROC curves)
`...` | additionnal arguments for `are.paired.roc`. Ignored in `are.paired.roc`

### Details

Two ROC curves are paired if they are built on two variables observed on the same sample.

In practice, the paired status is granted if the `response` and `levels` vector of both ROC curves are identical. If the `response`s are different, this can be due to missing values differing between the curves. In this case, the function will strip all `NA`s in both curves and check for identity again.

It can raise false positives if the responses are identical but correspond to different patients.

### Value

`TRUE` if `roc1` and `roc2` are paired, `FALSE` otherwise.

In addition, if `TRUE` and `return.paired.rocs=TRUE`, the following atributes are defined:

`roc1, roc2` | the two ROC curve with all `NA`s values removed in both curves.

### See Also

`roc`, `roc.test`

### Examples

    data(aSAH)
    aSAH.copy <- aSAH

    # artificially insert NAs for demonstration purposes
    aSAH.copy$outcome[42] <- NA
    aSAH.copy$s100b[24] <- NA
    aSAH.copy$ndka[1:10] <- NA

    # Call roc() on the whole data
    roc1 <- roc(aSAH.copy$outcome, aSAH.copy$s100b)
    roc2 <- roc(aSAH.copy$outcome, aSAH.copy$ndka)
    # are.paired can still find that the curves were paired
    are.paired(roc1, roc2) # TRUE

    # Removing the NAs manually before passing to roc() un-pairs the ROC curves
    nas <- is.na(aSAH.copy$outcome) | is.na(aSAH.copy$ndka)
    roc2b <- roc(aSAH.copy$outcome[!nas], aSAH.copy$ndka[!nas])
    are.paired(roc1, roc2b) # FALSE

    # Getting the two paired ROC curves with additional smoothing and ci options
    roc2$ci <- ci(roc2)
    paired <- are.paired(smooth(roc1), roc2, return.paired.rocs=TRUE, reuse.ci=TRUE)
    paired.roc1 <- attr(paired, "roc1")
    paired.roc2 <- attr(paired, "roc2")

[Package pROC version 1.16.0 Index]