{"id":37371,"date":"2026-08-23T13:29:01","date_gmt":"2026-08-23T07:59:01","guid":{"rendered":"https:\/\/atsixty.com\/?p=37371"},"modified":"2026-08-23T19:26:02","modified_gmt":"2026-08-23T13:56:02","slug":"biostatistics-ppv-npv-the-prevalence-effect","status":"publish","type":"post","link":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/","title":{"rendered":"Biostatistics &#8211; PPV, NPV &amp; The Prevalence Effect"},"content":{"rendered":"\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Morning Rounds \u00b7 PSM Numericals \u00b7 Round 03<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400;1,600&#038;family=Source+Serif+4:ital,wght@0,300;0,400;0,600;1,400&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#nps03 *,#nps03 *::before,#nps03 *::after{box-sizing:border-box;margin:0;padding:0}\n#nps03{\n  --ob:#1A5F7A;--ob-light:#236E8C;--ob-pale:#E6F3F7;--ob-dark:#114455;\n  --correct:#2D6B47;--correct-bg:#EAF6EF;--correct-border:#3A9960;\n  --wrong:#B83232;--wrong-bg:#FDF0F0;--wrong-border:#E53935;\n  --ink:#0F2A35;--ink-mid:#2A4D5A;--ink-soft:#5A7D8A;\n  --line:#B8D8E3;--cream:#F2F8FA;--warm:#F8FCFD;\n  font-family:'Source Serif 4',Georgia,serif;\n  font-size:16px;color:var(--ink);background:var(--cream);\n  line-height:1.7;padding:0 0 64px;\n}\n#nps03 .mr-header{background:linear-gradient(135deg,var(--ob-dark) 0%,var(--ob) 60%,var(--ob-light) 100%);color:#E4F4F9;padding:36px 24px 30px;text-align:center;position:relative;overflow:hidden;}\n#nps03 .mr-header::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(45deg,transparent,transparent 18px,rgba(255,255,255,0.03) 18px,rgba(255,255,255,0.03) 19px);}\n#nps03 .mr-eyebrow{font-size:0.66rem;letter-spacing:0.22em;text-transform:uppercase;font-weight:700;opacity:0.6;margin-bottom:10px;position:relative;}\n#nps03 .mr-series-tag{display:inline-block;background:rgba(255,255,255,0.12);border:1px solid rgba(255,255,255,0.2);border-radius:4px;padding:2px 10px;font-size:0.64rem;letter-spacing:0.14em;text-transform:uppercase;font-weight:700;margin-bottom:14px;position:relative;}\n#nps03 .mr-title{font-family:'Playfair Display',serif;font-size:1.8rem;font-weight:700;line-height:1.2;margin-bottom:6px;position:relative;}\n#nps03 .mr-title em{font-style:italic;font-weight:400;opacity:0.85}\n#nps03 .mr-subtitle{font-size:0.82rem;opacity:0.65;margin-top:8px;font-style:italic;position:relative;}\n#nps03 .mr-chips{display:flex;justify-content:center;gap:10px;margin-top:18px;flex-wrap:wrap;position:relative;}\n#nps03 .mr-chip{background:rgba(255,255,255,0.13);border:1px solid rgba(255,255,255,0.22);border-radius:20px;padding:4px 13px;font-size:0.72rem;}\n#nps03 .mr-sentinel{height:1px}\n#nps03 .mr-progress{position:fixed;top:0;left:0;right:0;z-index:9999;background:var(--warm);border-bottom:1px solid var(--line);box-shadow:0 2px 12px rgba(15,42,53,0.1);padding:9px 16px;display:none;}\n#nps03 .mr-progress.visible{display:block}\n#nps03 .mr-prog-inner{max-width:720px;margin:0 auto;display:flex;align-items:center;justify-content:center}\n#nps03 .mr-pips{display:flex;align-items:center;justify-content:center}\n#nps03 .mr-pip-wrap{display:flex;align-items:center}\n#nps03 .mr-pip-line{width:28px;height:2px;background:var(--line);transition:background 0.35s}\n#nps03 .mr-pip-line.done{background:var(--ob)}\n#nps03 .mr-pip{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);background:var(--warm);display:flex;align-items:center;justify-content:center;font-size:0.63rem;font-weight:700;color:var(--ink-soft);transition:all 0.3s;flex-shrink:0;}\n#nps03 .mr-pip.correct{background:var(--correct-border);border-color:var(--correct-border);color:#fff}\n#nps03 .mr-pip.wrong{background:var(--wrong-border);border-color:var(--wrong-border);color:#fff}\n#nps03 .mr-body{max-width:720px;margin:0 auto;padding:0 16px}\n#nps03 .mr-case{background:var(--warm);border:1px solid var(--line);border-left:4px solid var(--ob);border-radius:10px;margin:28px 0;overflow:hidden;box-shadow:0 1px 8px rgba(15,42,53,0.07);}\n#nps03 .mr-case-top{padding:16px 20px 14px;display:flex;gap:14px;align-items:flex-start}\n#nps03 .mr-num{font-family:'Playfair Display',serif;font-size:2.2rem;font-weight:700;color:var(--ob);opacity:0.14;line-height:1;margin-top:-2px;flex-shrink:0;}\n#nps03 .mr-meta{flex:1}\n#nps03 .mr-tag{font-size:0.61rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--ob);opacity:0.8;margin-bottom:5px;}\n#nps03 .mr-stem{font-size:0.94rem;color:var(--ink);line-height:1.72}\n#nps03 .mr-stem strong{font-weight:600}\n#nps03 .mr-stem em{font-style:italic}\n#nps03 .mr-rule{height:1px;background:var(--line);margin:0 20px}\n#nps03 .mr-opts{padding:12px 20px 16px;display:flex;flex-direction:column;gap:8px}\n#nps03 .mr-opt{display:flex;align-items:flex-start;gap:11px;padding:10px 14px;border:1.5px solid var(--line);border-radius:8px;cursor:pointer;background:var(--warm);transition:border-color 0.15s,background 0.15s;-webkit-tap-highlight-color:transparent;}\n#nps03 .mr-opt:hover{border-color:var(--ob);background:var(--ob-pale)}\n#nps03 .mr-opt.locked{cursor:default}\n#nps03 .mr-opt.locked:hover{border-color:var(--line);background:var(--warm)}\n#nps03 .mr-opt.correct{border-color:var(--correct-border);background:var(--correct-bg);cursor:default}\n#nps03 .mr-opt.correct:hover{border-color:var(--correct-border);background:var(--correct-bg)}\n#nps03 .mr-opt.wrong{border-color:var(--wrong-border);background:var(--wrong-bg);cursor:default}\n#nps03 .mr-opt.wrong:hover{border-color:var(--wrong-border);background:var(--wrong-bg)}\n#nps03 .mr-opt.dimmed{opacity:0.35;cursor:default}\n#nps03 .mr-opt.dimmed:hover{border-color:var(--line);background:var(--warm)}\n#nps03 .mr-ltr{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:0.62rem;font-weight:700;color:var(--ink-soft);margin-top:2px;transition:all 0.15s;}\n#nps03 .mr-opt.correct .mr-ltr{background:var(--correct-border);border-color:var(--correct-border);color:#fff}\n#nps03 .mr-opt.wrong .mr-ltr{background:var(--wrong-border);border-color:var(--wrong-border);color:#fff}\n#nps03 .mr-opt-text{font-size:0.9rem;color:var(--ink-mid);line-height:1.58}\n#nps03 .mr-opt.correct .mr-opt-text{color:var(--correct);font-weight:600}\n#nps03 .mr-opt.wrong .mr-opt-text{color:var(--wrong)}\n#nps03 .mr-exp{display:none;border-top:1px solid #9CCFDF;background:linear-gradient(180deg,#D4EEF7 0%,#EAF5FA 100%);padding:13px 20px 15px;}\n#nps03 .mr-exp-lbl{font-size:0.61rem;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:var(--ob-dark);margin-bottom:6px;}\n#nps03 .mr-exp-text{font-size:0.86rem;color:#0F2A35;line-height:1.7}\n#nps03 .mr-exp-text strong{font-weight:600}\n#nps03 .mr-exp-text em{font-style:italic}\n#nps03 .mr-exp-text .calc{display:block;background:rgba(26,95,122,0.08);border-left:3px solid var(--ob);border-radius:0 4px 4px 0;padding:6px 10px;margin:8px 0;font-family:Georgia,serif;font-size:0.84rem;color:var(--ob-dark);}\n#nps03 .mr-submit-wrap{text-align:center;padding:28px 16px 8px}\n#nps03 .mr-btn{background:var(--ob);color:#E4F4F9;border:none;border-radius:8px;padding:13px 44px;font-family:'Playfair Display',serif;font-size:1rem;font-weight:700;cursor:pointer;box-shadow:0 2px 10px rgba(26,95,122,0.32);}\n#nps03 .mr-btn:hover{background:var(--ob-dark)}\n#nps03 .mr-score{display:none;background:var(--warm);border:1px solid var(--line);border-top:4px solid var(--ob);border-radius:10px;margin:24px 0 0;box-shadow:0 2px 12px rgba(15,42,53,0.08);overflow:hidden;}\n#nps03 .mr-score-in{padding:28px 24px;text-align:center}\n#nps03 .mr-score-ey{font-size:0.66rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:12px;font-weight:600;}\n#nps03 .mr-ring{width:98px;height:98px;border-radius:50%;background:conic-gradient(var(--ob) 0%,var(--line) 0%);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;position:relative;}\n#nps03 .mr-ring::before{content:'';position:absolute;width:76px;height:76px;border-radius:50%;background:var(--warm);}\n#nps03 .mr-ring-in{position:relative;display:flex;flex-direction:column;align-items:center;line-height:1.2}\n#nps03 .mr-ring-pct{font-family:'Playfair Display',serif;font-size:1.3rem;font-weight:700;color:var(--ob)}\n#nps03 .mr-ring-sub{font-size:0.54rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:0.06em}\n#nps03 .mr-score-title{font-family:'Playfair Display',serif;font-size:1.15rem;font-weight:700;color:var(--ink);margin-bottom:4px}\n#nps03 .mr-score-net{font-size:0.9rem;color:var(--ob);font-weight:600;margin-bottom:4px}\n#nps03 .mr-verdict{font-size:0.83rem;color:var(--ink-soft);font-style:italic;margin-bottom:18px;padding:0 12px}\n#nps03 .mr-bands{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}\n#nps03 .mr-band{padding:5px 13px;border-radius:16px;font-size:0.78rem;font-weight:600}\n#nps03 .mr-band-c{background:var(--correct-bg);color:var(--correct)}\n#nps03 .mr-band-w{background:var(--wrong-bg);color:var(--wrong)}\n#nps03 .mr-band-s{background:var(--ob-pale);color:var(--ob)}\n#nps03 .mr-retry{display:block;margin:18px auto 4px;background:transparent;border:2px solid var(--ob);color:var(--ob);border-radius:8px;padding:9px 28px;font-family:'Playfair Display',serif;font-size:0.92rem;font-weight:700;cursor:pointer;}\n#nps03 .mr-retry:hover{background:var(--ob);color:#E4F4F9}\n@media(max-width:480px){\n  #nps03 .mr-title{font-size:1.4rem}\n  #nps03 .mr-num{font-size:1.7rem}\n  #nps03 .mr-stem{font-size:0.9rem}\n  #nps03 .mr-opt-text{font-size:0.86rem}\n}\n<\/style>\n\n<div id=\"nps03\">\n\n  <div class=\"mr-header\">\n    <div class=\"mr-series-tag\">Numerical Series &middot; PSM Biostatistics<\/div>\n    <div class=\"mr-eyebrow\">Morning Rounds &middot; Round 03 of 07<\/div>\n    <div class=\"mr-title\">PPV, NPV &amp;<br><em>The Prevalence Effect<\/em><\/div>\n    <div class=\"mr-subtitle\">Five questions &middot; Row-based metrics, how prevalence shifts them &amp; what a positive result actually means<\/div>\n    <div class=\"mr-chips\">\n      <span class=\"mr-chip\">5 Questions<\/span>\n      <span class=\"mr-chip\">+4 \/ &minus;1 scoring<\/span>\n      <span class=\"mr-chip\">Options reshuffled<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"mr-sentinel\" id=\"nps03-sentinel\"><\/div>\n\n  <div class=\"mr-progress\" id=\"nps03-progress\">\n    <div class=\"mr-prog-inner\">\n      <div class=\"mr-pips\" id=\"nps03-pips\"><\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"mr-body\">\n    <div id=\"nps03-cases\"><\/div>\n    <div class=\"mr-submit-wrap\">\n      <button class=\"mr-btn\" id=\"nps03-submit\">Submit for Debrief<\/button>\n    <\/div>\n    <div class=\"mr-score\" id=\"nps03-score\">\n      <div class=\"mr-score-in\">\n        <div class=\"mr-score-ey\">Round Complete<\/div>\n        <div class=\"mr-ring\" id=\"nps03-ring\">\n          <div class=\"mr-ring-in\">\n            <span class=\"mr-ring-pct\" id=\"nps03-pct\">0%<\/span>\n            <span class=\"mr-ring-sub\">net<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"mr-score-title\">Your Debrief<\/div>\n        <div class=\"mr-score-net\" id=\"nps03-net\"><\/div>\n        <div class=\"mr-verdict\" id=\"nps03-verdict\"><\/div>\n        <div class=\"mr-bands\">\n          <span class=\"mr-band mr-band-c\" id=\"nps03-ct-c\"><\/span>\n          <span class=\"mr-band mr-band-w\" id=\"nps03-ct-w\"><\/span>\n          <span class=\"mr-band mr-band-s\" id=\"nps03-ct-s\"><\/span>\n        <\/div>\n        <button class=\"mr-retry\" id=\"nps03-retry\">&#8635; New Round<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<script>\n(function () {\n  'use strict';\n\n  var NS    = 'nps03';\n  var TOTAL = 5;\n  var MAX   = 20;\n  var LTRS  = ['A','B','C','D'];\n\n  var QS = [\n\n    {\n      id: 1,\n      tag: 'PPV &mdash; Calculation from the Table',\n      stem: 'A screening test for hepatitis C yields the following results in 1000 patients: <strong>TP=90, FN=10, FP=180, TN=720<\/strong>. What is the <strong>positive predictive value (PPV)<\/strong>?',\n      correct: '33.3%',\n      opts: [\n        '33.3%',\n        '90%',\n        '50%',\n        '80%'\n      ],\n      exp: 'PPV = <strong>TP &divide; (TP + FP)<\/strong> \u2014 of all who test positive, what proportion truly have the disease?<span class=\"calc\">All test-positive = TP + FP = 90 + 180 = 270<br>PPV = 90 &divide; 270 = <strong>0.333 = 33.3%<\/strong><\/span>This means only 1 in 3 people with a positive result actually has hepatitis C. Two in three positives are false alarms. This is the clinical weight of PPV: it tells the clinician what to do with a positive result.<br><br>Trap 90% is the sensitivity (TP &divide; disease total = 90 &divide; 100). Trap 80% is the specificity (TN &divide; non-disease total = 720 &divide; 900). Trap 50% has no basis in this table. The denominator for PPV is the <strong>positive test row<\/strong> \u2014 TP+FP \u2014 not any disease column. This is the row vs column distinction that separates PPV from sensitivity.'\n    },\n\n    {\n      id: 2,\n      tag: 'NPV &mdash; Calculation and Meaning',\n      stem: 'Using the same hepatitis C data (TP=90, FN=10, FP=180, TN=720), what is the <strong>negative predictive value (NPV)<\/strong>, and what does it tell the clinician?',\n      correct: '98.6%; of all who test negative, 98.6% are truly disease-free \u2014 a negative result is highly reliable here',\n      opts: [\n        '98.6%; of all who test negative, 98.6% are truly disease-free \u2014 a negative result is highly reliable here',\n        '98.6%; of all disease-free patients, 98.6% test negative \u2014 confirming high specificity of the test',\n        '72%; calculated as TN divided by the total population, reflecting the proportion correctly identified overall',\n        '93.5%; calculated as the complement of the false negative rate, which equals FNR subtracted from 100%'\n      ],\n      exp: 'NPV = <strong>TN &divide; (TN + FN)<\/strong> \u2014 of all who test negative, what proportion are truly disease-free?<span class=\"calc\">All test-negative = TN + FN = 720 + 10 = 730<br>NPV = 720 &divide; 730 = <strong>0.9863 = 98.6%<\/strong><\/span>A negative result in this test is very reassuring \u2014 98.6% chance the patient is truly disease-free. This high NPV is largely because the disease is rare in this sample (prevalence = 100 &divide; 1000 = 10%), so most negatives are true negatives.<br><br>Trap B describes specificity, not NPV. Specificity = TN &divide; (TN+FP); NPV = TN &divide; (TN+FN) \u2014 different denominators, different meanings. Trap C divides by total population. Trap D confuses complement of FNR (= sensitivity) with NPV. NPV denominator = all test-negative = TN+FN.'\n    },\n\n    {\n      id: 3,\n      tag: 'Prevalence Effect &mdash; PPV Falls as Prevalence Falls',\n      stem: 'The same test (sensitivity 90%, specificity 80%) is applied in <strong>two populations of 1000<\/strong>: Population A has <strong>10% prevalence<\/strong>, Population B has <strong>1% prevalence<\/strong>. Without calculating, which statement correctly predicts what happens to PPV?',\n      correct: 'PPV falls substantially in Population B; lower prevalence floods the positive pool with false positives from the large non-diseased majority',\n      opts: [\n        'PPV falls substantially in Population B; lower prevalence floods the positive pool with false positives from the large non-diseased majority',\n        'PPV rises in Population B; a lower prevalence means fewer diseased people compete for positive test slots, increasing the proportion of true positives',\n        'PPV remains unchanged in Population B; it is a fixed property of the test like sensitivity and specificity',\n        'PPV falls in Population B only if specificity is below 90%; at 80% specificity the effect is too small to be clinically significant'\n      ],\n      exp: 'This is the central insight of this round. As prevalence falls, the non-diseased population grows. Even a small false positive rate (here 20%) applied to a large non-diseased population generates <strong>many false positives<\/strong>. Meanwhile, the true positive pool shrinks because fewer people have the disease.<span class=\"calc\">Population A (10% prevalence, n=1000):<br>Diseased=100, Non-diseased=900<br>TP = 0.90&times;100 = 90, FP = 0.20&times;900 = 180<br>PPV = 90&divide;(90+180) = 90&divide;270 = <strong>33.3%<\/strong><br><br>Population B (1% prevalence, n=1000):<br>Diseased=10, Non-diseased=990<br>TP = 0.90&times;10 = 9, FP = 0.20&times;990 = 198<br>PPV = 9&divide;(9+198) = 9&divide;207 = <strong>4.3%<\/strong><\/span>PPV crashed from 33% to 4% with the same test. Sensitivity and specificity did not change. This is why a positive result from a screening programme applied to a low-prevalence general population requires confirmation before action.'\n    },\n\n    {\n      id: 4,\n      tag: 'Prevalence Effect &mdash; NPV Rises as Prevalence Falls',\n      stem: 'Using the same two populations from Q3 (sensitivity 90%, specificity 80%), what happens to <strong>NPV<\/strong> as prevalence falls from 10% to 1%?',\n      correct: 'NPV rises from 98.6% to 99.9%; lower prevalence means most test-negatives are true negatives, making a negative result even more reliable',\n      opts: [\n        'NPV rises from 98.6% to 99.9%; lower prevalence means most test-negatives are true negatives, making a negative result even more reliable',\n        'NPV falls as prevalence falls; fewer diseased people means fewer true negatives, reducing the reliability of a negative result',\n        'NPV remains at 98.6% in both populations; like specificity, it is independent of disease prevalence',\n        'NPV rises to 99.9% but becomes clinically useless; in low-prevalence settings negative results carry no diagnostic weight'\n      ],\n      exp: '<span class=\"calc\">Population A (10% prevalence):<br>FN = 0.10&times;100 = 10, TN = 0.80&times;900 = 720<br>NPV = 720&divide;(720+10) = 720&divide;730 = <strong>98.6%<\/strong><br><br>Population B (1% prevalence):<br>FN = 0.10&times;10 = 1, TN = 0.80&times;990 = 792<br>NPV = 792&divide;(792+1) = 792&divide;793 = <strong>99.9%<\/strong><\/span>As prevalence falls: TN pool grows (more disease-free people correctly cleared), FN pool shrinks (fewer diseased people to miss). NPV = TN&divide;(TN+FN) rises toward 100%.<br><br>The paired lesson: <strong>PPV and NPV move in the same direction as prevalence<\/strong> \u2014 both rise with rising prevalence, both fall with falling prevalence? No \u2014 they move in <em>opposite<\/em> directions. PPV rises with prevalence. NPV falls with prevalence. This asymmetry is the exam trap. Trap B incorrectly inverts NPV direction. Trap D is wrong: a highly reliable negative result is clinically valuable, not useless.'\n    },\n\n    {\n      id: 5,\n      tag: 'PPV &mdash; Clinical Application in Low-Prevalence Screening',\n      stem: 'A national programme screens all adults for a rare autoimmune condition (prevalence <strong>0.5%<\/strong>). The test has sensitivity 95% and specificity 95%. A 35-year-old woman tests positive. She is told she \"almost certainly has the disease.\" Is this statement accurate?',\n      correct: 'No; with 0.5% prevalence and 95% specificity, PPV is approximately 8.7% \u2014 fewer than 1 in 10 positive results represent true disease',\n      opts: [\n        'No; with 0.5% prevalence and 95% specificity, PPV is approximately 8.7% \u2014 fewer than 1 in 10 positive results represent true disease',\n        'Yes; a test with 95% sensitivity and 95% specificity is highly accurate and a positive result reliably indicates disease',\n        'No; with 0.5% prevalence, the test should not have been offered at all since no screening test performs adequately below 1% prevalence',\n        'Yes; sensitivity of 95% means 95% of positive results are true positives, confirming the statement is correct'\n      ],\n      exp: '<span class=\"calc\">Population of 10,000 (prevalence 0.5%):<br>Diseased = 50, Non-diseased = 9950<br>TP = 0.95 &times; 50 = 47.5 &asymp; 48<br>FP = 0.05 &times; 9950 = 497.5 &asymp; 498<br>PPV = 48 &divide; (48+498) = 48 &divide; 546 = <strong>8.8%<\/strong><\/span>Even with a 95%\/95% test \u2014 which sounds excellent \u2014 fewer than 1 in 10 positive results represents true disease when prevalence is 0.5%. The other 9 in 10 are false alarms.<br><br>This is the <strong>base rate fallacy<\/strong> in medicine: interpreting test results without accounting for prior probability (prevalence). The statement \"almost certainly has the disease\" is dangerously wrong. This woman needs confirmatory testing before any diagnosis or treatment. Trap B confuses test accuracy with PPV. Trap D is the most common misconception: sensitivity tells you about diseased people, not about positive results. Trap C invents a 1% rule that does not exist.'\n    }\n\n  ];\n\n  var answers = {}, answered = 0, shuffled = {}, done = false;\n\n  function gid(s) { return document.getElementById(NS + '-' + s); }\n  function byId(s) { return document.getElementById(s); }\n\n  function shuffleArr(arr) {\n    var a = arr.slice(), i, j, t;\n    for (i = a.length - 1; i > 0; i--) {\n      j = Math.floor(Math.random() * (i + 1));\n      t = a[i]; a[i] = a[j]; a[j] = t;\n    }\n    return a;\n  }\n\n  function countVal(v) {\n    var n = 0, k;\n    for (k in answers) { if (answers[k] === v) n++; }\n    return n;\n  }\n\n  function buildPips() {\n    var cont = gid('pips'), i, q, wLine, wPip, line, pip;\n    cont.innerHTML = '';\n    for (i = 0; i < QS.length; i++) {\n      q = QS[i];\n      if (i > 0) {\n        wLine = document.createElement('div');\n        wLine.className = 'mr-pip-wrap';\n        line = document.createElement('div');\n        line.className = 'mr-pip-line';\n        line.id = NS + '-pl' + q.id;\n        wLine.appendChild(line);\n        cont.appendChild(wLine);\n      }\n      wPip = document.createElement('div');\n      wPip.className = 'mr-pip-wrap';\n      pip = document.createElement('div');\n      pip.className = 'mr-pip';\n      pip.id = NS + '-pip' + q.id;\n      pip.textContent = String(q.id);\n      wPip.appendChild(pip);\n      cont.appendChild(wPip);\n    }\n  }\n\n  function build() {\n    var cont, i, q, opts, card, top, numDiv, meta, tag, stem,\n        rule, optsDiv, expDiv, lbl, txt, j, optEl, ltrSpan, txtSpan;\n\n    cont = gid('cases');\n    cont.innerHTML = '';\n    answers = {}; answered = 0; shuffled = {}; done = false;\n    gid('score').style.display = 'none';\n    buildPips();\n\n    for (i = 0; i < QS.length; i++) {\n      q = QS[i];\n      opts = shuffleArr(q.opts);\n      shuffled[q.id] = opts;\n\n      card = document.createElement('div');\n      card.className = 'mr-case';\n\n      top = document.createElement('div');\n      top.className = 'mr-case-top';\n\n      numDiv = document.createElement('div');\n      numDiv.className = 'mr-num';\n      numDiv.textContent = q.id < 10 ? '0' + q.id : String(q.id);\n\n      meta = document.createElement('div');\n      meta.className = 'mr-meta';\n\n      tag = document.createElement('div');\n      tag.className = 'mr-tag';\n      tag.innerHTML = q.tag;\n\n      stem = document.createElement('div');\n      stem.className = 'mr-stem';\n      stem.innerHTML = q.stem;\n\n      meta.appendChild(tag);\n      meta.appendChild(stem);\n      top.appendChild(numDiv);\n      top.appendChild(meta);\n      card.appendChild(top);\n\n      rule = document.createElement('div');\n      rule.className = 'mr-rule';\n      card.appendChild(rule);\n\n      optsDiv = document.createElement('div');\n      optsDiv.className = 'mr-opts';\n\n      for (j = 0; j < opts.length; j++) {\n        optEl = document.createElement('div');\n        optEl.className = 'mr-opt';\n        optEl.id = NS + '-o' + q.id + '-' + j;\n        optEl.setAttribute('role', 'button');\n        optEl.setAttribute('tabindex', '0');\n\n        ltrSpan = document.createElement('span');\n        ltrSpan.className = 'mr-ltr';\n        ltrSpan.textContent = LTRS[j];\n\n        txtSpan = document.createElement('span');\n        txtSpan.className = 'mr-opt-text';\n        txtSpan.innerHTML = opts[j];\n\n        optEl.appendChild(ltrSpan);\n        optEl.appendChild(txtSpan);\n        optsDiv.appendChild(optEl);\n\n        (function (qid, oi) {\n          optEl.addEventListener('click', function () { pick(qid, oi); });\n        }(q.id, j));\n      }\n      card.appendChild(optsDiv);\n\n      expDiv = document.createElement('div');\n      expDiv.className = 'mr-exp';\n      expDiv.id = NS + '-exp' + q.id;\n\n      lbl = document.createElement('div');\n      lbl.className = 'mr-exp-lbl';\n      lbl.textContent = 'Debrief';\n\n      txt = document.createElement('div');\n      txt.className = 'mr-exp-text';\n      txt.innerHTML = q.exp;\n\n      expDiv.appendChild(lbl);\n      expDiv.appendChild(txt);\n      card.appendChild(expDiv);\n      cont.appendChild(card);\n    }\n  }\n\n  function pick(qid, oi) {\n    var q, opts, i, el, correct;\n    if (answers[qid] !== undefined || done) return;\n\n    q = null;\n    for (i = 0; i < QS.length; i++) {\n      if (QS[i].id === qid) { q = QS[i]; break; }\n    }\n    if (!q) return;\n\n    opts = shuffled[qid];\n    correct = (opts[oi] === q.correct);\n    answers[qid] = correct ? 'c' : 'w';\n    answered++;\n\n    for (i = 0; i < opts.length; i++) {\n      el = byId(NS + '-o' + qid + '-' + i);\n      if (opts[i] === q.correct) {\n        el.className = 'mr-opt correct locked';\n      } else if (i === oi) {\n        el.className = 'mr-opt wrong locked';\n      } else {\n        el.className = 'mr-opt dimmed locked';\n      }\n    }\n\n    byId(NS + '-exp' + qid).style.display = 'block';\n    byId(NS + '-pip' + qid).className = 'mr-pip ' + (correct ? 'correct' : 'wrong');\n\n    if (qid > 1) {\n      var pl = byId(NS + '-pl' + qid);\n      if (pl) { pl.className = 'mr-pip-line done'; }\n    }\n  }\n\n  function showScore() {\n    var c, w, s, net, pct, disp, verdicts, vi, sc;\n    if (done) return;\n    done = true;\n\n    c = countVal('c');\n    w = countVal('w');\n    s = TOTAL - answered;\n    net  = (c * 4) - w;\n    pct  = Math.max(0, Math.round((net \/ MAX) * 100));\n    disp = Math.min(100, Math.max(0, pct));\n\n    gid('ring').style.background =\n      'conic-gradient(#1A5F7A ' + disp + '%, #B8D8E3 0%)';\n\n    gid('pct').textContent = pct + '%';\n    gid('net').textContent = 'Net Score: ' + net + ' \/ ' + MAX;\n\n    verdicts = [\n      [5, 'Flawless. PPV, NPV, the prevalence effect, and the base rate fallacy \\u2014 all owned cold.'],\n      [4, 'Strong round. One concept to consolidate \\u2014 re-read that debrief before R4.'],\n      [3, 'Good base. Q3 and Q5 are the high-yield misses \\u2014 the PPV crash at low prevalence is the exam\\'s favourite trap.'],\n      [2, 'The row vs column distinction is the foundation. PPV = TP\\u00f7(TP+FP); NPV = TN\\u00f7(TN+FN). Lock those denominators in.'],\n      [0, 'Start with Q1 and Q2 \\u2014 pure calculation. Then read Q3 debrief carefully: the prevalence effect is the concept this entire round is built around.']\n    ];\n    gid('verdict').textContent = verdicts[4][1];\n    for (vi = 0; vi < verdicts.length; vi++) {\n      if (c >= verdicts[vi][0]) {\n        gid('verdict').innerHTML = verdicts[vi][1];\n        break;\n      }\n    }\n\n    gid('ct-c').textContent = '\\u2705 ' + c + ' Correct';\n    gid('ct-w').textContent = '\\u274C ' + w + ' Wrong';\n    gid('ct-s').textContent = '\\u23ED ' + s + ' Skipped';\n\n    sc = gid('score');\n    sc.style.display = 'block';\n    sc.scrollIntoView({ behavior: 'smooth', block: 'center' });\n  }\n\n  function tryInit() {\n    var sentinel = document.getElementById(NS + '-sentinel');\n    var submit   = document.getElementById(NS + '-submit');\n    var retry    = document.getElementById(NS + '-retry');\n    if (!sentinel || !submit || !retry) {\n      setTimeout(tryInit, 80);\n      return;\n    }\n    submit.addEventListener('click', showScore);\n    retry.addEventListener('click', function () {\n      build();\n      window.scrollTo(0, 0);\n    });\n    var bar = document.getElementById(NS + '-progress');\n    if (bar && window.IntersectionObserver) {\n      new IntersectionObserver(function (entries) {\n        bar.className = entries[0].isIntersecting ? 'mr-progress' : 'mr-progress visible';\n      }, { threshold: 0 }).observe(sentinel);\n    }\n    build();\n  }\n\n  tryInit();\n\n}());\n<\/script>\n\n<\/html>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Morning Rounds \u00b7 PSM Numericals \u00b7 Round 03 Numerical Series &middot; PSM Biostatistics Morning Rounds &middot; Round 03 of 07 PPV, NPV &amp;The Prevalence Effect Five questions &middot; Row-based metrics, how prevalence shifts them &amp; what a positive result actually means 5 Questions +4 \/ &minus;1 scoring Options reshuffled Submit for Debrief Round Complete 0%&hellip;&nbsp;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[74,96],"tags":[97],"class_list":["post-37371","post","type-post","status-publish","format-standard","hentry","category-morning-rounds","category-psm","tag-biostatistics"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Biostatistics - PPV, NPV &amp; The Prevalence Effect - atsixty<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Biostatistics - PPV, NPV &amp; The Prevalence Effect - atsixty\" \/>\n<meta property=\"og:description\" content=\"Morning Rounds \u00b7 PSM Numericals \u00b7 Round 03 Numerical Series &middot; PSM Biostatistics Morning Rounds &middot; Round 03 of 07 PPV, NPV &amp;The Prevalence Effect Five questions &middot; Row-based metrics, how prevalence shifts them &amp; what a positive result actually means 5 Questions +4 \/ &minus;1 scoring Options reshuffled Submit for Debrief Round Complete 0%&hellip;&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/\" \/>\n<meta property=\"og:site_name\" content=\"atsixty\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-23T07:59:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-23T13:56:02+00:00\" \/>\n<meta name=\"author\" content=\"Avi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Avi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/atsixty.com\\\/index.php\\\/morning-rounds\\\/biostatistics-ppv-npv-the-prevalence-effect\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/atsixty.com\\\/index.php\\\/morning-rounds\\\/biostatistics-ppv-npv-the-prevalence-effect\\\/\"},\"author\":{\"name\":\"Avi\",\"@id\":\"https:\\\/\\\/atsixty.com\\\/#\\\/schema\\\/person\\\/cf65e7ac7d8226d95c0bdf1036f7951d\"},\"headline\":\"Biostatistics &#8211; PPV, NPV &amp; The Prevalence Effect\",\"datePublished\":\"2026-08-23T07:59:01+00:00\",\"dateModified\":\"2026-08-23T13:56:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/atsixty.com\\\/index.php\\\/morning-rounds\\\/biostatistics-ppv-npv-the-prevalence-effect\\\/\"},\"wordCount\":60,\"publisher\":{\"@id\":\"https:\\\/\\\/atsixty.com\\\/#\\\/schema\\\/person\\\/cf65e7ac7d8226d95c0bdf1036f7951d\"},\"keywords\":[\"Biostatistics\"],\"articleSection\":[\"Morning Rounds\",\"PSM\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/atsixty.com\\\/index.php\\\/morning-rounds\\\/biostatistics-ppv-npv-the-prevalence-effect\\\/\",\"url\":\"https:\\\/\\\/atsixty.com\\\/index.php\\\/morning-rounds\\\/biostatistics-ppv-npv-the-prevalence-effect\\\/\",\"name\":\"Biostatistics - PPV, NPV &amp; The Prevalence Effect - atsixty\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/atsixty.com\\\/#website\"},\"datePublished\":\"2026-08-23T07:59:01+00:00\",\"dateModified\":\"2026-08-23T13:56:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/atsixty.com\\\/index.php\\\/morning-rounds\\\/biostatistics-ppv-npv-the-prevalence-effect\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/atsixty.com\\\/index.php\\\/morning-rounds\\\/biostatistics-ppv-npv-the-prevalence-effect\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/atsixty.com\\\/index.php\\\/morning-rounds\\\/biostatistics-ppv-npv-the-prevalence-effect\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/atsixty.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Biostatistics &#8211; PPV, NPV &amp; The Prevalence Effect\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/atsixty.com\\\/#website\",\"url\":\"https:\\\/\\\/atsixty.com\\\/\",\"name\":\"At Sixty\",\"description\":\"The Option Taken\",\"publisher\":{\"@id\":\"https:\\\/\\\/atsixty.com\\\/#\\\/schema\\\/person\\\/cf65e7ac7d8226d95c0bdf1036f7951d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/atsixty.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/atsixty.com\\\/#\\\/schema\\\/person\\\/cf65e7ac7d8226d95c0bdf1036f7951d\",\"name\":\"Avi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/atsixty.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/logo-agency.png\",\"url\":\"https:\\\/\\\/atsixty.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/logo-agency.png\",\"contentUrl\":\"https:\\\/\\\/atsixty.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/logo-agency.png\",\"width\":200,\"height\":200,\"caption\":\"Avi\"},\"logo\":{\"@id\":\"https:\\\/\\\/atsixty.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/logo-agency.png\"},\"sameAs\":[\"https:\\\/\\\/atsixty.com\"],\"url\":\"https:\\\/\\\/atsixty.com\\\/index.php\\\/author\\\/avinaux\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Biostatistics - PPV, NPV &amp; The Prevalence Effect - atsixty","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/","og_locale":"en_US","og_type":"article","og_title":"Biostatistics - PPV, NPV &amp; The Prevalence Effect - atsixty","og_description":"Morning Rounds \u00b7 PSM Numericals \u00b7 Round 03 Numerical Series &middot; PSM Biostatistics Morning Rounds &middot; Round 03 of 07 PPV, NPV &amp;The Prevalence Effect Five questions &middot; Row-based metrics, how prevalence shifts them &amp; what a positive result actually means 5 Questions +4 \/ &minus;1 scoring Options reshuffled Submit for Debrief Round Complete 0%&hellip;&nbsp;","og_url":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/","og_site_name":"atsixty","article_published_time":"2026-08-23T07:59:01+00:00","article_modified_time":"2026-08-23T13:56:02+00:00","author":"Avi","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Avi","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/#article","isPartOf":{"@id":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/"},"author":{"name":"Avi","@id":"https:\/\/atsixty.com\/#\/schema\/person\/cf65e7ac7d8226d95c0bdf1036f7951d"},"headline":"Biostatistics &#8211; PPV, NPV &amp; The Prevalence Effect","datePublished":"2026-08-23T07:59:01+00:00","dateModified":"2026-08-23T13:56:02+00:00","mainEntityOfPage":{"@id":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/"},"wordCount":60,"publisher":{"@id":"https:\/\/atsixty.com\/#\/schema\/person\/cf65e7ac7d8226d95c0bdf1036f7951d"},"keywords":["Biostatistics"],"articleSection":["Morning Rounds","PSM"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/","url":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/","name":"Biostatistics - PPV, NPV &amp; The Prevalence Effect - atsixty","isPartOf":{"@id":"https:\/\/atsixty.com\/#website"},"datePublished":"2026-08-23T07:59:01+00:00","dateModified":"2026-08-23T13:56:02+00:00","breadcrumb":{"@id":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atsixty.com\/index.php\/morning-rounds\/biostatistics-ppv-npv-the-prevalence-effect\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/atsixty.com\/"},{"@type":"ListItem","position":2,"name":"Biostatistics &#8211; PPV, NPV &amp; The Prevalence Effect"}]},{"@type":"WebSite","@id":"https:\/\/atsixty.com\/#website","url":"https:\/\/atsixty.com\/","name":"At Sixty","description":"The Option Taken","publisher":{"@id":"https:\/\/atsixty.com\/#\/schema\/person\/cf65e7ac7d8226d95c0bdf1036f7951d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atsixty.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/atsixty.com\/#\/schema\/person\/cf65e7ac7d8226d95c0bdf1036f7951d","name":"Avi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/atsixty.com\/wp-content\/uploads\/2025\/08\/logo-agency.png","url":"https:\/\/atsixty.com\/wp-content\/uploads\/2025\/08\/logo-agency.png","contentUrl":"https:\/\/atsixty.com\/wp-content\/uploads\/2025\/08\/logo-agency.png","width":200,"height":200,"caption":"Avi"},"logo":{"@id":"https:\/\/atsixty.com\/wp-content\/uploads\/2025\/08\/logo-agency.png"},"sameAs":["https:\/\/atsixty.com"],"url":"https:\/\/atsixty.com\/index.php\/author\/avinaux\/"}]}},"_links":{"self":[{"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/posts\/37371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/comments?post=37371"}],"version-history":[{"count":2,"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/posts\/37371\/revisions"}],"predecessor-version":[{"id":37373,"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/posts\/37371\/revisions\/37373"}],"wp:attachment":[{"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/media?parent=37371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/categories?post=37371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atsixty.com\/index.php\/wp-json\/wp\/v2\/tags?post=37371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}