Learn R Programming

TeachingDemos (version 2.13)

SensSpec.demo: Demonstrate Sensitivity, Specificity, PPV, and NPV

Description

This function demonstrates how to get PPV and NPV from Sensitivity, Specificity, and Prevalence by using a virtual population rather than a direct application of Bayes Rule. This approach is more intuitive to mathphobes.

Usage

SensSpec.demo(sens, spec, prev, n = 100000, step = 11)

Value

An invisible matrix with the 2x2 table

Arguments

sens

Sensitivity (between 0 and 1)

spec

Specificity (between 0 and 1)

prev

Prevalence (between 0 and 1)

n

Size of the virtual population (large round number)

step

which step of the process to display

Author

Greg Snow, 538280@gmail.com

Details

The common way to compute Positive Predictive Value (probability of disease given a positive test (PPV)) and Negative Predictive Value (probability of no disease given negative test (NPV)) is to use Bayes' rule with the Sensitivity, Specificity, and Prevalence.

This approach can be overwhelming to non-math types, so this demonstration goes through the steps of assuming a virtual population, then filling in a 2x2 table based on the population and given values of Sensitivity, Specificity, and Prevalence. PPV and NPV are then computed from this table. This approach is more intuitive to many people.

The function can be run multiple times with different values of step to show the steps in building the table, then rerun with different values to show how changes in the inputs affect the results.

See Also

roc.demo, fagan.plot, the various Epi packages, tkexamp

Examples

Run this code
for(i in seq(1,11,2)) {
  SensSpec.demo(sens=0.95, spec=0.99, prev=0.01, step=i)
  if( interactive() ) {
    readline("Press Enter to continue")
  }
}

Run the code above in your browser using DataLab