The autoplot function plots performance evaluation measures by using ggplot2 instead of the general R plot.

# S3 method for sscurves
autoplot(object, curvetype = c("ROC", "PRC"), ...)

# S3 method for mscurves
autoplot(object, curvetype = c("ROC", "PRC"), ...)

# S3 method for smcurves
autoplot(object, curvetype = c("ROC", "PRC"), ...)

# S3 method for mmcurves
autoplot(object, curvetype = c("ROC", "PRC"), ...)

# S3 method for sspoints
autoplot(object, curvetype = .get_metric_names("basic"), ...)

# S3 method for mspoints
autoplot(object, curvetype = .get_metric_names("basic"), ...)

# S3 method for smpoints
autoplot(object, curvetype = .get_metric_names("basic"), ...)

# S3 method for mmpoints
autoplot(object, curvetype = .get_metric_names("basic"), ...)

Arguments

object

An S3 object generated by evalmod. The autoplot function accepts the following codeS3 objects for two different modes, "rocprc" and "basic".

  1. ROC and Precision-Recall curves (mode = "rocprc")

    S3 object# of models# of test datasets
    sscurvessinglesingle
    mscurvesmultiplesingle
    smcurvessinglemultiple
    mmcurvesmultiplemultiple
  2. Basic evaluation measures (mode = "basic")

    S3 object# of models# of test datasets
    sspointssinglesingle
    mspointsmultiplesingle
    smpointssinglemultiple
    mmpointsmultiplemultiple

See the Value section of evalmod for more details.

curvetype

A character vector with the following curve types.

  1. ROC and Precision-Recall curves (mode = "rocprc")

    curvetypedescription
    ROCROC curve
    PRCPrecision-Recall curve

    Multiple curvetype can be combined, such as c("ROC", "PRC").

  2. Basic evaluation measures (mode = "basic")

    curvetypedescription
    errorNormalized ranks vs. error rate
    accuracyNormalized ranks vs. accuracy
    specificityNormalized ranks vs. specificity
    sensitivityNormalized ranks vs. sensitivity
    precisionNormalized ranks vs. precision
    mccNormalized ranks vs. Matthews correlation coefficient
    fscoreNormalized ranks vs. F-score

    Multiple curvetype can be combined, such as c("precision", "sensitivity").

...

Following additional arguments can be specified.

type

A character to specify the line type as follows.

"l"

lines

"p"

points

"b"

both lines and points

show_cb

A Boolean value to specify whether point-wise confidence bounds are drawn. It is effective only when calc_avg of the evalmod function is set to TRUE .

raw_curves

A Boolean value to specify whether raw curves are shown instead of the average curve. It is effective only when raw_curves of the evalmod function is set to TRUE.

show_legend

A Boolean value to specify whether the legend is shown.

ret_grob

A logical value to indicate whether autoplot returns a grob object. The grob object is internally generated by arrangeGrob. The grid.draw function takes a grob object and shows a plot. It is effective only when a multiple-panel plot is generated, for example, when curvetype is c("ROC", "PRC").

reduce_points

A Boolean value to decide whether the points should be reduced when mode = "rocprc". The points are reduced according to x_bins of the evalmod function. The default values is TRUE.

Value

The autoplot function returns a ggplot object for a single-panel plot and a frame-grob object for a multiple-panel plot.

See also

evalmod for generating an S3 object. fortify for converting a curves and points object to a data frame. plot for plotting the equivalent curves with the general R plot.

Examples

