mirror of
https://github.com/msberends/AMR.git
synced 2025-07-17 19:53:16 +02:00
Built site for AMR@2.1.1.9230: b972bbb
This commit is contained in:
@ -31,7 +31,7 @@
|
||||
|
||||
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
|
||||
|
||||
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9229</small>
|
||||
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9230</small>
|
||||
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
|
||||
@ -45,9 +45,8 @@
|
||||
<ul class="dropdown-menu" aria-labelledby="dropdown-how-to">
|
||||
<li><a class="dropdown-item" href="../articles/AMR.html"><span class="fa fa-directions"></span> Conduct AMR Analysis</a></li>
|
||||
<li><a class="dropdown-item" href="../reference/antibiogram.html"><span class="fa fa-file-prescription"></span> Generate Antibiogram (Trad./Syndromic/WISCA)</a></li>
|
||||
<li><a class="dropdown-item" href="../articles/resistance_predict.html"><span class="fa fa-dice"></span> Predict Antimicrobial Resistance</a></li>
|
||||
<li><a class="dropdown-item" href="../articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||
<li><a class="dropdown-item" href="../articles/AMR_with_tidymodels.html"><span class="fa fa-square-root-variable"></span> Use AMR for Predictive Modelling (tidymodels)</a></li>
|
||||
<li><a class="dropdown-item" href="../articles/datasets.html"><span class="fa fa-database"></span> Download Data Sets for Own Use</a></li>
|
||||
<li><a class="dropdown-item" href="../reference/AMR-options.html"><span class="fa fa-gear"></span> Set User- Or Team-specific Package Settings</a></li>
|
||||
<li><a class="dropdown-item" href="../articles/PCA.html"><span class="fa fa-compress"></span> Conduct Principal Component Analysis for AMR</a></li>
|
||||
<li><a class="dropdown-item" href="../articles/MDR.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
|
||||
@ -94,13 +93,17 @@
|
||||
Assistant</a>, a ChatGPT manually-trained model able to answer any
|
||||
question about the AMR package.</p>
|
||||
</blockquote>
|
||||
<hr>
|
||||
<div class="section level2">
|
||||
<h2 id="example-1-using-antimicrobial-selectors">Example 1: Using Antimicrobial Selectors<a class="anchor" aria-label="anchor" href="#example-1-using-antimicrobial-selectors"></a>
|
||||
</h2>
|
||||
<p>Antimicrobial resistance (AMR) is a global health crisis, and
|
||||
understanding resistance patterns is crucial for managing effective
|
||||
treatments. The <code>AMR</code> R package provides robust tools for
|
||||
analysing AMR data, including convenient antibiotic selector functions
|
||||
like <code><a href="../reference/antimicrobial_selectors.html">aminoglycosides()</a></code> and <code><a href="../reference/antimicrobial_selectors.html">betalactams()</a></code>. In
|
||||
this post, we will explore how to use the <code>tidymodels</code>
|
||||
framework to predict resistance patterns in the
|
||||
analysing AMR data, including convenient antimicrobial selector
|
||||
functions like <code><a href="../reference/antimicrobial_selectors.html">aminoglycosides()</a></code> and
|
||||
<code><a href="../reference/antimicrobial_selectors.html">betalactams()</a></code>. In this post, we will explore how to use the
|
||||
<code>tidymodels</code> framework to predict resistance patterns in the
|
||||
<code>example_isolates</code> dataset.</p>
|
||||
<p>By leveraging the power of <code>tidymodels</code> and the
|
||||
<code>AMR</code> package, we’ll build a reproducible machine learning
|
||||
@ -147,6 +150,29 @@ package.</p>
|
||||
<span><span class="co">#> <span style="color: #BB0000;">✖</span> <span style="color: #0000BB;">dplyr</span>::<span style="color: #00BB00;">lag()</span> masks <span style="color: #0000BB;">stats</span>::lag()</span></span>
|
||||
<span><span class="co">#> <span style="color: #BB0000;">✖</span> <span style="color: #0000BB;">recipes</span>::<span style="color: #00BB00;">step()</span> masks <span style="color: #0000BB;">stats</span>::step()</span></span>
|
||||
<span></span>
|
||||
<span><span class="co"># Your data could look like this:</span></span>
|
||||
<span><span class="va">example_isolates</span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># A tibble: 2,000 × 46</span></span></span>
|
||||
<span><span class="co">#> date patient age gender ward mo PEN OXA FLC AMX </span></span>
|
||||
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><date></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><mo></span> <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #949494; font-style: italic;"><sir></span> <span style="color: #949494; font-style: italic;"><sir></span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 1</span> 2002-01-02 A77334 65 F Clinical <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #B2B2B2;"> NA</span> </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 2</span> 2002-01-03 A77334 65 F Clinical <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #B2B2B2;"> NA</span> </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 3</span> 2002-01-07 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 4</span> 2002-01-07 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 5</span> 2002-01-13 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 6</span> 2002-01-13 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 7</span> 2002-01-14 462729 78 M Clinical <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>AURS <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #5FD7AF;"> S </span> <span style="color: #080808; background-color: #FFAFAF;"> R </span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 8</span> 2002-01-14 462729 78 M Clinical <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>AURS <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #5FD7AF;"> S </span> <span style="color: #080808; background-color: #FFAFAF;"> R </span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 9</span> 2002-01-16 067927 45 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">10</span> 2002-01-17 858515 79 F ICU <span style="color: #949494;">B_</span>STPHY<span style="color: #949494;">_</span>EPDR <span style="color: #080808; background-color: #FFAFAF;"> R </span> <span style="color: #B2B2B2;"> NA</span> <span style="color: #080808; background-color: #5FD7AF;"> S </span> <span style="color: #B2B2B2;"> NA</span> </span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># ℹ 1,990 more rows</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …</span></span></span>
|
||||
<span></span>
|
||||
<span><span class="co"># Select relevant columns for prediction</span></span>
|
||||
<span><span class="va">data</span> <span class="op"><-</span> <span class="va">example_isolates</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="co"># select AB results dynamically</span></span>
|
||||
@ -240,11 +266,11 @@ predictors.</li>
|
||||
<code>step_corr()</code> removes predictors (i.e., antibiotic
|
||||
columns) that have a higher correlation than 90%.</li>
|
||||
</ul>
|
||||
<p>Notice how the recipe contains just the antibiotic selector functions
|
||||
- no need to define the columns specifically. In the preparation
|
||||
(retrieved with <code>prep()</code>) we can see that the columns or
|
||||
variables ‘AMX’ and ‘CTX’ were removed as they correlate too much with
|
||||
existing, other variables.</p>
|
||||
<p>Notice how the recipe contains just the antimicrobial selector
|
||||
functions - no need to define the columns specifically. In the
|
||||
preparation (retrieved with <code>prep()</code>) we can see that the
|
||||
columns or variables ‘AMX’ and ‘CTX’ were removed as they correlate too
|
||||
much with existing, other variables.</p>
|
||||
</div>
|
||||
<div class="section level4">
|
||||
<h4 id="specifying-the-model">2. Specifying the Model<a class="anchor" aria-label="anchor" href="#specifying-the-model"></a>
|
||||
@ -254,7 +280,7 @@ a binary classification task.</p>
|
||||
<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="co"># Specify a logistic regression model</span></span>
|
||||
<span><span class="va">logistic_model</span> <span class="op"><-</span> <span class="fu">logistic_reg</span><span class="op">(</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu">set_engine</span><span class="op">(</span><span class="st">"glm"</span><span class="op">)</span> <span class="co"># Use the Generalized Linear Model engine</span></span>
|
||||
<span> <span class="fu">set_engine</span><span class="op">(</span><span class="st">"glm"</span><span class="op">)</span> <span class="co"># Use the Generalised Linear Model engine</span></span>
|
||||
<span><span class="va">logistic_model</span></span>
|
||||
<span><span class="co">#> Logistic Regression Model Specification (classification)</span></span>
|
||||
<span><span class="co">#> </span></span>
|
||||
@ -273,7 +299,7 @@ engine.</li>
|
||||
<h4 id="building-the-workflow">3. Building the Workflow<a class="anchor" aria-label="anchor" href="#building-the-workflow"></a>
|
||||
</h4>
|
||||
<p>We bundle the recipe and model together into a <code>workflow</code>,
|
||||
which organizes the entire modeling process.</p>
|
||||
which organises the entire modeling process.</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="co"># Combine the recipe and model into a workflow</span></span>
|
||||
<span><span class="va">resistance_workflow</span> <span class="op"><-</span> <span class="fu">workflow</span><span class="op">(</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
@ -320,9 +346,9 @@ testing sets.</li>
|
||||
<li>
|
||||
<code>fit()</code> trains the workflow on the training set.</li>
|
||||
</ul>
|
||||
<p>Notice how in <code>fit()</code>, the antibiotic selector functions
|
||||
are internally called again. For training, these functions are called
|
||||
since they are stored in the recipe.</p>
|
||||
<p>Notice how in <code>fit()</code>, the antimicrobial selector
|
||||
functions are internally called again. For training, these functions are
|
||||
called since they are stored in the recipe.</p>
|
||||
<p>Next, we evaluate the model on the testing data.</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="co"># Make predictions on the testing set</span></span>
|
||||
@ -363,7 +389,22 @@ since they are stored in the recipe.</p>
|
||||
<span><span class="co">#> .metric .estimator .estimate</span></span>
|
||||
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><dbl></span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">1</span> accuracy binary 0.995</span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> kap binary 0.989</span></span></code></pre></div>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> kap binary 0.989</span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span><span class="co"># To assess some other model properties, you can make our own `metrics()` function</span></span>
|
||||
<span><span class="va">our_metrics</span> <span class="op"><-</span> <span class="fu">metric_set</span><span class="op">(</span><span class="va">accuracy</span>, <span class="va">kap</span>, <span class="va">ppv</span>, <span class="va">npv</span><span class="op">)</span> <span class="co"># add Positive Predictive Value and Negative Predictive Value</span></span>
|
||||
<span><span class="va">metrics2</span> <span class="op"><-</span> <span class="va">predictions</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu">our_metrics</span><span class="op">(</span>truth <span class="op">=</span> <span class="va">mo</span>, estimate <span class="op">=</span> <span class="va">.pred_class</span><span class="op">)</span> <span class="co"># run again on our `our_metrics()` function</span></span>
|
||||
<span></span>
|
||||
<span><span class="va">metrics2</span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># A tibble: 4 × 3</span></span></span>
|
||||
<span><span class="co">#> .metric .estimator .estimate</span></span>
|
||||
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><dbl></span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">1</span> accuracy binary 0.995</span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> kap binary 0.989</span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">3</span> ppv binary 0.987</span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">4</span> npv binary 1</span></span></code></pre></div>
|
||||
<p><strong>Explanation:</strong></p>
|
||||
<ul>
|
||||
<li>
|
||||
@ -373,9 +414,9 @@ set.</li>
|
||||
<code>metrics()</code> computes evaluation metrics like accuracy and
|
||||
kappa.</li>
|
||||
</ul>
|
||||
<p>It appears we can predict the Gram based on AMR results with a 99.5%
|
||||
accuracy based on AMR results of aminoglycosides and beta-lactam
|
||||
antibiotics. The ROC curve looks like this:</p>
|
||||
<p>It appears we can predict the Gram stain with a 99.5% accuracy based
|
||||
on AMR results of only aminoglycosides and beta-lactam antibiotics. The
|
||||
ROC curve looks like this:</p>
|
||||
<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="va">predictions</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu">roc_curve</span><span class="op">(</span><span class="va">mo</span>, <span class="va">`.pred_Gram-negative`</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
@ -392,9 +433,241 @@ pipeline with the <code>tidymodels</code> framework and the
|
||||
<code><a href="../reference/antimicrobial_selectors.html">aminoglycosides()</a></code> and <code><a href="../reference/antimicrobial_selectors.html">betalactams()</a></code> with
|
||||
<code>tidymodels</code>, we efficiently prepared data, trained a model,
|
||||
and evaluated its performance.</p>
|
||||
<p>This workflow is extensible to other antibiotic classes and
|
||||
<p>This workflow is extensible to other antimicrobial classes and
|
||||
resistance patterns, empowering users to analyse AMR data systematically
|
||||
and reproducibly.</p>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section level2">
|
||||
<h2 id="example-2-predicting-amr-over-time">Example 2: Predicting AMR Over Time<a class="anchor" aria-label="anchor" href="#example-2-predicting-amr-over-time"></a>
|
||||
</h2>
|
||||
<p>In this second example, we aim to predict antimicrobial resistance
|
||||
(AMR) trends over time using <code>tidymodels</code>. We will model
|
||||
resistance to three antibiotics (amoxicillin <code>AMX</code>,
|
||||
amoxicillin-clavulanic acid <code>AMC</code>, and ciprofloxacin
|
||||
<code>CIP</code>), based on historical data grouped by year and hospital
|
||||
ward.</p>
|
||||
<div class="section level3">
|
||||
<h3 id="objective-1">
|
||||
<strong>Objective</strong><a class="anchor" aria-label="anchor" href="#objective-1"></a>
|
||||
</h3>
|
||||
<p>Our goal is to:</p>
|
||||
<ol style="list-style-type: decimal">
|
||||
<li>Prepare the dataset by aggregating resistance data over time.</li>
|
||||
<li>Define a regression model to predict AMR trends.</li>
|
||||
<li>Use <code>tidymodels</code> to preprocess, train, and evaluate the
|
||||
model.</li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="section level3">
|
||||
<h3 id="data-preparation-1">
|
||||
<strong>Data Preparation</strong><a class="anchor" aria-label="anchor" href="#data-preparation-1"></a>
|
||||
</h3>
|
||||
<p>We start by transforming the <code>example_isolates</code> dataset
|
||||
into a structured time-series format.</p>
|
||||
<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="co"># Load required libraries</span></span>
|
||||
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://msberends.github.io/AMR/">AMR</a></span><span class="op">)</span></span>
|
||||
<span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://tidymodels.tidymodels.org" class="external-link">tidymodels</a></span><span class="op">)</span></span>
|
||||
<span></span>
|
||||
<span><span class="co"># Transform dataset</span></span>
|
||||
<span><span class="va">data_time</span> <span class="op"><-</span> <span class="va">example_isolates</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu"><a href="../reference/top_n_microorganisms.html">top_n_microorganisms</a></span><span class="op">(</span>n <span class="op">=</span> <span class="fl">10</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># Filter on the top #10 species</span></span>
|
||||
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/mutate.html" class="external-link">mutate</a></span><span class="op">(</span>year <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/integer.html" class="external-link">as.integer</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/format.html" class="external-link">format</a></span><span class="op">(</span><span class="va">date</span>, <span class="st">"%Y"</span><span class="op">)</span><span class="op">)</span>, <span class="co"># Extract year from date</span></span>
|
||||
<span> gramstain <span class="op">=</span> <span class="fu"><a href="../reference/mo_property.html">mo_gramstain</a></span><span class="op">(</span><span class="va">mo</span><span class="op">)</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># Get taxonomic names</span></span>
|
||||
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">year</span>, <span class="va">gramstain</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/summarise.html" class="external-link">summarise</a></span><span class="op">(</span><span class="fu"><a href="https://dplyr.tidyverse.org/reference/across.html" class="external-link">across</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="va">AMX</span>, <span class="va">AMC</span>, <span class="va">CIP</span><span class="op">)</span>, </span>
|
||||
<span> <span class="kw">function</span><span class="op">(</span><span class="va">x</span><span class="op">)</span> <span class="fu"><a href="../reference/proportion.html">resistance</a></span><span class="op">(</span><span class="va">x</span>, minimum <span class="op">=</span> <span class="fl">0</span><span class="op">)</span>,</span>
|
||||
<span> .names <span class="op">=</span> <span class="st">"res_{.col}"</span><span class="op">)</span>, </span>
|
||||
<span> .groups <span class="op">=</span> <span class="st">"drop"</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> </span>
|
||||
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/filter.html" class="external-link">filter</a></span><span class="op">(</span><span class="op">!</span><span class="fu"><a href="https://rdrr.io/r/base/NA.html" class="external-link">is.na</a></span><span class="op">(</span><span class="va">res_AMX</span><span class="op">)</span> <span class="op">&</span> <span class="op">!</span><span class="fu"><a href="https://rdrr.io/r/base/NA.html" class="external-link">is.na</a></span><span class="op">(</span><span class="va">res_AMC</span><span class="op">)</span> <span class="op">&</span> <span class="op">!</span><span class="fu"><a href="https://rdrr.io/r/base/NA.html" class="external-link">is.na</a></span><span class="op">(</span><span class="va">res_CIP</span><span class="op">)</span><span class="op">)</span> <span class="co"># Drop missing values</span></span>
|
||||
<span><span class="co">#> <span style="color: #0000BB;">ℹ Using column '</span><span style="color: #0000BB; font-weight: bold;">mo</span><span style="color: #0000BB;">' as input for </span><span style="color: #0000BB; background-color: #EEEEEE;">col_mo</span><span style="color: #0000BB;">.</span></span></span>
|
||||
<span></span>
|
||||
<span><span class="va">data_time</span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># A tibble: 32 × 5</span></span></span>
|
||||
<span><span class="co">#> year gramstain res_AMX res_AMC res_CIP</span></span>
|
||||
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><int></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><dbl></span> <span style="color: #949494; font-style: italic;"><dbl></span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 1</span> <span style="text-decoration: underline;">2</span>002 Gram-negative 1 0.105 0.060<span style="text-decoration: underline;">6</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 2</span> <span style="text-decoration: underline;">2</span>002 Gram-positive 0.838 0.182 0.162 </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 3</span> <span style="text-decoration: underline;">2</span>003 Gram-negative 1 0.071<span style="text-decoration: underline;">4</span> 0 </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 4</span> <span style="text-decoration: underline;">2</span>003 Gram-positive 0.714 0.244 0.154 </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 5</span> <span style="text-decoration: underline;">2</span>004 Gram-negative 0.464 0.093<span style="text-decoration: underline;">8</span> 0 </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 6</span> <span style="text-decoration: underline;">2</span>004 Gram-positive 0.849 0.299 0.244 </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 7</span> <span style="text-decoration: underline;">2</span>005 Gram-negative 0.412 0.132 0.058<span style="text-decoration: underline;">8</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 8</span> <span style="text-decoration: underline;">2</span>005 Gram-positive 0.882 0.382 0.154 </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;"> 9</span> <span style="text-decoration: underline;">2</span>006 Gram-negative 0.379 0 0.1 </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">10</span> <span style="text-decoration: underline;">2</span>006 Gram-positive 0.778 0.333 0.353 </span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># ℹ 22 more rows</span></span></span></code></pre></div>
|
||||
<p><strong>Explanation:</strong> - <code>mo_name(mo)</code>: Converts
|
||||
microbial codes into proper species names. - <code><a href="../reference/proportion.html">resistance()</a></code>:
|
||||
Converts AMR results into numeric values (proportion of resistant
|
||||
isolates). - <code>group_by(year, ward, species)</code>: Aggregates
|
||||
resistance rates by year and ward.</p>
|
||||
</div>
|
||||
<div class="section level3">
|
||||
<h3 id="defining-the-workflow-1">
|
||||
<strong>Defining the Workflow</strong><a class="anchor" aria-label="anchor" href="#defining-the-workflow-1"></a>
|
||||
</h3>
|
||||
<p>We now define the modeling workflow, which consists of a
|
||||
preprocessing step, a model specification, and the fitting process.</p>
|
||||
<div class="section level4">
|
||||
<h4 id="preprocessing-with-a-recipe-1">1. Preprocessing with a Recipe<a class="anchor" aria-label="anchor" href="#preprocessing-with-a-recipe-1"></a>
|
||||
</h4>
|
||||
<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="co"># Define the recipe</span></span>
|
||||
<span><span class="va">resistance_recipe_time</span> <span class="op"><-</span> <span class="fu">recipe</span><span class="op">(</span><span class="va">res_AMX</span> <span class="op">~</span> <span class="va">year</span> <span class="op">+</span> <span class="va">gramstain</span>, data <span class="op">=</span> <span class="va">data_time</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu">step_dummy</span><span class="op">(</span><span class="va">gramstain</span>, one_hot <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># Convert categorical to numerical</span></span>
|
||||
<span> <span class="fu">step_normalize</span><span class="op">(</span><span class="va">year</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># Normalise year for better model performance</span></span>
|
||||
<span> <span class="fu">step_nzv</span><span class="op">(</span><span class="fu">all_predictors</span><span class="op">(</span><span class="op">)</span><span class="op">)</span> <span class="co"># Remove near-zero variance predictors</span></span>
|
||||
<span></span>
|
||||
<span><span class="va">resistance_recipe_time</span></span>
|
||||
<span><span class="co">#> </span></span>
|
||||
<span><span class="co">#> <span style="color: #00BBBB;">──</span> <span style="font-weight: bold;">Recipe</span> <span style="color: #00BBBB;">──────────────────────────────────────────────────────────────────────</span></span></span>
|
||||
<span><span class="co">#> </span></span>
|
||||
<span><span class="co">#> ── Inputs</span></span>
|
||||
<span><span class="co">#> Number of variables by role</span></span>
|
||||
<span><span class="co">#> outcome: 1</span></span>
|
||||
<span><span class="co">#> predictor: 2</span></span>
|
||||
<span><span class="co">#> </span></span>
|
||||
<span><span class="co">#> ── Operations</span></span>
|
||||
<span><span class="co">#> <span style="color: #00BBBB;">•</span> Dummy variables from: <span style="color: #0000BB;">gramstain</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #00BBBB;">•</span> Centering and scaling for: <span style="color: #0000BB;">year</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #00BBBB;">•</span> Sparse, unbalanced variable filter on: <span style="color: #0000BB;">all_predictors()</span></span></span></code></pre></div>
|
||||
<p><strong>Explanation:</strong> - <code>step_dummy()</code>: Encodes
|
||||
categorical variables (<code>ward</code>, <code>species</code>) as
|
||||
numerical indicators. - <code>step_normalize()</code>: Normalises the
|
||||
<code>year</code> variable. - <code>step_nzv()</code>: Removes near-zero
|
||||
variance predictors.</p>
|
||||
</div>
|
||||
<div class="section level4">
|
||||
<h4 id="specifying-the-model-1">2. Specifying the Model<a class="anchor" aria-label="anchor" href="#specifying-the-model-1"></a>
|
||||
</h4>
|
||||
<p>We use a linear regression model to predict resistance trends.</p>
|
||||
<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="co"># Define the linear regression model</span></span>
|
||||
<span><span class="va">lm_model</span> <span class="op"><-</span> <span class="fu">linear_reg</span><span class="op">(</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu">set_engine</span><span class="op">(</span><span class="st">"lm"</span><span class="op">)</span> <span class="co"># Use linear regression</span></span>
|
||||
<span></span>
|
||||
<span><span class="va">lm_model</span></span>
|
||||
<span><span class="co">#> Linear Regression Model Specification (regression)</span></span>
|
||||
<span><span class="co">#> </span></span>
|
||||
<span><span class="co">#> Computational engine: lm</span></span></code></pre></div>
|
||||
<p><strong>Explanation:</strong> - <code>linear_reg()</code>: Defines a
|
||||
linear regression model. - <code>set_engine("lm")</code>: Uses R’s
|
||||
built-in linear regression engine.</p>
|
||||
</div>
|
||||
<div class="section level4">
|
||||
<h4 id="building-the-workflow-1">3. Building the Workflow<a class="anchor" aria-label="anchor" href="#building-the-workflow-1"></a>
|
||||
</h4>
|
||||
<p>We combine the preprocessing recipe and model into a workflow.</p>
|
||||
<div class="sourceCode" id="cb12"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="co"># Create workflow</span></span>
|
||||
<span><span class="va">resistance_workflow_time</span> <span class="op"><-</span> <span class="fu">workflow</span><span class="op">(</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu">add_recipe</span><span class="op">(</span><span class="va">resistance_recipe_time</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu">add_model</span><span class="op">(</span><span class="va">lm_model</span><span class="op">)</span></span>
|
||||
<span></span>
|
||||
<span><span class="va">resistance_workflow_time</span></span>
|
||||
<span><span class="co">#> ══ Workflow ════════════════════════════════════════════════════════════════════</span></span>
|
||||
<span><span class="co">#> <span style="font-style: italic;">Preprocessor:</span> Recipe</span></span>
|
||||
<span><span class="co">#> <span style="font-style: italic;">Model:</span> linear_reg()</span></span>
|
||||
<span><span class="co">#> </span></span>
|
||||
<span><span class="co">#> ── Preprocessor ────────────────────────────────────────────────────────────────</span></span>
|
||||
<span><span class="co">#> 3 Recipe Steps</span></span>
|
||||
<span><span class="co">#> </span></span>
|
||||
<span><span class="co">#> • step_dummy()</span></span>
|
||||
<span><span class="co">#> • step_normalize()</span></span>
|
||||
<span><span class="co">#> • step_nzv()</span></span>
|
||||
<span><span class="co">#> </span></span>
|
||||
<span><span class="co">#> ── Model ───────────────────────────────────────────────────────────────────────</span></span>
|
||||
<span><span class="co">#> Linear Regression Model Specification (regression)</span></span>
|
||||
<span><span class="co">#> </span></span>
|
||||
<span><span class="co">#> Computational engine: lm</span></span></code></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section level3">
|
||||
<h3 id="training-and-evaluating-the-model-1">
|
||||
<strong>Training and Evaluating the Model</strong><a class="anchor" aria-label="anchor" href="#training-and-evaluating-the-model-1"></a>
|
||||
</h3>
|
||||
<p>We split the data into training and testing sets, fit the model, and
|
||||
evaluate performance.</p>
|
||||
<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="co"># Split the data</span></span>
|
||||
<span><span class="fu"><a href="https://rdrr.io/r/base/Random.html" class="external-link">set.seed</a></span><span class="op">(</span><span class="fl">123</span><span class="op">)</span></span>
|
||||
<span><span class="va">data_split_time</span> <span class="op"><-</span> <span class="fu">initial_split</span><span class="op">(</span><span class="va">data_time</span>, prop <span class="op">=</span> <span class="fl">0.8</span><span class="op">)</span></span>
|
||||
<span><span class="va">train_time</span> <span class="op"><-</span> <span class="fu">training</span><span class="op">(</span><span class="va">data_split_time</span><span class="op">)</span></span>
|
||||
<span><span class="va">test_time</span> <span class="op"><-</span> <span class="fu">testing</span><span class="op">(</span><span class="va">data_split_time</span><span class="op">)</span></span>
|
||||
<span></span>
|
||||
<span><span class="co"># Train the model</span></span>
|
||||
<span><span class="va">fitted_workflow_time</span> <span class="op"><-</span> <span class="va">resistance_workflow_time</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu">fit</span><span class="op">(</span><span class="va">train_time</span><span class="op">)</span></span>
|
||||
<span></span>
|
||||
<span><span class="co"># Make predictions</span></span>
|
||||
<span><span class="va">predictions_time</span> <span class="op"><-</span> <span class="va">fitted_workflow_time</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu"><a href="https://rdrr.io/r/stats/predict.html" class="external-link">predict</a></span><span class="op">(</span><span class="va">test_time</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/bind_cols.html" class="external-link">bind_cols</a></span><span class="op">(</span><span class="va">test_time</span><span class="op">)</span> </span>
|
||||
<span></span>
|
||||
<span><span class="co"># Evaluate model</span></span>
|
||||
<span><span class="va">metrics_time</span> <span class="op"><-</span> <span class="va">predictions_time</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span></span>
|
||||
<span> <span class="fu">metrics</span><span class="op">(</span>truth <span class="op">=</span> <span class="va">res_AMX</span>, estimate <span class="op">=</span> <span class="va">.pred</span><span class="op">)</span></span>
|
||||
<span></span>
|
||||
<span><span class="va">metrics_time</span></span>
|
||||
<span><span class="co">#> <span style="color: #949494;"># A tibble: 3 × 3</span></span></span>
|
||||
<span><span class="co">#> .metric .estimator .estimate</span></span>
|
||||
<span><span class="co">#> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><chr></span> <span style="color: #949494; font-style: italic;"><dbl></span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">1</span> rmse standard 0.077<span style="text-decoration: underline;">4</span></span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">2</span> rsq standard 0.711 </span></span>
|
||||
<span><span class="co">#> <span style="color: #BCBCBC;">3</span> mae standard 0.070<span style="text-decoration: underline;">4</span></span></span></code></pre></div>
|
||||
<p><strong>Explanation:</strong> - <code>initial_split()</code>: Splits
|
||||
data into training and testing sets. - <code>fit()</code>: Trains the
|
||||
workflow. - <code><a href="https://rdrr.io/r/stats/predict.html" class="external-link">predict()</a></code>: Generates resistance predictions. -
|
||||
<code>metrics()</code>: Evaluates model performance.</p>
|
||||
</div>
|
||||
<div class="section level3">
|
||||
<h3 id="visualizing-predictions">
|
||||
<strong>Visualizing Predictions</strong><a class="anchor" aria-label="anchor" href="#visualizing-predictions"></a>
|
||||
</h3>
|
||||
<p>We plot resistance trends over time for Amoxicillin.</p>
|
||||
<div class="sourceCode" id="cb14"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://ggplot2.tidyverse.org" class="external-link">ggplot2</a></span><span class="op">)</span></span>
|
||||
<span></span>
|
||||
<span><span class="co"># Plot actual vs predicted resistance over time</span></span>
|
||||
<span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="va">predictions_time</span>, <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>x <span class="op">=</span> <span class="va">year</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span>
|
||||
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_point.html" class="external-link">geom_point</a></span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>y <span class="op">=</span> <span class="va">res_AMX</span>, color <span class="op">=</span> <span class="st">"Actual"</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span>
|
||||
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_path.html" class="external-link">geom_line</a></span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>y <span class="op">=</span> <span class="va">.pred</span>, color <span class="op">=</span> <span class="st">"Predicted"</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span>
|
||||
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"Predicted vs Actual AMX Resistance Over Time"</span>,</span>
|
||||
<span> x <span class="op">=</span> <span class="st">"Year"</span>,</span>
|
||||
<span> y <span class="op">=</span> <span class="st">"Resistance Proportion"</span><span class="op">)</span> <span class="op">+</span></span>
|
||||
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggtheme.html" class="external-link">theme_minimal</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div>
|
||||
<p><img src="AMR_with_tidymodels_files/figure-html/unnamed-chunk-14-1.png" width="720"></p>
|
||||
<p>Additionally, we can visualise resistance trends in
|
||||
<code>ggplot2</code> and directly adding linear models there:</p>
|
||||
<div class="sourceCode" id="cb15"><pre class="downlit sourceCode r">
|
||||
<code class="sourceCode R"><span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="va">data_time</span>, <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>x <span class="op">=</span> <span class="va">year</span>, y <span class="op">=</span> <span class="va">res_AMX</span>, color <span class="op">=</span> <span class="va">gramstain</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span>
|
||||
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_path.html" class="external-link">geom_line</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span></span>
|
||||
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"AMX Resistance Trends"</span>,</span>
|
||||
<span> x <span class="op">=</span> <span class="st">"Year"</span>,</span>
|
||||
<span> y <span class="op">=</span> <span class="st">"Resistance Proportion"</span><span class="op">)</span> <span class="op">+</span></span>
|
||||
<span> <span class="co"># add a linear model directly in ggplot2:</span></span>
|
||||
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_smooth.html" class="external-link">geom_smooth</a></span><span class="op">(</span>method <span class="op">=</span> <span class="st">"lm"</span>,</span>
|
||||
<span> formula <span class="op">=</span> <span class="va">y</span> <span class="op">~</span> <span class="va">x</span>,</span>
|
||||
<span> alpha <span class="op">=</span> <span class="fl">0.25</span><span class="op">)</span> <span class="op">+</span></span>
|
||||
<span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggtheme.html" class="external-link">theme_minimal</a></span><span class="op">(</span><span class="op">)</span></span></code></pre></div>
|
||||
<p><img src="AMR_with_tidymodels_files/figure-html/unnamed-chunk-15-1.png" width="720"></p>
|
||||
</div>
|
||||
<div class="section level3">
|
||||
<h3 id="conclusion-1">
|
||||
<strong>Conclusion</strong><a class="anchor" aria-label="anchor" href="#conclusion-1"></a>
|
||||
</h3>
|
||||
<p>In this example, we demonstrated how to analyze AMR trends over time
|
||||
using <code>tidymodels</code>. By aggregating resistance rates by year
|
||||
and hospital ward, we built a predictive model to track changes in
|
||||
resistance to amoxicillin (<code>AMX</code>), amoxicillin-clavulanic
|
||||
acid (<code>AMC</code>), and ciprofloxacin (<code>CIP</code>).</p>
|
||||
<p>This method can be extended to other antibiotics and resistance
|
||||
patterns, providing valuable insights into AMR dynamics in healthcare
|
||||
settings.</p>
|
||||
</div>
|
||||
</div>
|
||||
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
|
||||
</nav></aside>
|
||||
|
Reference in New Issue
Block a user