All Projects → xrobin → Proc

xrobin / Proc

Display and analyze ROC curves in R and S+

Programming Languages

r
7636 projects

Projects that are alternatives of or similar to Proc

Scikit Plot
An intuitive library to add plotting functionality to scikit-learn objects.
Stars: ✭ 2,162 (+2443.53%)
Mutual labels:  plotting, plot
svg plot
Plot data in SVG format using C++ (header only) library .
Stars: ✭ 20 (-76.47%)
Mutual labels:  plot, plotting
Jkqtplotter
an extensive Qt5 Plotter framework (including a feature-richt plotter widget, a speed-optimized, but limited variant and a LaTeX equation renderer!), written fully in C/C++ and without external dependencies
Stars: ✭ 246 (+189.41%)
Mutual labels:  plotting, plot
Implot
Immediate Mode Plotting
Stars: ✭ 2,014 (+2269.41%)
Mutual labels:  plotting, plot
Uplot
📈 A small, fast chart for time series, lines, areas, ohlc & bars
Stars: ✭ 6,808 (+7909.41%)
Mutual labels:  plotting, plot
Nim Plotly
plotting library for nim-lang
Stars: ✭ 121 (+42.35%)
Mutual labels:  plotting, plot
vioplot
Development version of vioplot R package (CRAN maintainer)
Stars: ✭ 25 (-70.59%)
Mutual labels:  cran, plotting
charter
DSL and C Library to generate SVG Plot
Stars: ✭ 39 (-54.12%)
Mutual labels:  plot, plotting
Adjusttext
A small library for automatically adjustment of text position in matplotlib plots to minimize overlaps.
Stars: ✭ 731 (+760%)
Mutual labels:  plotting, plot
Termplotlib
Plotting on the command line
Stars: ✭ 294 (+245.88%)
Mutual labels:  plotting, plot
Highcharts Chart
Polymer Element wrapper for highcharts library. Seamlessly create various types of charts from one element.
Stars: ✭ 97 (+14.12%)
Mutual labels:  plotting, plot
Go Chartjs
golang library to make https://chartjs.org/ plots (this is vanilla #golang, not gopherjs)
Stars: ✭ 42 (-50.59%)
Mutual labels:  plotting, plot
Ggplotnim
A port of ggplot2 for Nim
Stars: ✭ 95 (+11.76%)
Mutual labels:  plotting, plot
Hep
hep is the mono repository holding all of go-hep.org/x/hep packages and tools
Stars: ✭ 146 (+71.76%)
Mutual labels:  plotting, plot
Plotters
A rust drawing library for high quality data plotting for both WASM and native, statically and realtimely 🦀 📈🚀
Stars: ✭ 1,287 (+1414.12%)
Mutual labels:  plotting, plot
sr graph
A simple, one-file, header-only, C++ utility for graphs, curves and histograms.
Stars: ✭ 67 (-21.18%)
Mutual labels:  plot, plotting
Scottplot
Interactive Plotting Library for .NET
Stars: ✭ 736 (+765.88%)
Mutual labels:  plotting, plot
Ggthemes
Additional themes, scales, and geoms for ggplot2
Stars: ✭ 1,107 (+1202.35%)
Mutual labels:  plotting, plot
Jp
dead simple terminal plots from JSON data. single binary, no dependencies. linux, osx, windows.
Stars: ✭ 1,184 (+1292.94%)
Mutual labels:  plot
Powerlaw
This package implements both the discrete and continuous maximum likelihood estimators for fitting the power-law distribution to data. Additionally, a goodness-of-fit based approach is used to estimate the lower cutoff for the scaling region.
Stars: ✭ 79 (-7.06%)
Mutual labels:  cran

Build Status AppVeyor build status Codecov coverage CRAN Version Downloads

pROC

An R package to display and analyze ROC curves.

For more information, see:

  1. Xavier Robin, Natacha Turck, Alexandre Hainard, et al. (2011) “pROC: an open-source package for R and S+ to analyze and compare ROC curves”. BMC Bioinformatics, 7, 77. DOI: 10.1186/1471-2105-12-77
  2. The official web page on ExPaSy
  3. The CRAN page
  4. My blog
  5. The FAQ

Stable

The latest stable version is best installed from the CRAN:

install.packages("pROC")

Getting started

If you don't want to read the manual first, try the following:

Loading

library(pROC)
data(aSAH)

Basic ROC / AUC analysis

