Prostate Cancer Diagnostics


Description

Most clinical tests are not 100% accurate for determining the presence of a condition. Typically, we assign some cutoff and say that test values above that cutoff are "positive" and below that are "negative". For any choice of cutoff, however, some people without the condition will get false-positive (FP) results and some with the condition will get false-negative (FN) results. The fraction of people with the condition who get true-positive (TP) results is called the sensitivity. The fraction of those without the condition that get true-negative (TN) results is called the specificity. By adjusting the cutoff, you can improve the sensitivity (fewer FNs) but at the cost of reducing the specificity (more FPs).

This simulation draws people randomly from a box where some have the condition and some don't. You can set those numbers. It then assigns positive or negative test results to each one, with the probabilities given by the sensitivity and specificity of the test. In this case, the condition is prostate cancer (Gleason score >6) and the test is simple PSA level.


ROC Curve, PSA Cutoff, Sensitivity and Specificity

Curve from "Receiver Operating Characteristics (ROC) of Prostate-Specific Antigen in Men With an Initial PSA Level of 3.0 ng/mL or Lower", JAMA, 294, p68 (2005).

CANVAS NOT SUPPORTED IN THIS BROWSER!
PSA cutoff =
Specificity:
False Negative:
False Positive:
Senstivity:

Adjust PSA cutoff to see how the TP, TN, FP and FN change:


Simulation

Although the sensitivity and specificity depend on the cutoff chosen, the number of TNs, FNs, TPs, and FPs you see depend also on how prevalent the condition is in the population.

Two other commonly asked questions are:
1. If a patient gets a positive test result, what is the chance that the patient really has cancer? Let's denote this probability by P(Cancer|+).
2. If a patient gets a negative test result, what is the chance that the patient doesn't have cancer? Let's denote this probability by P(No Cancer|-).

It is easy to see that
P(Cancer|+) = True positives/total positives = NTP/(NTP + NFP)
P(No Cancer|-) = True negatives/total negatives = NTN/(NTN + NFN)

Here NTP = TP×Ncancer is the number of true positives and Ncancer is the number of people with prostate cancer in the population; NFP = FP×NnoCancer is the number of false positives and NnoCancer is the number of people without prostate cancer in the population; NTN = TN×NnoCancer is the number of true negatives and NFN = FN×Ncancer is the number of false negatives.

Parameters (you can change the values and then click the submit button below):

PSA cutoff: ng/mL

Number of people:

Percentage of people really have prostate cancers: %

Number of people really have prostate cancers (Ncancer):


You can change the cutoff and population prevalence and rerun the simulation. Or you can keep those parameters fixed and rerun the simulation, just to see the statistical variation in the outcomes from batch to batch.

Simulation Result
NegativesTrue Negatives:
False Negatives:
Positives False Positives:
True Positives:
P(Cancer|+):
P(No Cancer|-):
  
Real Values
TN rate:
FN rate:
FP rate:
TP rate:
P(Cancer|+) =
P(No Cancer|-) =

Click the following button to rerun the simulation to see the statistical variation.