1
0
mirror of https://github.com/msberends/AMR.git synced 2025-07-05 11:08:41 +02:00
AMR/reference/amr-tidymodels.html
2025-06-13 15:13:34 +00:00

247 lines
33 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>AMR Extensions for Tidymodels — amr-tidymodels • AMR (for R)</title><!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png"><link rel="icon" type="”image/svg+xml”" href="../favicon.svg"><link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png"><link rel="icon" sizes="any" href="../favicon.ico"><link rel="manifest" href="../site.webmanifest"><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.10/font.css" rel="stylesheet"><link href="../deps/Fira_Code-0.4.10/font.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet"><script src="../extra.js"></script><meta property="og:title" content="AMR Extensions for Tidymodels — amr-tidymodels"><meta name="description" content="This family of functions allows using AMR-specific data types such as &amp;lt;mic&amp;gt; and &amp;lt;sir&amp;gt; inside tidymodels pipelines."><meta property="og:description" content="This family of functions allows using AMR-specific data types such as &amp;lt;mic&amp;gt; and &amp;lt;sir&amp;gt; inside tidymodels pipelines."><meta property="og:image" content="https://amr-for-r.org/logo.svg"><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></head><body>
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
<nav class="navbar navbar-expand-lg fixed-top bg-primary" data-bs-theme="dark" aria-label="Site navigation"><div class="container">
<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="">3.0.0.9004</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">
<span class="navbar-toggler-icon"></span>
</button>
<div id="navbar" class="collapse navbar-collapse ms-3">
<ul class="navbar-nav me-auto"><li class="nav-item dropdown">
<button class="nav-link dropdown-toggle" type="button" id="dropdown-how-to" data-bs-toggle="dropdown" aria-expanded="false" aria-haspopup="true"><span class="fa fa-question-circle"></span> How to</button>
<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/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="../reference/mdro.html"><span class="fa fa-skull-crossbones"></span> Determine Multi-Drug Resistance (MDR)</a></li>
<li><a class="dropdown-item" href="../articles/WHONET.html"><span class="fa fa-globe-americas"></span> Work with WHONET Data</a></li>
<li><a class="dropdown-item" href="../articles/EUCAST.html"><span class="fa fa-exchange-alt"></span> Apply EUCAST Rules</a></li>
<li><a class="dropdown-item" href="../reference/mo_property.html"><span class="fa fa-bug"></span> Get Taxonomy of a Microorganism</a></li>
<li><a class="dropdown-item" href="../reference/ab_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antibiotic Drug</a></li>
<li><a class="dropdown-item" href="../reference/av_property.html"><span class="fa fa-capsules"></span> Get Properties of an Antiviral Drug</a></li>
</ul></li>
<li class="nav-item"><a class="nav-link" href="../articles/AMR_for_Python.html"><span class="fa fab fa-python"></span> AMR for Python</a></li>
<li class="active nav-item"><a class="nav-link" href="../reference/index.html"><span class="fa fa-book-open"></span> Manual</a></li>
<li class="nav-item"><a class="nav-link" href="../authors.html"><span class="fa fa-users"></span> Authors</a></li>
</ul><ul class="navbar-nav"><li class="nav-item"><form class="form-inline" role="search">
<input class="form-control" type="search" name="search-input" id="search-input" autocomplete="off" aria-label="Search site" placeholder="Search for" data-search-index="../search.json"></form></li>
<li class="nav-item"><a class="nav-link" href="../news/index.html"><span class="fa fa-newspaper"></span> Changelog</a></li>
<li class="nav-item"><a class="external-link nav-link" href="https://github.com/msberends/AMR"><span class="fa fa-github"></span> Source Code</a></li>
</ul></div>
</div>
</nav><div class="container template-reference-topic">
<div class="row">
<main id="main" class="col-md-9"><div class="page-header">
<img src="../logo.svg" class="logo" alt=""><h1>AMR Extensions for Tidymodels</h1>
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/R/tidymodels.R" class="external-link"><code>R/tidymodels.R</code></a></small>
<div class="d-none name"><code>amr-tidymodels.Rd</code></div>
</div>
<div class="ref-description section level2">
<p>This family of functions allows using AMR-specific data types such as <code>&lt;mic&gt;</code> and <code>&lt;sir&gt;</code> inside <code>tidymodels</code> pipelines.</p>
</div>
<div class="section level2">
<h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2>
<div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">all_mic</span><span class="op">(</span><span class="op">)</span></span>
<span></span>
<span><span class="fu">all_mic_predictors</span><span class="op">(</span><span class="op">)</span></span>
<span></span>
<span><span class="fu">all_sir</span><span class="op">(</span><span class="op">)</span></span>
<span></span>
<span><span class="fu">all_sir_predictors</span><span class="op">(</span><span class="op">)</span></span>
<span></span>
<span><span class="fu">step_mic_log2</span><span class="op">(</span><span class="va">recipe</span>, <span class="va">...</span>, role <span class="op">=</span> <span class="cn">NA</span>, trained <span class="op">=</span> <span class="cn">FALSE</span>, columns <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> skip <span class="op">=</span> <span class="cn">FALSE</span>, id <span class="op">=</span> <span class="fu">recipes</span><span class="fu">::</span><span class="fu"><a href="https://recipes.tidymodels.org/reference/rand_id.html" class="external-link">rand_id</a></span><span class="op">(</span><span class="st">"mic_log2"</span><span class="op">)</span><span class="op">)</span></span>
<span></span>
<span><span class="fu">step_sir_numeric</span><span class="op">(</span><span class="va">recipe</span>, <span class="va">...</span>, role <span class="op">=</span> <span class="cn">NA</span>, trained <span class="op">=</span> <span class="cn">FALSE</span>, columns <span class="op">=</span> <span class="cn">NULL</span>,</span>
<span> skip <span class="op">=</span> <span class="cn">FALSE</span>, id <span class="op">=</span> <span class="fu">recipes</span><span class="fu">::</span><span class="fu"><a href="https://recipes.tidymodels.org/reference/rand_id.html" class="external-link">rand_id</a></span><span class="op">(</span><span class="st">"sir_numeric"</span><span class="op">)</span><span class="op">)</span></span></code></pre></div>
</div>
<div class="section level2">
<h2 id="arguments">Arguments<a class="anchor" aria-label="anchor" href="#arguments"></a></h2>
<dl><dt id="arg-recipe">recipe<a class="anchor" aria-label="anchor" href="#arg-recipe"></a></dt>
<dd><p>A recipe object. The step will be added to the sequence of
operations for this recipe.</p></dd>
<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt>
<dd><p>One or more selector functions to choose variables for this step.
See <code><a href="https://recipes.tidymodels.org/reference/selections.html" class="external-link">selections()</a></code> for more details.</p></dd>
<dt id="arg-role">role<a class="anchor" aria-label="anchor" href="#arg-role"></a></dt>
<dd><p>Not used by this step since no new variables are created.</p></dd>
<dt id="arg-trained">trained<a class="anchor" aria-label="anchor" href="#arg-trained"></a></dt>
<dd><p>A logical to indicate if the quantities for preprocessing have
been estimated.</p></dd>
<dt id="arg-skip">skip<a class="anchor" aria-label="anchor" href="#arg-skip"></a></dt>
<dd><p>A logical. Should the step be skipped when the recipe is baked by
<code><a href="https://recipes.tidymodels.org/reference/bake.html" class="external-link">bake()</a></code>? While all operations are baked when <code><a href="https://recipes.tidymodels.org/reference/prep.html" class="external-link">prep()</a></code> is run, some
operations may not be able to be conducted on new data (e.g. processing the
outcome variable(s)). Care should be taken when using <code>skip = TRUE</code> as it
may affect the computations for subsequent operations.</p></dd>
<dt id="arg-id">id<a class="anchor" aria-label="anchor" href="#arg-id"></a></dt>
<dd><p>A character string that is unique to this step to identify it.</p></dd>
</dl></div>
<div class="section level2">
<h2 id="details">Details<a class="anchor" aria-label="anchor" href="#details"></a></h2>
<p>You can read more in our online <a href="https://amr-for-r.org/articles/AMR_with_tidymodels.html">AMR with tidymodels introduction</a>.</p>
<p>Tidyselect helpers include:</p><ul><li><p><code>all_mic()</code> and <code>all_mic_predictors()</code> to select <code>&lt;mic&gt;</code> columns</p></li>
<li><p><code>all_sir()</code> and <code>all_sir_predictors()</code> to select <code>&lt;sir&gt;</code> columns</p></li>
</ul><p>Pre-processing pipeline steps include:</p><ul><li><p><code>step_mic_log2()</code> to convert MIC columns to numeric (via <code><a href="https://rdrr.io/r/base/numeric.html" class="external-link">as.numeric()</a></code>) and apply a log2 transform, to be used with <code>all_mic_predictors()</code></p></li>
<li><p><code>step_sir_numeric()</code> to convert SIR columns to numeric (via <code><a href="https://rdrr.io/r/base/numeric.html" class="external-link">as.numeric()</a></code>), to be used with <code>all_sir_predictors()</code>: <code>"S"</code> = 1, <code>"I"</code>/<code>"SDD"</code> = 2, <code>"R"</code> = 3. All other values are rendered <code>NA</code>. Keep this in mind for further processing, especially if the model does not allow for <code>NA</code> values.</p></li>
</ul><p>These steps integrate with <code><a href="https://recipes.tidymodels.org/reference/recipe.html" class="external-link">recipes::recipe()</a></code> and work like standard preprocessing steps. They are useful for preparing data for modelling, especially with classification models.</p>
</div>
<div class="section level2">
<h2 id="see-also">See also<a class="anchor" aria-label="anchor" href="#see-also"></a></h2>
<div class="dont-index"><p><code><a href="https://recipes.tidymodels.org/reference/recipe.html" class="external-link">recipes::recipe()</a></code>, <code><a href="as.mic.html">as.mic()</a></code>, <code><a href="as.sir.html">as.sir()</a></code></p></div>
</div>
<div class="section level2">
<h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2>
<div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><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 class="r-msg co"><span class="r-pr">#&gt;</span> ── <span style="font-weight: bold;">Attaching packages</span> ────────────────────────────────────── tidymodels 1.3.0 ──</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #00BB00;"></span> <span style="color: #0000BB;">broom </span> 1.0.8 <span style="color: #00BB00;"></span> <span style="color: #0000BB;">rsample </span> 1.3.0</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #00BB00;"></span> <span style="color: #0000BB;">dials </span> 1.4.0 <span style="color: #00BB00;"></span> <span style="color: #0000BB;">tibble </span> 3.3.0</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #00BB00;"></span> <span style="color: #0000BB;">infer </span> 1.0.8 <span style="color: #00BB00;"></span> <span style="color: #0000BB;">tidyr </span> 1.3.1</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #00BB00;"></span> <span style="color: #0000BB;">modeldata </span> 1.4.0 <span style="color: #00BB00;"></span> <span style="color: #0000BB;">tune </span> 1.3.0</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #00BB00;"></span> <span style="color: #0000BB;">parsnip </span> 1.3.2 <span style="color: #00BB00;"></span> <span style="color: #0000BB;">workflows </span> 1.2.0</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #00BB00;"></span> <span style="color: #0000BB;">purrr </span> 1.0.4 <span style="color: #00BB00;"></span> <span style="color: #0000BB;">workflowsets</span> 1.1.1</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #00BB00;"></span> <span style="color: #0000BB;">recipes </span> 1.3.1 <span style="color: #00BB00;"></span> <span style="color: #0000BB;">yardstick </span> 1.3.2</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> ── <span style="font-weight: bold;">Conflicts</span> ───────────────────────────────────────── tidymodels_conflicts() ──</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #BB0000;"></span> <span style="color: #0000BB;">purrr</span>::<span style="color: #00BB00;">discard()</span> masks <span style="color: #0000BB;">scales</span>::discard()</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #BB0000;"></span> <span style="color: #0000BB;">dplyr</span>::<span style="color: #00BB00;">filter()</span> masks <span style="color: #0000BB;">stats</span>::filter()</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <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 class="r-msg co"><span class="r-pr">#&gt;</span> <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 class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># The below approach formed the basis for this paper: DOI 10.3389/fmicb.2025.1582703</span></span></span>
<span class="r-in"><span><span class="co"># Presence of ESBL genes was predicted based on raw MIC values.</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># example data set in the AMR package</span></span></span>
<span class="r-in"><span><span class="va">esbl_isolates</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 500 × 19</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> esbl genus AMC AMP TZP CXM FOX CTX CAZ GEN TOB TMP SXT</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;lgl&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mic&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 1</span> FALSE Esch… 32 32 4 64 64 8<span style="color: #BBBBBB;">.00</span> 8<span style="color: #BBBBBB;">.00</span> 1 1 16<span style="color: #BBBBBB;">.0</span> 20</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 2</span> FALSE Esch… 32 32 4 64 64 4<span style="color: #BBBBBB;">.00</span> 8<span style="color: #BBBBBB;">.00</span> 1 1 16<span style="color: #BBBBBB;">.0</span> 320</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 3</span> FALSE Esch… 4 2 64 8 4 8<span style="color: #BBBBBB;">.00</span> 0.12 16 16 0.5 20</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 4</span> FALSE Kleb… 32 32 16 64 64 8<span style="color: #BBBBBB;">.00</span> 8<span style="color: #BBBBBB;">.00</span> 1 1 0.5 20</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 5</span> FALSE Esch… 32 32 4 4 4 0.25 2<span style="color: #BBBBBB;">.00</span> 1 1 16<span style="color: #BBBBBB;">.0</span> 320</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 6</span> FALSE Citr… 32 32 16 64 64 64<span style="color: #BBBBBB;">.00</span> 32<span style="color: #BBBBBB;">.00</span> 1 1 0.5 20</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 7</span> FALSE Morg… 32 32 4 64 64 16<span style="color: #BBBBBB;">.00</span> 2<span style="color: #BBBBBB;">.00</span> 1 1 0.5 20</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 8</span> FALSE Prot… 16 32 4 1 4 8<span style="color: #BBBBBB;">.00</span> 0.12 1 1 16<span style="color: #BBBBBB;">.0</span> 320</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 9</span> FALSE Ente… 32 32 8 64 64 32<span style="color: #BBBBBB;">.00</span> 4<span style="color: #BBBBBB;">.00</span> 1 1 0.5 20</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">10</span> FALSE Citr… 32 32 32 64 64 8<span style="color: #BBBBBB;">.00</span> 64<span style="color: #BBBBBB;">.00</span> 1 1 16<span style="color: #BBBBBB;">.0</span> 320</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># 490 more rows</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># 6 more variables: NIT &lt;mic&gt;, FOS &lt;mic&gt;, CIP &lt;mic&gt;, IPM &lt;mic&gt;, MEM &lt;mic&gt;,</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># COL &lt;mic&gt;</span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Prepare a binary outcome and convert to ordered factor</span></span></span>
<span class="r-in"><span><span class="va">data</span> <span class="op">&lt;-</span> <span class="va">esbl_isolates</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span></span></span>
<span class="r-in"><span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/mutate.html" class="external-link">mutate</a></span><span class="op">(</span>esbl <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/factor.html" class="external-link">factor</a></span><span class="op">(</span><span class="va">esbl</span>, levels <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="cn">FALSE</span>, <span class="cn">TRUE</span><span class="op">)</span>, ordered <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Split into training and testing sets</span></span></span>
<span class="r-in"><span><span class="va">split</span> <span class="op">&lt;-</span> <span class="fu">initial_split</span><span class="op">(</span><span class="va">data</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">training_data</span> <span class="op">&lt;-</span> <span class="fu">training</span><span class="op">(</span><span class="va">split</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">testing_data</span> <span class="op">&lt;-</span> <span class="fu">testing</span><span class="op">(</span><span class="va">split</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Create and prep a recipe with MIC log2 transformation</span></span></span>
<span class="r-in"><span><span class="va">mic_recipe</span> <span class="op">&lt;-</span> <span class="fu">recipe</span><span class="op">(</span><span class="va">esbl</span> <span class="op">~</span> <span class="va">.</span>, data <span class="op">=</span> <span class="va">training_data</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span></span></span>
<span class="r-in"><span> <span class="co"># Optionally remove non-predictive variables</span></span></span>
<span class="r-in"><span> <span class="fu">remove_role</span><span class="op">(</span><span class="va">genus</span>, old_role <span class="op">=</span> <span class="st">"predictor"</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span></span></span>
<span class="r-in"><span> <span class="co"># Apply the log2 transformation to all MIC predictors</span></span></span>
<span class="r-in"><span> <span class="fu">step_mic_log2</span><span class="op">(</span><span class="fu">all_mic_predictors</span><span class="op">(</span><span class="op">)</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span></span></span>
<span class="r-in"><span> <span class="fu">prep</span><span class="op">(</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># View prepped recipe</span></span></span>
<span class="r-in"><span><span class="va">mic_recipe</span></span></span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #00BBBB;">──</span> <span style="font-weight: bold;">Recipe</span> <span style="color: #00BBBB;">──────────────────────────────────────────────────────────────────────</span></span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> ── Inputs </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> Number of variables by role</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> outcome: 1</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> predictor: 17</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> undeclared role: 1</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> ── Training information </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> Training data contained 375 data points and no incomplete rows.</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> ── Operations </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #00BBBB;"></span> Log2 transformation of MIC columns: <span style="color: #0000BB;">AMC</span>, <span style="color: #0000BB;">AMP</span>, <span style="color: #0000BB;">TZP</span>, <span style="color: #0000BB;">CXM</span>, <span style="color: #0000BB;">FOX</span>, ... | <span style="font-style: italic;">Trained</span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Apply the recipe to training and testing data</span></span></span>
<span class="r-in"><span><span class="va">out_training</span> <span class="op">&lt;-</span> <span class="fu">bake</span><span class="op">(</span><span class="va">mic_recipe</span>, new_data <span class="op">=</span> <span class="cn">NULL</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">out_testing</span> <span class="op">&lt;-</span> <span class="fu">bake</span><span class="op">(</span><span class="va">mic_recipe</span>, new_data <span class="op">=</span> <span class="va">testing_data</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Fit a logistic regression model</span></span></span>
<span class="r-in"><span><span class="va">fitted</span> <span class="op">&lt;-</span> <span class="fu">logistic_reg</span><span class="op">(</span>mode <span class="op">=</span> <span class="st">"classification"</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span></span></span>
<span class="r-in"><span> <span class="fu">set_engine</span><span class="op">(</span><span class="st">"glm"</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span></span></span>
<span class="r-in"><span> <span class="fu">fit</span><span class="op">(</span><span class="va">esbl</span> <span class="op">~</span> <span class="va">.</span>, data <span class="op">=</span> <span class="va">out_training</span><span class="op">)</span></span></span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> <span class="warning">Warning: </span>glm.fit: fitted probabilities numerically 0 or 1 occurred</span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Generate predictions on the test set</span></span></span>
<span class="r-in"><span><span class="va">predictions</span> <span class="op">&lt;-</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">fitted</span>, <span class="va">out_testing</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%&gt;%</a></span></span></span>
<span class="r-in"><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">out_testing</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Evaluate predictions using standard classification metrics</span></span></span>
<span class="r-in"><span><span class="va">our_metrics</span> <span class="op">&lt;-</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></span>
<span class="r-in"><span><span class="va">metrics</span> <span class="op">&lt;-</span> <span class="fu">our_metrics</span><span class="op">(</span><span class="va">predictions</span>, truth <span class="op">=</span> <span class="va">esbl</span>, estimate <span class="op">=</span> <span class="va">.pred_class</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Show performance:</span></span></span>
<span class="r-in"><span><span class="co"># - negative predictive value (NPV) of ~98%</span></span></span>
<span class="r-in"><span><span class="co"># - positive predictive value (PPV) of ~94%</span></span></span>
<span class="r-in"><span><span class="va">metrics</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 4 × 3</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> .metric .estimator .estimate</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> accuracy binary 0.912</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span> kap binary 0.824</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">3</span> ppv binary 0.917</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">4</span> npv binary 0.908</span>
</code></pre></div>
</div>
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
</nav></aside></div>
<footer><div class="pkgdown-footer-left">
<p><code>AMR</code> (for R). Free and open-source, licenced under the <a target="_blank" href="https://github.com/msberends/AMR/blob/main/LICENSE" class="external-link">GNU General Public License version 2.0 (GPL-2)</a>.<br>Developed at the <a target="_blank" href="https://www.rug.nl" class="external-link">University of Groningen</a> and <a target="_blank" href="https://www.umcg.nl" class="external-link">University Medical Center Groningen</a> in The Netherlands.</p>
</div>
<div class="pkgdown-footer-right">
<p><a target="_blank" href="https://www.rug.nl" class="external-link"><img src="https://amr-for-r.org/logo_rug.svg" style="max-width: 150px;"></a><a target="_blank" href="https://www.umcg.nl" class="external-link"><img src="https://amr-for-r.org/logo_umcg.svg" style="max-width: 150px;"></a></p>
</div>
</footer></div>
</body></html>