1
0
mirror of https://github.com/msberends/AMR.git synced 2026-06-24 04:56:20 +02:00

Built site for AMR@3.0.1.9061: 0c1709c

This commit is contained in:
github-actions
2026-06-23 18:00:14 +00:00
parent 9447e0f2c2
commit 2a7bfb9ffb
328 changed files with 5357 additions and 3687 deletions

View File

@@ -1,59 +1,61 @@
# Estimating Empirical Coverage with WISCA
> This explainer was largely written by our [AMR for R
> Assistant](https://chat.amr-for-r.org), a ChatGPT manually-trained
> model able to answer any question about the `AMR` package.
## Why WISCA?
## Introduction
When a clinician starts empirical antimicrobial therapy, the causative
pathogen is unknown. The question they need answered is not *“what
proportion of* E. coli *is susceptible to ciprofloxacin?“* but rather
*“what is the probability that this regimen will adequately cover
whatever pathogen turns out to be causing my patients infection?”*
Clinical guidelines for empirical antimicrobial therapy require
*probabilistic reasoning*: what is the chance that a regimen will cover
the likely infecting organisms, before culture results are available?
The traditional cumulative antibiogram, as standardised by CLSI M39,
cannot answer that question. It presents susceptibility percentages per
species per antibiotic, but:
This is the purpose of **WISCA**, or **Weighted-Incidence Syndromic
Combination Antibiogram**.
- **It fragments information by organism.** The clinician must mentally
combine susceptibility rates across multiple species, weighting by how
often each species causes the syndrome, a calculation nobody does at
the bedside.
- **It ignores pathogen incidence.** A species that causes 2% of
infections is given the same visual weight as one that causes 60%.
- **It does not evaluate combination regimens.** Much empirical therapy
consists of two or more agents, but the traditional antibiogram only
shows monotherapy per organism.
- **It provides no measure of uncertainty.** A reported “90%
susceptible” based on 50 isolates has a 95% confidence interval of
roughly 78-97% (Clopper-Pearson), yet the antibiogram presents it as a
point estimate without context.
WISCA is a Bayesian approach that integrates:
**WISCA** (Weighted-Incidence Syndromic Combination Antibiogram)
resolves all four limitations. It estimates the probability that a
regimen will provide adequate empirical coverage for a given infection
syndrome, weighted by local pathogen incidence, with full uncertainty
quantification via Bayesian inference.
- **Pathogen prevalence** (how often each species causes the syndrome),
- **Regimen susceptibility** (how often a regimen works *if* the
pathogen is known),
The concept was introduced by Hebert *et al.* (2012), who demonstrated
that traditional antibiogram susceptibility rates could be misleading:
ciprofloxacin appeared 84% effective against *E. coli* in the
traditional antibiogram, but WISCA revealed only 62% coverage for UTI
and 37% for abdominal infections, because enterococci (intrinsically
resistant) and other species contribute substantially to these
syndromes. Randhawa *et al.* (2014) showed that WISCA-guided regimen
selection could improve time-to-adequate-coverage on the ICU by over
40%. Bielicki *et al.* (2016) introduced the Bayesian framework now used
in this package, enabling credible intervals and multi-centre pooling.
Cook *et al.* (2022) applied it globally across 52 hospitals in 23
countries.
to estimate the **overall empirical coverage** of antimicrobial
regimens, with quantified uncertainty.
This vignette explains how WISCA works, why it is useful, and how to
apply it using the `AMR` package.
## Why traditional antibiograms fall short
A standard antibiogram gives you:
Species → Antibiotic → Susceptibility %
But clinicians dont know the species *a priori*. They need to choose a
regimen that covers the **likely pathogens**, without knowing which one
is present.
Traditional antibiograms calculate the susceptibility % as just the
number of resistant isolates divided by the total number of tested
isolates. Therefore, traditional antibiograms:
- Fragment information by organism,
- Do not weight by real-world prevalence,
- Do not account for combination therapy or sample size,
- Do not provide uncertainty.
## The idea of WISCA
## The idea
WISCA asks:
> “What is the **probability** that this regimen **will cover** the
> pathogen, given the syndrome?”
This means combining two things:
This means combining two quantities:
- **Incidence** of each pathogen in the syndrome,
- **Pathogen incidence** in the syndrome (how often each species causes
it),
- **Susceptibility** of each pathogen to the regimen.
We can write this as:
@@ -62,11 +64,11 @@ We can write this as:
\text{Coverage} = \sum_i (\text{Incidence}_i \times \text{Susceptibility}_i)
```
For example, suppose:
For example, suppose in your hospital:
- *E. coli* causes 60% of cases, and 90% of *E. coli* are susceptible to
- *E. coli* causes 60% of UTIs, and 90% of *E. coli* are susceptible to
a drug.
- *Klebsiella* causes 40% of cases, and 70% of *Klebsiella* are
- *Klebsiella* causes 40% of UTIs, and 70% of *Klebsiella* are
susceptible.
Then:
@@ -75,24 +77,32 @@ Then:
\text{Coverage} = (0.6 \times 0.9) + (0.4 \times 0.7) = 0.82
```
But in real data, incidence and susceptibility are **estimated from
samples**, so they carry uncertainty. WISCA models this
**probabilistically**, using conjugate Bayesian distributions.
That 82% is a far more clinically meaningful number than the
species-level “90% of *E. coli*” and “70% of *Klebsiella*” reported
separately in a traditional antibiogram, because it directly answers the
question the clinician actually faces.
## The Bayesian engine behind WISCA
But in real data, both incidence and susceptibility are **estimated from
finite samples**, so they carry uncertainty. A sample of 50 isolates is
not a census. WISCA models this uncertainty **probabilistically**, using
conjugate Bayesian distributions.
## The Bayesian engine
### Pathogen incidence
Let:
- $`K`$ be the number of pathogens,
- $`\alpha = (1, 1, \ldots, 1)`$ be a **Dirichlet** prior (uniform),
- $`n = (n_1, \ldots, n_K)`$ be the observed counts per species.
- $`\boldsymbol{\alpha} = (1, 1, \ldots, 1)`$ be a $`\text{Dirichlet}`$
prior (uniform, non-informative),
- $`\boldsymbol{n} = (n_1, \ldots, n_K)`$ be the observed isolate counts
per species.
Then the posterior incidence is:
``` math
p \sim \text{Dirichlet}(\alpha_1 + n_1, \ldots, \alpha_K + n_K)
\boldsymbol{p} \sim \text{Dirichlet}(\alpha_1 + n_1, \ldots, \alpha_K + n_K)
```
To simulate from this, we use:
@@ -101,12 +111,21 @@ To simulate from this, we use:
x_i \sim \text{Gamma}(\alpha_i + n_i,\ 1), \quad p_i = \frac{x_i}{\sum_{j=1}^{K} x_j}
```
The Dirichlet is the conjugate prior for multinomial data. With the
non-informative prior $`\text{Dirichlet}(1, 1, \ldots, 1)`$, the
posterior is dominated by the data once sample sizes are reasonable.
With small samples, the posterior is appropriately more diffuse,
reflecting genuine uncertainty, and the resulting credible intervals
will be wider.
### Susceptibility
Each pathogenregimen pair has a prior and data:
Each pathogen-regimen pair has a prior and observed data:
- Prior: $`\text{Beta}(\alpha_0, \beta_0)`$, with default
$`\alpha_0 = \beta_0 = 1`$
- Default prior: $`\text{Beta}(0.5, 0.5)`$ (Jeffreys prior)
- Intrinsically resistant pairs: $`\text{Beta}(1, 9999)`$, forcing
near-zero susceptibility regardless of observed data (based on EUCAST
Expected Resistant Phenotypes)
- Data: $`S`$ susceptible out of $`N`$ tested
The $`S`$ category could also include values SDD (susceptible,
@@ -126,21 +145,44 @@ Putting it together:
1. Simulate pathogen incidence:
$`\boldsymbol{p} \sim \text{Dirichlet}`$
2. Simulate susceptibility:
$`\theta_i \sim \text{Beta}(1 + S_i,\ 1 + R_i)`$
$`\theta_i \sim \text{Beta}(\alpha_0 + S_i,\ \beta_0 + N_i - S_i)`$
3. Combine:
``` math
\text{Coverage} = \sum_{i=1}^{K} p_i \cdot \theta_i
```
Repeat this simulation (e.g. 1000×) and summarise:
Repeat this simulation (e.g., 1000 times) and summarise:
- **Mean** = expected coverage
- **Quantiles** = credible interval
- **Quantiles** = credible interval (95% by default)
Because each simulation draws from the full posterior, the resulting
distribution of coverage estimates naturally captures the joint
uncertainty in both pathogen incidence and susceptibility. The credible
interval tells you how confident you can be in the coverage estimate,
something a traditional antibiogram never provides.
## When to use WISCA vs. traditional antibiograms
| Goal | Recommended approach |
|---------------------------------------|---------------------------|
| Guide empirical therapy decisions | **WISCA** |
| Compare regimens for a syndrome | **WISCA** |
| Evaluate combination regimens | **WISCA** |
| Antimicrobial stewardship (A-team) | **WISCA** |
| Track resistance trends per species | Traditional / Combination |
| AMR surveillance reporting | Traditional / Syndromic |
| Understand species-level epidemiology | Traditional |
In short: if the end goal involves a *patient* who does not yet have a
culture result, WISCA is the appropriate tool. If the end goal is
*surveillance* of resistance at the species level, the traditional
antibiogram remains fit for purpose.
## Practical use in the `AMR` package
### Prepare data and simulate synthetic syndrome
### Prepare data
``` r
@@ -170,11 +212,11 @@ data
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
# Add a fake syndrome column
data$syndrome <- ifelse(data$mo %like% "coli", "UTI", "No UTI")
# Add a synthetic syndrome column for demonstration
data$syndrome <- ifelse(data$mo %like% "coli", "UTI", "Non-UTI")
```
### Basic WISCA antibiogram
### Basic WISCA
``` r
@@ -183,12 +225,15 @@ wisca(data,
)
```
| Amoxicillin/clavulanic acid | Ciprofloxacin | Gentamicin |
|:----------------------------|:-----------------|:-------------------|
| 73.7% (71.7-75.8%) | 77% (74.3-79.4%) | 72.8% (70.7-74.8%) |
| Amoxicillin/clavulanic acid | Ciprofloxacin | Gentamicin |
|:----------------------------|:-------------------|:-------------------|
| 74.2% (72.1-76.1%) | 78.4% (75.6-81.1%) | 72.5% (70.4-74.6%) |
### Use combination regimens
Combination regimens are specified with a `+` separator. WISCA evaluates
whether *at least one* agent in the combination covers the pathogen:
``` r
wisca(data,
@@ -198,10 +243,13 @@ wisca(data,
| Amoxicillin/clavulanic acid | Amoxicillin/clavulanic acid + Ciprofloxacin | Amoxicillin/clavulanic acid + Gentamicin |
|:---|:---|:---|
| 73.8% (71.8-75.7%) | 87.5% (85.9-89%) | 89.7% (88.2-91.1%) |
| 74.2% (72.2-76.1%) | 88.8% (87.2-90.4%) | 90.8% (89.4-92.2%) |
### Stratify by syndrome
Use `syndromic_group` to produce separate WISCA estimates per clinical
stratum. You can pass a column name or any expression:
``` r
wisca(data,
@@ -212,8 +260,8 @@ wisca(data,
| Syndromic Group | Amoxicillin/clavulanic acid | Amoxicillin/clavulanic acid + Ciprofloxacin | Amoxicillin/clavulanic acid + Gentamicin |
|:---|:---|:---|:---|
| No UTI | 70.1% (67.8-72.3%) | 85.2% (83.1-87.2%) | 87.1% (85.3-88.7%) |
| UTI | 80.9% (77.7-83.8%) | 88.2% (85.7-90.5%) | 90.9% (88.7-93%) |
| Non-UTI | 70.3% (67.9-72.7%) | 86.8% (84.9-88.7%) | 88.4% (86.4-90.2%) |
| UTI | 80.3% (77-83.3%) | 88.4% (85.7-90.8%) | 91% (88.3-93.3%) |
The `AMR` package is available in 28 languages, which can all be used
for the [`wisca()`](https://amr-for-r.org/reference/antibiogram.md)
@@ -230,8 +278,20 @@ wisca(data,
| Grupo sindrómico | Amoxicilina/ácido clavulánico | Amoxicilina/ácido clavulánico + Ciprofloxacina | Amoxicilina/ácido clavulánico + Gentamicina |
|:---|:---|:---|:---|
| No UCI | 70% (67.8-72.4%) | 85.3% (83.3-87.2%) | 87% (85.3-88.8%) |
| UCI | 80.9% (77.7-83.9%) | 88.2% (85.5-90.6%) | 90.9% (88.7-93%) |
| Non-UCI | 70.4% (68-72.8%) | 86.7% (84.6-88.7%) | 88.5% (86.5-90.2%) |
| UCI | 80.3% (77.2-83.5%) | 88.4% (85.5-90.8%) | 91% (88.4-93.1%) |
### Interpreting the output
Each row shows the estimated empirical coverage for a regimen, with a
95% credible interval. When comparing regimens:
- **Overlapping credible intervals** mean there is no statistically
significant difference in coverage. If a narrower-spectrum regimen
overlaps with a broader one, the narrower-spectrum option can be
preferred on stewardship grounds.
- **Non-overlapping credible intervals** indicate a clinically
meaningful difference in coverage.
## Sensible defaults, which can be customised
@@ -239,22 +299,45 @@ wisca(data,
- `conf_interval = 0.95`: coverage interval width
- `combine_SI = TRUE`: count “I” and “SDD” as susceptible
## Practical considerations
- **First isolates only**: always deduplicate using
[`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md)
before running WISCA. Repeat isolates introduce bias.
- **Pathogen selection**: consider filtering with
[`top_n_microorganisms()`](https://amr-for-r.org/reference/top_n_microorganisms.md).
Including rare contaminants (e.g. CoNS without clinical context) can
distort estimates and may artificially lower coverage (Cook *et al.*,
2022).
- **Sample size**: coverage estimates become reliable with approximately
100+ isolates. For smaller datasets, consider pooling data from
multiple sites, but only after verifying that pathogen distributions
are sufficiently similar (Bielicki *et al.*, 2016).
- **Culture request bias**: WISCA is only as good as the data it is
based on. If cultures are selectively requested (e.g. only after
treatment failure), the dataset will be biased towards resistant
isolates. A robust culture policy is essential for reliable estimates.
## Limitations
- It assumes your data are representative
- No adjustment for patient-level covariates, although these could be
passed onto the `syndromic_group` argument
- WISCA does not model resistance over time, you might want to use
`tidymodels` for that, for which we [wrote a basic
- It assumes your data are representative of the patient population you
are treating
- No direct adjustment for patient-level covariates, although these can
be passed onto the `syndromic_group` argument for stratification
- WISCA does not model resistance trends over time; for that, you might
want to use `tidymodels`, for which we [wrote a basic
introduction](https://amr-for-r.org/articles/AMR_with_tidymodels.html)
## Summary
WISCA enables:
- Empirical regimen comparison,
- Syndrome-specific coverage estimation,
- Fully probabilistic interpretation.
- **Empirical regimen comparison**, answering the clinicians actual
question
- **Syndrome-specific coverage estimation**, stratifiable by any
clinical variable
- **Fully probabilistic interpretation**, with credible intervals that
honestly communicate uncertainty
It is available in the `AMR` package via either:
@@ -265,10 +348,26 @@ wisca(...)
antibiogram(..., wisca = TRUE)
```
## Reference
## References
Bielicki, JA, et al. (2016). *Selecting appropriate empirical antibiotic
regimens for paediatric bloodstream infections: application of a
Bayesian decision model to local and pooled antimicrobial resistance
surveillance data.* **J Antimicrob Chemother**. 71(3):794-802.
<https://doi.org/10.1093/jac/dkv397>
1. Hebert C, Ridgway J, Vekhter B, Brown EC, Weber SG, Robicsek A.
Demonstration of the weighted-incidence syndromic combination
antibiogram: an empiric prescribing decision aid. *Infect Control
Hosp Epidemiol.* 2012;33(4):381-388.
<https://doi.org/10.1086/664768>
2. Randhawa V, Sarwar S, Walker S, Elligsen M, Palmay L, Daneman N.
Weighted-incidence syndromic combination antibiograms to guide
empiric treatment of critical care infections: a retrospective
cohort study. *Crit Care.* 2014;18(3):R112.
<https://doi.org/10.1186/cc13901>
3. Bielicki JA, Sharland M, Johnson AP, Henderson KL, Cromwell DA.
Selecting appropriate empirical antibiotic regimens for paediatric
bloodstream infections: application of a Bayesian decision model to
local and pooled antimicrobial resistance surveillance data. *J
Antimicrob Chemother.* 2016;71(3):794-802.
<https://doi.org/10.1093/jac/dkv397>
4. Cook A, Sharland M, Yau Y, Bielicki J. Improving empiric antibiotic
prescribing in pediatric bloodstream infections: a potential
application of weighted-incidence syndromic combination antibiograms
(WISCA). *Expert Rev Anti Infect Ther.* 2022;20(3):445-456.
<https://doi.org/10.1080/14787210.2021.1967145>