ProbID Methods

← Back

ProbID uses likelihood ratios (LRs) and Bayes’ theorem to update a pretest probability into a post-test probability. This page explains what an LR is, how it’s calculated from test performance, how the current decision layer works, and how the app preserves a shareable case state.

1) What is a likelihood ratio?

A likelihood ratio tells you how much a test result changes the odds of a diagnosis. It links the result you observe (positive or negative) to how likely that result would be in people with the disease versus without the disease.

LR+ (positive likelihood ratio)

How much more likely a positive result is in disease vs no disease.

LR+ = Sensitivity / (1 − Specificity)
LR− (negative likelihood ratio)

How much less likely a negative result is in disease vs no disease.

LR− = (1 − Sensitivity) / Specificity
How to interpret LRs (rule of thumb)
  • LR+ > 10: strong “rule-in” effect
  • LR+ 5–10: moderate rule-in
  • LR+ 2–5: small-to-moderate rule-in
  • LR− 0.1–0.2: moderate-to-strong “rule-out” effect
  • LR− < 0.1: strong rule-out

2) Bayes’ theorem in odds form (what ProbID does)

ProbID updates odds, not probabilities, because odds update by simple multiplication.

Convert probability → odds
Pretest odds = p / (1 − p)
Update odds with LR
Post-test odds = Pretest odds × LR
Convert odds → probability
Post-test probability = odds / (1 + odds)
Combining multiple findings

When multiple independent findings are selected, ProbID multiplies their likelihood ratios to create a combined LR. This is convenient, but assumes conditional independence—correlated findings can overestimate certainty.

Combined LR = LR₁ × LR₂ × LR₃ × …

3) Worked example (step-by-step)

Suppose a test has Sensitivity = 0.80 and Specificity = 0.90. And your patient’s pretest probability is 20%.

Step A — Calculate LR+ and LR−
LR+
LR+ = 0.80 / (1 − 0.90) = 0.80 / 0.10 = 8.0
LR−
LR− = (1 − 0.80) / 0.90 = 0.20 / 0.90 = 0.22
Step B — Update probability for positive test
Pretest odds
Pretest odds = 0.20 / 0.80 = 0.25
Post-test odds
Post-test odds = 0.25 × 8.0 = 2.0
Post-test probability
Post-test p = 2.0 / (1 + 2.0) = 0.667 (≈ 67%)
What if the test is negative?

Same pretest probability (20%), but use LR− instead:

Pretest odds
0.20 / 0.80 = 0.25
Post-test odds
0.25 × 0.22 ≈ 0.055
Post-test p
0.055 / (1 + 0.055) ≈ 0.052 (≈ 5%)

4) Decision Layer: How Treatment Thresholds Are Computed

ProbID now separates two questions: how likely is the disease? and at what probability does treatment become worth it?The CAP module now uses an expected-utility treatment threshold; other modules still use a transparent heuristic fallback while they are being upgraded.

A) CAP expected-utility model

CAP uses four outcome utilities over a short acute-illness horizon:

  • Treat + true CAP
  • No treat + true CAP
  • Treat + no CAP
  • No treat + no CAP

These values are structured estimates anchored to published lower-respiratory-infection burden data, adult CAP severity concepts, and outpatient antibiotic adverse-event burden. Patient factors shift the utilities in transparent, visible ways.

B) CAP treatment threshold

For CAP, expected utility is computed directly:

EU(treat) = P(CAP) × U(treat, CAP) + (1 − P(CAP)) × U(treat, no CAP)
EU(no treat) = P(CAP) × U(no treat, CAP) + (1 − P(CAP)) × U(no treat, no CAP)

Treatment is justified when EU(treat) > EU(no treat). Solving that equality for probability gives the treatment threshold:

T = [U(no treat, no CAP) − U(treat, no CAP)] / [(U(treat, CAP) − U(no treat, CAP)) + (U(no treat, no CAP) − U(treat, no CAP))]
C) Recommendation logic in the app

The CAP module currently uses a binary decision threshold:

If post-test p(CAP) ≥ T, empiric treatment is justified.
  • If post-test p(CAP) is below threshold, the app recommends reassessment or further testing rather than immediate empiric antibiotics.
  • If post-test p(CAP) is above threshold, the app recommends empiric CAP treatment.
  • Modules without a true utility model still use the older heuristic observe/test/treat fallback.

Utility-backed treatment models live in lib/probidExpectedUtility.ts. Heuristic fallback thresholds remain configurable in lib/probidDecision.ts.

5) Shareable Case State

ProbID now keeps the current case setup in the page URL so the tool can restore the same syndrome, setting, findings, and decision modifiers when the link is reopened or shared.

What is stored
  • Selected syndrome and setting
  • Present and absent findings
  • Stepwise selection order
  • CAP utility modifiers
  • VAP and endocarditis pretest modifier selections
  • Score-panel inputs such as VIRSTA, DENOVA, and HANDOC
What is not stored
  • No backend account or saved server-side record is created
  • No patient-identifying data should be entered into the tool
  • The URL is meant to preserve educational case logic, not protected health information
Implementation note

The app serializes the current tool state into a URL query parameter and restores it on load. This is a convenience feature for reproducibility and teaching. It does not change the underlying LR, expected-utility, or heuristic decision calculations.

IDHub is an educational project focused on clinical teaching in Infectious Diseases. Content is for learning purposes only and does not replace clinical judgment, institutional guidelines, or consultation with Infectious Diseases specialists. © 2026 IDHub