mirror of
https://github.com/msberends/AMR.git
synced 2025-01-30 18:24:38 +01:00
(v2.1.1.9133) update math formulae
This commit is contained in:
parent
9520977a10
commit
2561494e06
@ -63,10 +63,10 @@ jobs:
|
||||
- {os: ubuntu-latest, r: 'release', allowfail: false}
|
||||
|
||||
# older versions (see also check-old-tinytest.yaml for even older versions):
|
||||
- {os: ubuntu-latest, r: 'oldrel', allowfail: false}
|
||||
- {os: ubuntu-latest, r: 'oldrel-1', allowfail: false}
|
||||
- {os: ubuntu-latest, r: 'oldrel-2', allowfail: false}
|
||||
- {os: ubuntu-latest, r: 'oldrel-3', allowfail: false}
|
||||
- {os: ubuntu-latest, r: 'oldrel-4', allowfail: false}
|
||||
|
||||
env:
|
||||
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -21,7 +21,6 @@ utils = importr('utils')
|
||||
base.options(warn = -1)
|
||||
|
||||
# Override R library paths globally for the session
|
||||
robjects.r(f'.Library <- "{r_lib_path}"') # Replace default library
|
||||
robjects.r(f'.Library.site <- "{r_lib_path}"') # Replace site-specific library
|
||||
base._libPaths(r_lib_path) # Override .libPaths() as well
|
||||
|
||||
|
Binary file not shown.
BIN
PythonPackage/AMR/dist/amr-2.1.1.9133.tar.gz
vendored
BIN
PythonPackage/AMR/dist/amr-2.1.1.9133.tar.gz
vendored
Binary file not shown.
@ -195,48 +195,26 @@
|
||||
#' You can also use functions from specific 'table reporting' packages to transform the output of [antibiogram()] to your needs, e.g. with `flextable::as_flextable()` or `gt::gt()`.
|
||||
#'
|
||||
#' @section Why Use WISCA?:
|
||||
#' WISCA, as outlined by Barbieri *et al.* (\doi{10.1186/s13756-021-00939-2}), stands for
|
||||
#' Weighted-Incidence Syndromic Combination Antibiogram, which estimates the probability
|
||||
#' of adequate empirical antimicrobial regimen coverage for specific infection syndromes.
|
||||
#' This method leverages a Bayesian hierarchical logistic regression framework with random
|
||||
#' effects for pathogens and regimens, enabling robust estimates in the presence of sparse
|
||||
#' data.
|
||||
#'
|
||||
#' The Bayesian model assumes conjugate priors for parameter estimation. For example, the
|
||||
#' coverage probability \ifelse{latex}{\deqn{$theta$}}{$theta$} for a given antimicrobial regimen
|
||||
#' is modeled using a Beta distribution as a prior:
|
||||
#' WISCA, as outlined by Barbieri *et al.* (\doi{10.1186/s13756-021-00939-2}), stands for Weighted-Incidence Syndromic Combination Antibiogram, which estimates the probability of adequate empirical antimicrobial regimen coverage for specific infection syndromes. This method leverages a Bayesian hierarchical logistic regression framework with random effects for pathogens and regimens, enabling robust estimates in the presence of sparse data.
|
||||
#'
|
||||
#' \ifelse{latex}{\deqn{$theta$ \sim \text{Beta}($alpha$_0, $beta$_0)}}{
|
||||
#' \ifelse{html}{\figure{beta_prior.png}{options: width="300" alt="Beta prior"}}{$theta$ ~ Beta($alpha$_0, $beta$_0)}}
|
||||
#' The Bayesian model assumes conjugate priors for parameter estimation. For example, the coverage probability \eqn{\theta} for a given antimicrobial regimen is modelled using a Beta distribution as a prior:
|
||||
#'
|
||||
#' where \eqn{$alpha$_0} and \eqn{$beta$_0} represent prior successes and failures, respectively,
|
||||
#' informed by expert knowledge or weakly informative priors (e.g., \eqn{$alpha$_0 = 1, $beta$_0 = 1}).
|
||||
#' \deqn{\theta \sim \text{Beta}(\alpha_0, \beta_0)}
|
||||
#'
|
||||
#' The likelihood function is constructed based on observed data, where the number of covered
|
||||
#' cases for a regimen follows a binomial distribution:
|
||||
#' where \eqn{\alpha_0} and \eqn{\beta_0} represent prior successes and failures, respectively, informed by expert knowledge or weakly informative priors (e.g., \eqn{\alpha_0 = 1, \beta_0 = 1}). The likelihood function is constructed based on observed data, where the number of covered cases for a regimen follows a binomial distribution:
|
||||
#'
|
||||
#' \ifelse{latex}{\deqn{y \sim \text{Binomial}(n, $theta$)}}{
|
||||
#' \ifelse{html}{\figure{binomial_likelihood.png}{options: width="300" alt="Binomial likelihood"}}{y ~ Binomial(n, $theta$)}}
|
||||
#' \deqn{y \sim \text{Binomial}(n, \theta)}
|
||||
#'
|
||||
#' Posterior parameter estimates are obtained by combining the prior and likelihood using
|
||||
#' Bayes' theorem. The posterior distribution of \eqn{$theta$} is also a Beta distribution:
|
||||
#' Posterior parameter estimates are obtained by combining the prior and likelihood using Bayes' theorem. The posterior distribution of \eqn{\theta} is also a Beta distribution:
|
||||
#'
|
||||
#' \ifelse{latex}{\deqn{$theta$ | y \sim \text{Beta}($alpha$_0 + y, $beta$_0 + n - y)}}{
|
||||
#' \ifelse{html}{\figure{posterior_beta.png}{options: width="300" alt="Beta posterior"}}{$theta$ | y ~ Beta($alpha$_0 + y, $beta$_0 + n - y)}}
|
||||
#' \deqn{\theta | y \sim \text{Beta}(\alpha_0 + y, \beta_0 + n - y)}
|
||||
#'
|
||||
#' For hierarchical modeling, pathogen-level effects (e.g., differences in resistance
|
||||
#' patterns) and regimen-level effects are modelled using Gaussian priors on log-odds.
|
||||
#' This hierarchical structure ensures partial pooling of estimates across groups,
|
||||
#' improving stability in strata with small sample sizes. The model is implemented using
|
||||
#' Hamiltonian Monte Carlo (HMC) sampling.
|
||||
#' For hierarchical modelling, pathogen-level effects (e.g., differences in resistance patterns) and regimen-level effects are modelled using Gaussian priors on log-odds. This hierarchical structure ensures partial pooling of estimates across groups, improving stability in strata with small sample sizes. The model is implemented using Hamiltonian Monte Carlo (HMC) sampling.
|
||||
#'
|
||||
#' Stratified results are provided based on covariates such as age, sex, and clinical
|
||||
#' complexity (e.g., prior antimicrobial treatments or renal/urological comorbidities).
|
||||
#' For example, posterior odds ratios (ORs) are derived to quantify the effect of these
|
||||
#' covariates on coverage probabilities:
|
||||
#' Stratified results can be provided based on covariates such as age, sex, and clinical complexity (e.g., prior antimicrobial treatments or renal/urological comorbidities) using `dplyr`'s [group_by()] as a pre-processing step before running [wisca()]. In this case, posterior odds ratios (ORs) are derived to quantify the effect of these covariates on coverage probabilities:
|
||||
#'
|
||||
#' \ifelse{latex}{\deqn{\text{OR}_{\text{covariate}} = \frac{\exp($beta$_{\text{covariate}})}{\exp($beta$_0)}}}{
|
||||
#' \ifelse{html}{\figure{odds_ratio.png}{options: width="300" alt="Odds ratio formula"}}{OR_covariate = exp(beta_covariate) / exp(beta_0)}}
|
||||
#' \deqn{\text{OR}_{\text{covariate}} = \frac{\exp(\beta_{\text{covariate}})}{\exp(\beta_0)}}
|
||||
#'
|
||||
#' By combining empirical data with prior knowledge, WISCA overcomes the limitations
|
||||
#' of traditional combination antibiograms, offering disease-specific, patient-stratified
|
||||
@ -249,6 +227,7 @@
|
||||
#' * Klinker KP *et al.* (2021). **Antimicrobial stewardship and antibiograms: importance of moving beyond traditional antibiograms**. *Therapeutic Advances in Infectious Disease*, May 5;8:20499361211011373; \doi{10.1177/20499361211011373}
|
||||
#' * Barbieri E *et al.* (2021). **Development of a Weighted-Incidence Syndromic Combination Antibiogram (WISCA) to guide the choice of the empiric antibiotic treatment for urinary tract infection in paediatric patients: a Bayesian approach** *Antimicrobial Resistance & Infection Control* May 1;10(1):74; \doi{10.1186/s13756-021-00939-2}
|
||||
#' * **M39 Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data, 5th Edition**, 2022, *Clinical and Laboratory Standards Institute (CLSI)*. <https://clsi.org/standards/products/microbiology/documents/m39/>.
|
||||
#' @author Implementation: Dr. Larisse Bolton and Dr. Matthijs Berends
|
||||
#' @rdname antibiogram
|
||||
#' @name antibiogram
|
||||
#' @export
|
||||
@ -331,7 +310,8 @@
|
||||
#'
|
||||
#' ureido <- antibiogram(example_isolates,
|
||||
#' antibiotics = ureidopenicillins(),
|
||||
#' ab_transform = "name"
|
||||
#' ab_transform = "name",
|
||||
#' wisca = TRUE
|
||||
#' )
|
||||
#'
|
||||
#' # in an Rmd file, you would just need to return `ureido` in a chunk,
|
||||
|
@ -38,9 +38,7 @@
|
||||
#' @section Matching Score for Microorganisms:
|
||||
#' With ambiguous user input in [as.mo()] and all the [`mo_*`][mo_property()] functions, the returned results are chosen based on their matching score using [mo_matching_score()]. This matching score \eqn{m}, is calculated as:
|
||||
#'
|
||||
#' \ifelse{latex}{\deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}}{
|
||||
#'
|
||||
#' \ifelse{html}{\figure{mo_matching_score.png}{options: width="300" alt="mo matching score"}}{m(x, n) = ( l_n * min(l_n, lev(x, n) ) ) / ( l_n * p_n * k_n )}}
|
||||
#' \deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}
|
||||
#'
|
||||
#' where:
|
||||
#'
|
||||
|
@ -32,6 +32,11 @@ url: "https://msberends.github.io/AMR/"
|
||||
|
||||
template:
|
||||
bootstrap: 5
|
||||
includes: # support for mathematical formulas, from https://github.com/r-lib/pkgdown/issues/2704#issuecomment-2307055568
|
||||
in_header: |
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
|
||||
bootswatch: "flatly"
|
||||
assets: "pkgdown/logos" # use logos in this folder
|
||||
bslib:
|
||||
|
@ -65,7 +65,6 @@ utils = importr('utils')
|
||||
base.options(warn = -1)
|
||||
|
||||
# Override R library paths globally for the session
|
||||
robjects.r(f'.Library <- "{r_lib_path}"') # Replace default library
|
||||
robjects.r(f'.Library.site <- "{r_lib_path}"') # Replace site-specific library
|
||||
base._libPaths(r_lib_path) # Override .libPaths() as well
|
||||
|
||||
|
@ -1,54 +0,0 @@
|
||||
---
|
||||
title: "Generating antibiograms with the AMR package"
|
||||
author: "AMR package developers"
|
||||
date: "`r Sys.Date()`"
|
||||
output: pdf_document
|
||||
---
|
||||
|
||||
```{r setup, include=FALSE}
|
||||
knitr::opts_chunk$set(echo = TRUE, message = FALSE)
|
||||
library(AMR)
|
||||
```
|
||||
|
||||
This is an example R Markdown file to show the use of `antibiogram()` of the AMR package.
|
||||
|
||||
For starters, this is what our `example_isolates` data set looks like:
|
||||
|
||||
```{r}
|
||||
example_isolates
|
||||
```
|
||||
|
||||
|
||||
### Traditional Antibiogram
|
||||
|
||||
```{r trad}
|
||||
antibiogram(example_isolates,
|
||||
antibiotics = c(aminoglycosides(), carbapenems()))
|
||||
```
|
||||
|
||||
### Combined Antibiogram
|
||||
|
||||
```{r comb}
|
||||
antibiogram(example_isolates,
|
||||
antibiotics = c("TZP", "TZP+TOB", "TZP+GEN"))
|
||||
```
|
||||
|
||||
### Syndromic Antibiogram
|
||||
|
||||
```{r synd}
|
||||
antibiogram(example_isolates,
|
||||
antibiotics = c(aminoglycosides(), carbapenems()),
|
||||
syndromic_group = "ward")
|
||||
```
|
||||
|
||||
### Weighted-Incidence Syndromic Combination Antibiogram (WISCA)
|
||||
|
||||
```{r wisca}
|
||||
antibiogram(example_isolates,
|
||||
antibiotics = c("AMC", "AMC+CIP", "TZP", "TZP+TOB"),
|
||||
mo_transform = "gramstain",
|
||||
minimum = 10, # this should be >= 30, but now just as example
|
||||
syndromic_group = ifelse(example_isolates$age >= 65 &
|
||||
example_isolates$gender == "M",
|
||||
"WISCA Group 1", "WISCA Group 2"))
|
||||
```
|
File diff suppressed because one or more lines are too long
Binary file not shown.
@ -1854,48 +1854,26 @@ You can also use functions from specific 'table reporting' packages to transform
|
||||
}
|
||||
\section{Why Use WISCA?}{
|
||||
|
||||
WISCA, as outlined by Barbieri \emph{et al.} (\doi{10.1186/s13756-021-00939-2}), stands for
|
||||
Weighted-Incidence Syndromic Combination Antibiogram, which estimates the probability
|
||||
of adequate empirical antimicrobial regimen coverage for specific infection syndromes.
|
||||
This method leverages a Bayesian hierarchical logistic regression framework with random
|
||||
effects for pathogens and regimens, enabling robust estimates in the presence of sparse
|
||||
data.
|
||||
|
||||
The Bayesian model assumes conjugate priors for parameter estimation. For example, the
|
||||
coverage probability \ifelse{latex}{\deqn{$theta$}}{$theta$} for a given antimicrobial regimen
|
||||
is modeled using a Beta distribution as a prior:
|
||||
WISCA, as outlined by Barbieri \emph{et al.} (\doi{10.1186/s13756-021-00939-2}), stands for Weighted-Incidence Syndromic Combination Antibiogram, which estimates the probability of adequate empirical antimicrobial regimen coverage for specific infection syndromes. This method leverages a Bayesian hierarchical logistic regression framework with random effects for pathogens and regimens, enabling robust estimates in the presence of sparse data.
|
||||
|
||||
\ifelse{latex}{\deqn{$theta$ \sim \text{Beta}($alpha$_0, $beta$_0)}}{
|
||||
\ifelse{html}{\figure{beta_prior.png}{options: width="300" alt="Beta prior"}}{$theta$ ~ Beta($alpha$_0, $beta$_0)}}
|
||||
The Bayesian model assumes conjugate priors for parameter estimation. For example, the coverage probability \eqn{\theta} for a given antimicrobial regimen is modelled using a Beta distribution as a prior:
|
||||
|
||||
where \eqn{$alpha$_0} and \eqn{$beta$_0} represent prior successes and failures, respectively,
|
||||
informed by expert knowledge or weakly informative priors (e.g., \eqn{$alpha$_0 = 1, $beta$_0 = 1}).
|
||||
\deqn{\theta \sim \text{Beta}(\alpha_0, \beta_0)}
|
||||
|
||||
The likelihood function is constructed based on observed data, where the number of covered
|
||||
cases for a regimen follows a binomial distribution:
|
||||
where \eqn{\alpha_0} and \eqn{\beta_0} represent prior successes and failures, respectively, informed by expert knowledge or weakly informative priors (e.g., \eqn{\alpha_0 = 1, \beta_0 = 1}). The likelihood function is constructed based on observed data, where the number of covered cases for a regimen follows a binomial distribution:
|
||||
|
||||
\ifelse{latex}{\deqn{y \sim \text{Binomial}(n, $theta$)}}{
|
||||
\ifelse{html}{\figure{binomial_likelihood.png}{options: width="300" alt="Binomial likelihood"}}{y ~ Binomial(n, $theta$)}}
|
||||
\deqn{y \sim \text{Binomial}(n, \theta)}
|
||||
|
||||
Posterior parameter estimates are obtained by combining the prior and likelihood using
|
||||
Bayes' theorem. The posterior distribution of \eqn{$theta$} is also a Beta distribution:
|
||||
Posterior parameter estimates are obtained by combining the prior and likelihood using Bayes' theorem. The posterior distribution of \eqn{\theta} is also a Beta distribution:
|
||||
|
||||
\ifelse{latex}{\deqn{$theta$ | y \sim \text{Beta}($alpha$_0 + y, $beta$_0 + n - y)}}{
|
||||
\ifelse{html}{\figure{posterior_beta.png}{options: width="300" alt="Beta posterior"}}{$theta$ | y ~ Beta($alpha$_0 + y, $beta$_0 + n - y)}}
|
||||
\deqn{\theta | y \sim \text{Beta}(\alpha_0 + y, \beta_0 + n - y)}
|
||||
|
||||
For hierarchical modeling, pathogen-level effects (e.g., differences in resistance
|
||||
patterns) and regimen-level effects are modelled using Gaussian priors on log-odds.
|
||||
This hierarchical structure ensures partial pooling of estimates across groups,
|
||||
improving stability in strata with small sample sizes. The model is implemented using
|
||||
Hamiltonian Monte Carlo (HMC) sampling.
|
||||
For hierarchical modelling, pathogen-level effects (e.g., differences in resistance patterns) and regimen-level effects are modelled using Gaussian priors on log-odds. This hierarchical structure ensures partial pooling of estimates across groups, improving stability in strata with small sample sizes. The model is implemented using Hamiltonian Monte Carlo (HMC) sampling.
|
||||
|
||||
Stratified results are provided based on covariates such as age, sex, and clinical
|
||||
complexity (e.g., prior antimicrobial treatments or renal/urological comorbidities).
|
||||
For example, posterior odds ratios (ORs) are derived to quantify the effect of these
|
||||
covariates on coverage probabilities:
|
||||
Stratified results can be provided based on covariates such as age, sex, and clinical complexity (e.g., prior antimicrobial treatments or renal/urological comorbidities) using \code{dplyr}'s \code{\link[=group_by]{group_by()}} as a pre-processing step before running \code{\link[=wisca]{wisca()}}. In this case, posterior odds ratios (ORs) are derived to quantify the effect of these covariates on coverage probabilities:
|
||||
|
||||
\ifelse{latex}{\deqn{\text{OR}_{\text{covariate}} = \frac{\exp($beta$_{\text{covariate}})}{\exp($beta$_0)}}}{
|
||||
\ifelse{html}{\figure{odds_ratio.png}{options: width="300" alt="Odds ratio formula"}}{OR_covariate = exp(beta_covariate) / exp(beta_0)}}
|
||||
\deqn{\text{OR}_{\text{covariate}} = \frac{\exp(\beta_{\text{covariate}})}{\exp(\beta_0)}}
|
||||
|
||||
By combining empirical data with prior knowledge, WISCA overcomes the limitations
|
||||
of traditional combination antibiograms, offering disease-specific, patient-stratified
|
||||
@ -1982,7 +1960,8 @@ antibiogram(example_isolates,
|
||||
|
||||
ureido <- antibiogram(example_isolates,
|
||||
antibiotics = ureidopenicillins(),
|
||||
ab_transform = "name"
|
||||
ab_transform = "name",
|
||||
wisca = TRUE
|
||||
)
|
||||
|
||||
# in an Rmd file, you would just need to return `ureido` in a chunk,
|
||||
@ -2016,6 +1995,9 @@ plot(ab1)
|
||||
plot(ab2)
|
||||
}
|
||||
}
|
||||
\author{
|
||||
Implementation: Dr. Larisse Bolton and Dr. Matthijs Berends
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -3099,9 +3081,7 @@ This is based on:
|
||||
|
||||
With ambiguous user input in \code{\link[=as.mo]{as.mo()}} and all the \code{\link[=mo_property]{mo_*}} functions, the returned results are chosen based on their matching score using \code{\link[=mo_matching_score]{mo_matching_score()}}. This matching score \eqn{m}, is calculated as:
|
||||
|
||||
\ifelse{latex}{\deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}}{
|
||||
|
||||
\ifelse{html}{\figure{mo_matching_score.png}{options: width="300" alt="mo matching score"}}{m(x, n) = ( l_n * min(l_n, lev(x, n) ) ) / ( l_n * p_n * k_n )}}
|
||||
\deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}
|
||||
|
||||
where:
|
||||
\itemize{
|
||||
@ -6627,9 +6607,7 @@ Later, the work of Bartlett A \emph{et al.} about bacterial pathogens infecting
|
||||
|
||||
With ambiguous user input in \code{\link[=as.mo]{as.mo()}} and all the \code{\link[=mo_property]{mo_*}} functions, the returned results are chosen based on their matching score using \code{\link[=mo_matching_score]{mo_matching_score()}}. This matching score \eqn{m}, is calculated as:
|
||||
|
||||
\ifelse{latex}{\deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}}{
|
||||
|
||||
\ifelse{html}{\figure{mo_matching_score.png}{options: width="300" alt="mo matching score"}}{m(x, n) = ( l_n * min(l_n, lev(x, n) ) ) / ( l_n * p_n * k_n )}}
|
||||
\deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}
|
||||
|
||||
where:
|
||||
\itemize{
|
||||
|
@ -232,48 +232,26 @@ You can also use functions from specific 'table reporting' packages to transform
|
||||
}
|
||||
\section{Why Use WISCA?}{
|
||||
|
||||
WISCA, as outlined by Barbieri \emph{et al.} (\doi{10.1186/s13756-021-00939-2}), stands for
|
||||
Weighted-Incidence Syndromic Combination Antibiogram, which estimates the probability
|
||||
of adequate empirical antimicrobial regimen coverage for specific infection syndromes.
|
||||
This method leverages a Bayesian hierarchical logistic regression framework with random
|
||||
effects for pathogens and regimens, enabling robust estimates in the presence of sparse
|
||||
data.
|
||||
|
||||
The Bayesian model assumes conjugate priors for parameter estimation. For example, the
|
||||
coverage probability \ifelse{latex}{\deqn{$theta$}}{$theta$} for a given antimicrobial regimen
|
||||
is modeled using a Beta distribution as a prior:
|
||||
WISCA, as outlined by Barbieri \emph{et al.} (\doi{10.1186/s13756-021-00939-2}), stands for Weighted-Incidence Syndromic Combination Antibiogram, which estimates the probability of adequate empirical antimicrobial regimen coverage for specific infection syndromes. This method leverages a Bayesian hierarchical logistic regression framework with random effects for pathogens and regimens, enabling robust estimates in the presence of sparse data.
|
||||
|
||||
\ifelse{latex}{\deqn{$theta$ \sim \text{Beta}($alpha$_0, $beta$_0)}}{
|
||||
\ifelse{html}{\figure{beta_prior.png}{options: width="300" alt="Beta prior"}}{$theta$ ~ Beta($alpha$_0, $beta$_0)}}
|
||||
The Bayesian model assumes conjugate priors for parameter estimation. For example, the coverage probability \eqn{\theta} for a given antimicrobial regimen is modelled using a Beta distribution as a prior:
|
||||
|
||||
where \eqn{$alpha$_0} and \eqn{$beta$_0} represent prior successes and failures, respectively,
|
||||
informed by expert knowledge or weakly informative priors (e.g., \eqn{$alpha$_0 = 1, $beta$_0 = 1}).
|
||||
\deqn{\theta \sim \text{Beta}(\alpha_0, \beta_0)}
|
||||
|
||||
The likelihood function is constructed based on observed data, where the number of covered
|
||||
cases for a regimen follows a binomial distribution:
|
||||
where \eqn{\alpha_0} and \eqn{\beta_0} represent prior successes and failures, respectively, informed by expert knowledge or weakly informative priors (e.g., \eqn{\alpha_0 = 1, \beta_0 = 1}). The likelihood function is constructed based on observed data, where the number of covered cases for a regimen follows a binomial distribution:
|
||||
|
||||
\ifelse{latex}{\deqn{y \sim \text{Binomial}(n, $theta$)}}{
|
||||
\ifelse{html}{\figure{binomial_likelihood.png}{options: width="300" alt="Binomial likelihood"}}{y ~ Binomial(n, $theta$)}}
|
||||
\deqn{y \sim \text{Binomial}(n, \theta)}
|
||||
|
||||
Posterior parameter estimates are obtained by combining the prior and likelihood using
|
||||
Bayes' theorem. The posterior distribution of \eqn{$theta$} is also a Beta distribution:
|
||||
Posterior parameter estimates are obtained by combining the prior and likelihood using Bayes' theorem. The posterior distribution of \eqn{\theta} is also a Beta distribution:
|
||||
|
||||
\ifelse{latex}{\deqn{$theta$ | y \sim \text{Beta}($alpha$_0 + y, $beta$_0 + n - y)}}{
|
||||
\ifelse{html}{\figure{posterior_beta.png}{options: width="300" alt="Beta posterior"}}{$theta$ | y ~ Beta($alpha$_0 + y, $beta$_0 + n - y)}}
|
||||
\deqn{\theta | y \sim \text{Beta}(\alpha_0 + y, \beta_0 + n - y)}
|
||||
|
||||
For hierarchical modeling, pathogen-level effects (e.g., differences in resistance
|
||||
patterns) and regimen-level effects are modelled using Gaussian priors on log-odds.
|
||||
This hierarchical structure ensures partial pooling of estimates across groups,
|
||||
improving stability in strata with small sample sizes. The model is implemented using
|
||||
Hamiltonian Monte Carlo (HMC) sampling.
|
||||
For hierarchical modelling, pathogen-level effects (e.g., differences in resistance patterns) and regimen-level effects are modelled using Gaussian priors on log-odds. This hierarchical structure ensures partial pooling of estimates across groups, improving stability in strata with small sample sizes. The model is implemented using Hamiltonian Monte Carlo (HMC) sampling.
|
||||
|
||||
Stratified results are provided based on covariates such as age, sex, and clinical
|
||||
complexity (e.g., prior antimicrobial treatments or renal/urological comorbidities).
|
||||
For example, posterior odds ratios (ORs) are derived to quantify the effect of these
|
||||
covariates on coverage probabilities:
|
||||
Stratified results can be provided based on covariates such as age, sex, and clinical complexity (e.g., prior antimicrobial treatments or renal/urological comorbidities) using \code{dplyr}'s \code{\link[=group_by]{group_by()}} as a pre-processing step before running \code{\link[=wisca]{wisca()}}. In this case, posterior odds ratios (ORs) are derived to quantify the effect of these covariates on coverage probabilities:
|
||||
|
||||
\ifelse{latex}{\deqn{\text{OR}_{\text{covariate}} = \frac{\exp($beta$_{\text{covariate}})}{\exp($beta$_0)}}}{
|
||||
\ifelse{html}{\figure{odds_ratio.png}{options: width="300" alt="Odds ratio formula"}}{OR_covariate = exp(beta_covariate) / exp(beta_0)}}
|
||||
\deqn{\text{OR}_{\text{covariate}} = \frac{\exp(\beta_{\text{covariate}})}{\exp(\beta_0)}}
|
||||
|
||||
By combining empirical data with prior knowledge, WISCA overcomes the limitations
|
||||
of traditional combination antibiograms, offering disease-specific, patient-stratified
|
||||
@ -360,7 +338,8 @@ antibiogram(example_isolates,
|
||||
|
||||
ureido <- antibiogram(example_isolates,
|
||||
antibiotics = ureidopenicillins(),
|
||||
ab_transform = "name"
|
||||
ab_transform = "name",
|
||||
wisca = TRUE
|
||||
)
|
||||
|
||||
# in an Rmd file, you would just need to return `ureido` in a chunk,
|
||||
@ -394,3 +373,6 @@ plot(ab1)
|
||||
plot(ab2)
|
||||
}
|
||||
}
|
||||
\author{
|
||||
Implementation: Dr. Larisse Bolton and Dr. Matthijs Berends
|
||||
}
|
||||
|
@ -169,9 +169,7 @@ This is based on:
|
||||
|
||||
With ambiguous user input in \code{\link[=as.mo]{as.mo()}} and all the \code{\link[=mo_property]{mo_*}} functions, the returned results are chosen based on their matching score using \code{\link[=mo_matching_score]{mo_matching_score()}}. This matching score \eqn{m}, is calculated as:
|
||||
|
||||
\ifelse{latex}{\deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}}{
|
||||
|
||||
\ifelse{html}{\figure{mo_matching_score.png}{options: width="300" alt="mo matching score"}}{m(x, n) = ( l_n * min(l_n, lev(x, n) ) ) / ( l_n * p_n * k_n )}}
|
||||
\deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}
|
||||
|
||||
where:
|
||||
\itemize{
|
||||
|
@ -23,9 +23,7 @@ Later, the work of Bartlett A \emph{et al.} about bacterial pathogens infecting
|
||||
|
||||
With ambiguous user input in \code{\link[=as.mo]{as.mo()}} and all the \code{\link[=mo_property]{mo_*}} functions, the returned results are chosen based on their matching score using \code{\link[=mo_matching_score]{mo_matching_score()}}. This matching score \eqn{m}, is calculated as:
|
||||
|
||||
\ifelse{latex}{\deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}}{
|
||||
|
||||
\ifelse{html}{\figure{mo_matching_score.png}{options: width="300" alt="mo matching score"}}{m(x, n) = ( l_n * min(l_n, lev(x, n) ) ) / ( l_n * p_n * k_n )}}
|
||||
\deqn{m_{(x, n)} = \frac{l_{n} - 0.5 \cdot \min \begin{cases}l_{n} \\ \textrm{lev}(x, n)\end{cases}}{l_{n} \cdot p_{n} \cdot k_{n}}}
|
||||
|
||||
where:
|
||||
\itemize{
|
||||
|
@ -37,9 +37,6 @@ expect_inherits <- function(x, y, ...) {
|
||||
", required is class ", paste0(y, collapse = "/")))
|
||||
}
|
||||
expect_stdout <- expect_output
|
||||
if (getRversion() < "4.0.0") {
|
||||
deparse1 <- AMR:::deparse1
|
||||
}
|
||||
|
||||
# start unit tests
|
||||
test_check("AMR")
|
||||
|
Loading…
Reference in New Issue
Block a user