# \dontrun{ ## Load libraries library(ggplot2) library(grid) ################################################## ### Single model & single test dataset ### ## Load a dataset with 10 positives and 10 negatives data(P10N10) ## Generate an sscurve object that contains ROC and Precision-Recall curves sscurves <- evalmod(scores = P10N10$scores, labels = P10N10$labels) ## Plot both ROC and Precision-Recall curves autoplot(sscurves)
## Reduced/Full supporting points sampss <- create_sim_samples(1, 50000, 50000) evalss <- evalmod(scores = sampss$scores, labels = sampss$labels) # Reduced supporting point system.time(autoplot(evalss))
#> user system elapsed #> 0.194 0.010 0.210
# Full supporting points system.time(autoplot(evalss, reduce_points = FALSE))
#> user system elapsed #> 1.660 0.136 1.804
## Get a grob object for multiple plots pp1 <- autoplot(sscurves, ret_grob = TRUE) plot.new()
grid.draw(pp1)
## A ROC curve autoplot(sscurves, curvetype = "ROC")
## A Precision-Recall curve autoplot(sscurves, curvetype = "PRC")
## Generate an sspoints object that contains basic evaluation measures sspoints <- evalmod(mode = "basic", scores = P10N10$scores, labels = P10N10$labels) ## Normalized ranks vs. basic evaluation measures autoplot(sspoints)
## Normalized ranks vs. precision autoplot(sspoints, curvetype = "precision")
################################################## ### Multiple models & single test dataset ### ## Create sample datasets with 100 positives and 100 negatives samps <- create_sim_samples(1, 100, 100, "all") mdat <- mmdata(samps[["scores"]], samps[["labels"]], modnames = samps[["modnames"]]) ## Generate an mscurve object that contains ROC and Precision-Recall curves mscurves <- evalmod(mdat) ## ROC and Precision-Recall curves autoplot(mscurves)
## Reduced/Full supporting points sampms <- create_sim_samples(5, 50000, 50000) evalms <- evalmod(scores = sampms$scores, labels = sampms$labels) # Reduced supporting point system.time(autoplot(evalms))
#> user system elapsed #> 0.378 0.036 0.415
# Full supporting points system.time(autoplot(evalms, reduce_points = FALSE))
#> user system elapsed #> 7.248 0.898 8.155
## Hide the legend autoplot(mscurves, show_legend = FALSE)
## Generate an mspoints object that contains basic evaluation measures mspoints <- evalmod(mdat, mode = "basic") ## Normalized ranks vs. basic evaluation measures autoplot(mspoints)
## Hide the legend autoplot(mspoints, show_legend = FALSE)
################################################## ### Single model & multiple test datasets ### ## Create sample datasets with 100 positives and 100 negatives samps <- create_sim_samples(10, 100, 100, "good_er") mdat <- mmdata(samps[["scores"]], samps[["labels"]], modnames = samps[["modnames"]], dsids = samps[["dsids"]]) ## Generate an smcurve object that contains ROC and Precision-Recall curves smcurves <- evalmod(mdat, raw_curves = TRUE) ## Average ROC and Precision-Recall curves autoplot(smcurves, raw_curves = FALSE)
## Hide confidence bounds autoplot(smcurves, raw_curves = FALSE, show_cb = FALSE)
## Raw ROC and Precision-Recall curves autoplot(smcurves, raw_curves = TRUE, show_cb = FALSE)
## Reduced/Full supporting points sampsm <- create_sim_samples(4, 5000, 5000) mdatsm <- mmdata(sampsm$scores, sampsm$labels, expd_first = "dsids") evalsm <- evalmod(mdatsm, raw_curves = TRUE) # Reduced supporting point system.time(autoplot(evalsm, raw_curves = TRUE))
#> user system elapsed #> 0.205 0.003 0.209
# Full supporting points system.time(autoplot(evalsm, raw_curves = TRUE, reduce_points = FALSE))
#> user system elapsed #> 0.180 0.001 0.181
## Generate an smpoints object that contains basic evaluation measures smpoints <- evalmod(mdat, mode = "basic") ## Normalized ranks vs. average basic evaluation measures autoplot(smpoints)
################################################## ### Multiple models & multiple test datasets ### ## Create sample datasets with 100 positives and 100 negatives samps <- create_sim_samples(10, 100, 100, "all") mdat <- mmdata(samps[["scores"]], samps[["labels"]], modnames = samps[["modnames"]], dsids = samps[["dsids"]]) ## Generate an mscurve object that contains ROC and Precision-Recall curves mmcurves <- evalmod(mdat, raw_curves = TRUE) ## Average ROC and Precision-Recall curves autoplot(mmcurves, raw_curves = FALSE)
## Show confidence bounds autoplot(mmcurves, raw_curves = FALSE, show_cb = TRUE)
## Raw ROC and Precision-Recall curves autoplot(mmcurves, raw_curves = TRUE)
## Reduced/Full supporting points sampmm <- create_sim_samples(4, 5000, 5000) mdatmm <- mmdata(sampmm$scores, sampmm$labels, modnames = c("m1", "m2"), dsids = c(1, 2), expd_first = "modnames") evalmm <- evalmod(mdatmm, raw_curves = TRUE) # Reduced supporting point system.time(autoplot(evalmm, raw_curves = TRUE))
#> user system elapsed #> 0.313 0.010 0.323
# Full supporting points system.time(autoplot(evalmm, raw_curves = TRUE, reduce_points = FALSE))
#> user system elapsed #> 0.743 0.081 0.825
## Generate an mmpoints object that contains basic evaluation measures mmpoints <- evalmod(mdat, mode = "basic") ## Normalized ranks vs. average basic evaluation measures autoplot(mmpoints)
################################################## ### N-fold cross validation datasets ### ## Load test data data(M2N50F5) ## Speficy nessesary columns to create mdat cvdat <- mmdata(nfold_df = M2N50F5, score_cols = c(1, 2), lab_col = 3, fold_col = 4, modnames = c("m1", "m2"), dsids = 1:5) ## Generate an mmcurve object that contains ROC and Precision-Recall curves cvcurves <- evalmod(cvdat) ## Average ROC and Precision-Recall curves autoplot(cvcurves)
## Show confidence bounds autoplot(cvcurves, show_cb = TRUE)
## Generate an mmpoints object that contains basic evaluation measures cvpoints <- evalmod(cvdat, mode = "basic") ## Normalized ranks vs. average basic evaluation measures autoplot(cvpoints)
# }