Source: https://guthlabs.ai/docs/instruments/sensitivity-specificity-ppv-npv-calculator/

instrument / verified-clean

# Sensitivity/Specificity/PPV/NPV Calculator

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/sensitivity-specificity-ppv-npv-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/sensitivity-specificity-ppv-npv-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/sensitivity-specificity-ppv-npv-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/sensitivity-specificity-ppv-npv-calculator/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Biology, Medicine & Pharmacology (educational estimates only — every panel labeled not-medical-advice)

**Tranche**: tranche-5

**Evidence ID**: t5-175

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The core five listed expressions are standard under the stated unit assumptions. The specification needs an explicit input mode, denominator/error policy, LR− formula, and positive/negative post-test probability formulas before it can be treated as complete.

### Formula and scope findings

- The listed formulas correctly define sensitivity, specificity, PPV, NPV, and LR+ for a diagnostic 2x2 table, assuming all denominators are nonzero.

- The output claims likelihood ratios plural, but only LR+ is specified; the standard LR− formula is missing: LR−=(1−Sensitivity)/Specificity.

- Post-test probability formulas are missing. For a positive result, post-test probability equals PPV when calculated from the same table; from prevalence, sensitivity, and specificity it is (prevalence×sensitivity)/[(prevalence×sensitivity)+((1−prevalence)×(1−specificity))]. For a negative result, it is NPV, calculated from prevalence as ((1−prevalence)×specificity)/[((1−prevalence)×specificity)+(prevalence×(1−sensitivity))].

- The input specification is ambiguous because it permits either TP/FP/FN/TN counts or prevalence+sensitivity+specificity, but does not define how outputs are calculated or labeled for each input mode.

### Unit assumptions

- TP, FP, FN, and TN are nonnegative integer counts of mutually exclusive and collectively exhaustive outcomes.

- Sensitivity, specificity, and prevalence are proportions from 0 to 1; percentage inputs such as 90% must be converted to 0.90 before calculation.

- All four 2x2 cells must refer to the same population, test threshold, and time frame.

- For count inputs, prevalence is assumed to be (TP+FN)/(TP+FP+FN+TN).

- Ratios and probabilities are dimensionless; counts must not be mixed with percentages or fractions without explicit conversion.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The specification permits zero-count tables and ambiguous prevalence input without stating denominator guards or an explicit percent-versus-fraction convention. Zero denominators produce undefined sensitivity, PPV, and LR+, while interpreting prevalence 5 as a fraction produces invalid probabilities above 1.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "TP": 80,
    "FP": 100,
    "FN": 20,
    "TN": 900
  },
  "expected_outputs": {
    "sensitivity": 0.8,
    "specificity": 0.9,
    "PPV": 0.4444444444,
    "NPV": 0.9782608696,
    "LR+": 8,
    "LR-": 0.2222222222,
    "prevalence": 0.0909090909,
    "post_test_probability_positive": 0.4444444444,
    "post_test_probability_negative": 0.9782608696
  },
  "working": "Total=80+100+20+900=1100. Sensitivity=80/(80+20)=80/100=0.80. Specificity=900/(900+100)=900/1000=0.90. PPV=80/(80+100)=80/180=0.4444444444. NPV=900/(900+20)=900/920=0.9782608696. LR+=0.80/(1−0.90)=0.80/0.10=8. LR−=(1−0.80)/0.90=0.20/0.90=0.2222222222. Prevalence=(80+20)/1100=100/1100=0.0909090909. Positive post-test probability=PPV=0.4444444444. Negative post-test probability=NPV=0.9782608696."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
