The aim of the prcbench package is to provide a testing workbench for evaluating precision-recall curves under various conditions. It contains integrated interfaces for the following five tools. It also contains predefined test data sets.
| Tool | Link |
|---|---|
| ROCR | Tool web site, CRAN |
| AUCCalculator | Tool web site |
| PerfMeas | CRAN |
| PRROC | CRAN |
| precrec | Tool web site, CRAN |
PerfMeas requires Bioconductor libraries. To automatically install the dependencies, add a Bioconductor repository to the repository list as:
## Include a Bioconductor repository setRepositories(ind = 1:2)
Install the release version of prcbench from CRAN with install.packages("prcbench").
Alternatively, you can install a development version of prcbench from our GitHub repository. To install it:
Install devtools from CRAN with install.packages("devtools").
Install prcbench from the GitHub repository with devtools::install_github("takayasaito/prcbench").
You can manually install the dependencies from Bioconductor if install.packages fails to access the Bioconductor repository.
## try http:// if https:// URLs are not supported source("https://bioconductor.org/biocLite.R") biocLite("limma") biocLite("graph") biocLite("RBGL")
Some OSs require further configuration for rJava.
Use:
Sys.setenv(JAVA_HOME = "<path to JRE>")
or
#!/bin/bash
export JAVA_HOME = "<path to JRE>"
R CMD javareconfmicrobenchmark does not work on some OSs. prcbench uses system.time when microbenchmark is not available.
Introduction to prcbench - a package vignette that contains the descriptions of the functions with several useful examples. View the vignette with vignette("introduction", package = "prcbench") in R. The HTML version is also available on the GitPages.
Help pages - all the functions including the S3 generics have their own help pages with plenty of examples. View the main help page with help(package = "prcbench") in R. The HTML version is also available on the GitPages.
Following two examples show the basic usage of prcbench functions.
The run_benchmark function outputs the result of microbenchmark for specified tools.
## Load library library(prcbench) ## Run microbenchmark for aut5 on b10 testset <- create_testset("bench", "b10") toolset <- create_toolset(set_names = "auc5") res <- run_benchmark(testset, toolset) ## Use knitr::kable to show the result in a table format knitr::kable(res$tab, digits = 2)
| testset | toolset | toolname | min | lq | mean | median | uq | max | neval |
|---|---|---|---|---|---|---|---|---|---|
| b10 | auc5 | AUCCalculator | 1.90 | 2.27 | 5.20 | 2.87 | 3.98 | 14.96 | 5 |
| b10 | auc5 | PerfMeas | 0.07 | 0.07 | 56.98 | 0.07 | 0.09 | 284.61 | 5 |
| b10 | auc5 | precrec | 4.30 | 4.30 | 15.48 | 4.39 | 4.83 | 59.59 | 5 |
| b10 | auc5 | PRROC | 0.16 | 0.16 | 0.75 | 0.16 | 0.17 | 3.08 | 5 |
| b10 | auc5 | ROCR | 1.55 | 1.56 | 10.96 | 1.59 | 24.64 | 25.44 | 5 |
The run_evalcurve function evaluates precision-recall curves with predefined test datasets. The autoplot shows a plot with the result of the run_evalcurve function.
## ggplot2 is necessary to use autoplot library(ggplot2) ## Plot base points and the result of precrec on c1, c2, and c3 test sets testset <- create_testset("curve", c("c1", "c2", "c3")) toolset <- create_toolset("precrec") scores1 <- run_evalcurve(testset, toolset) autoplot(scores1)

## Plot the results of PerfMeas and PRROC on c1, c2, and c3 test sets toolset <- create_toolset(c("PerfMeas", "PRROC")) scores2 <- run_evalcurve(testset, toolset) autoplot(scores2, base_plot = FALSE)

Precrec: fast and accurate precision-recall and ROC curve calculations in R
Takaya Saito; Marc Rehmsmeier
Bioinformatics 2017; 33 (1): 145-147.
Classifier evaluation with imbalanced datasets - our web site that contains several pages with useful tips for performance evaluation on binary classifiers.
The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets - our paper that summarized potential pitfalls of ROC plots with imbalanced datasets and advantages of using precision-recall plots instead.