Are two ROC curves paired?
are.paired.RdThis 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
TRUEand the ROC curves can be paired, the two paired ROC curves withNAs removed will be returned.- reuse.auc, reuse.ci, reuse.smooth
if
return.paired.rocs=TRUE, determines ifauc,ciandsmoothshould be re-computed (with the same parameters than the original ROC curves)- ...
additionnal arguments for
are.paired.roc. Ignored inare.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 responses are different, this can be
due to missing values differing between the curves. In this case, the
function will strip all NAs 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
NAs values removed in both curves.
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")