roc(aSAH$outcome, aSAH$s100b)
roc(outcome ~ s100b, aSAH)

Smoothing

roc(outcome ~ s100b, aSAH, smooth=TRUE) 

more options, CI and plotting

roc1 <- roc(aSAH$outcome,
            aSAH$s100b, percent=TRUE,
            # arguments for auc
            partial.auc=c(100, 90), partial.auc.correct=TRUE,
            partial.auc.focus="sens",
            # arguments for ci
            ci=TRUE, boot.n=100, ci.alpha=0.9, stratified=FALSE,
            # arguments for plot
            plot=TRUE, auc.polygon=TRUE, max.auc.polygon=TRUE, grid=TRUE,
            print.auc=TRUE, show.thres=TRUE)

    # Add to an existing plot. Beware of 'percent' specification!
    roc2 <- roc(aSAH$outcome, aSAH$wfns,
            plot=TRUE, add=TRUE, percent=roc1$percent)        

Coordinates of the curve

coords(roc1, "best", ret=c("threshold", "specificity", "1-npv"))
coords(roc2, "local maximas", ret=c("threshold", "sens", "spec", "ppv", "npv"))

Confidence intervals

# Of the AUC
ci(roc2)

# Of the curve
sens.ci <- ci.se(roc1, specificities=seq(0, 100, 5))
plot(sens.ci, type="shape", col="lightblue")
plot(sens.ci, type="bars")

# need to re-add roc2 over the shape
plot(roc2, add=TRUE)

# CI of thresholds
plot(ci.thresholds(roc2))

Comparisons

    # Test on the whole AUC
    roc.test(roc1, roc2, reuse.auc=FALSE)

    # Test on a portion of the whole AUC
    roc.test(roc1, roc2, reuse.auc=FALSE, partial.auc=c(100, 90),
             partial.auc.focus="se", partial.auc.correct=TRUE)

    # With modified bootstrap parameters
    roc.test(roc1, roc2, reuse.auc=FALSE, partial.auc=c(100, 90),
             partial.auc.correct=TRUE, boot.n=1000, boot.stratified=FALSE)

Sample size

    # Two ROC curves
    power.roc.test(roc1, roc2, reuse.auc=FALSE)
    power.roc.test(roc1, roc2, power=0.9, reuse.auc=FALSE)

    # One ROC curve
    power.roc.test(auc=0.8, ncases=41, ncontrols=72)
    power.roc.test(auc=0.8, power=0.9)
    power.roc.test(auc=0.8, ncases=41, ncontrols=72, sig.level=0.01)
    power.roc.test(ncases=41, ncontrols=72, power=0.9)

Getting Help

If you still can't find an answer, you can:

Development

Installing the development version

Download the source code from git, unzip it if necessary, and then type R CMD INSTALL pROC. Alternatively, you can use the devtools package by Hadley Wickham to automate the process (make sure you follow the full instructions to get started):

if (! requireNamespace("devtools")) install.packages("devtools")
devtools::install_github("xrobin/pROC")

Check

To run all automated tests, including slow tests:

cd .. # Run from parent directory
VERSION=$(grep Version pROC/DESCRIPTION | sed "s/.\+ //")
R CMD build pROC
RUN_SLOW_TESTS=true R CMD check pROC_$VERSION.tar.gz

vdiffr

The vdiffr package is used for visual tests of plots.

To run all the test cases (incl. slow ones) from the command line:

run_slow_tests <- TRUE
vdiffr::manage_cases()

To run the checks upon R CMD check, set environment variable NOT_CRAN=1:

NOT_CRAN=1 RUN_SLOW_TESTS=true R CMD check pROC_$VERSION.tar.gz

Release steps

  1. Get new version to release: VERSION=$(grep Version pROC/DESCRIPTION | sed "s/.\+ //") && echo $VERSION
  2. Build & check package: R CMD build pROC && R CMD check --as-cran pROC_$VERSION.tar.gz
  3. Check with slow tests: NOT_CRAN=1 RUN_SLOW_TESTS=true R CMD check pROC_$VERSION.tar.gz
  4. Check with R-devel: rhub::check_with_rdevel()
  5. Check reverse dependencies: revdepcheck::revdep_check(num_workers=8, timeout = as.difftime(60, units = "mins"))
  6. Update Version and Date in DESCRIPTION
  7. Update version and date in NEWS
  8. Create a tag: git tag v$VERSION && git push --tags
  9. Submit to CRAN
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].