<!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.0"><title>Decorate a model fit or sample with data types recovered from the input data — recover_types • tidybayes</title><!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png"><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png"><link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png"><link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png"><link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png"><!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script><!-- Bootstrap --><link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/paper/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"><script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css"><script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"><!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet"><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet"><meta property="og:title" content="Decorate a model fit or sample with data types recovered from the input data — recover_types"><meta property="og:description" content="Decorate a Bayesian model fit or a sample from it with types for
variable and dimension data types. Meant to be used before calling
spread_draws() or gather_draws() so that the values returned by
those functions are translated back into useful data types."><meta property="og:image" content="https://mjskay.github.io/tidybayes/logo.svg"><!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=UA-93322-5"></script><script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-93322-5');
</script></head><body data-spy="scroll" data-target="#toc">


    <div class="container template-reference-topic">
      <header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <span class="navbar-brand">
        <a class="navbar-link" href="../index.html">tidybayes</a>
        <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="">3.0.7</span>
      </span>
    </div>

    <div id="navbar" class="navbar-collapse collapse">
      <ul class="nav navbar-nav"><li>
  <a href="../articles/tidybayes.html">Get started</a>
</li>
<li>
  <a href="../reference/index.html">Reference</a>
</li>
<li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
    Articles

    <span class="caret"></span>
  </a>
  <ul class="dropdown-menu" role="menu"><li>
      <a href="../articles/tidy-brms.html">Extracting and visualizing tidy draws from brms models</a>
    </li>
    <li>
      <a href="../articles/tidy-posterior.html">Using tidybayes with the posterior package</a>
    </li>
    <li>
      <a href="../articles/tidy-rstanarm.html">Extracting and visualizing tidy draws from rstanarm models</a>
    </li>
    <li>
      <a href="../articles/tidybayes-residuals.html">Extracting and visualizing tidy residuals from Bayesian models</a>
    </li>
  </ul></li>
<li>
  <a href="../news/index.html">Changelog</a>
</li>
      </ul><ul class="nav navbar-nav navbar-right"><li>
  <a href="https://github.com/mjskay/tidybayes/" class="external-link">
    <span class="fab fa-github fa-lg"></span>

  </a>
</li>
      </ul></div><!--/.nav-collapse -->
  </div><!--/.container -->
</div><!--/.navbar -->



      </header><div class="row">
  <div class="col-md-9 contents">
    <div class="page-header">
    <h1>Decorate a model fit or sample with data types recovered from the input data</h1>
    <small class="dont-index">Source: <a href="https://github.com/mjskay/tidybayes/blob/HEAD/R/recover_types.R" class="external-link"><code>R/recover_types.R</code></a></small>
    <div class="hidden name"><code>recover_types.Rd</code></div>
    </div>

    <div class="ref-description">
    <p>Decorate a Bayesian model fit or a sample from it with types for
variable and dimension data types. Meant to be used before calling
<code><a href="spread_draws.html">spread_draws()</a></code> or <code><a href="spread_draws.html">gather_draws()</a></code> so that the values returned by
those functions are translated back into useful data types.</p>
    </div>

    <div id="ref-usage">
    <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">recover_types</span><span class="op">(</span><span class="va">model</span>, <span class="va">...</span><span class="op">)</span></span></code></pre></div>
    </div>

    <div id="arguments">
    <h2>Arguments</h2>


<dl><dt id="arg-model">model<a class="anchor" aria-label="anchor" href="#arg-model"></a></dt>
<dd><p>A supported Bayesian model fit. Tidybayes supports a variety of model objects;
for a full list of supported models, see <a href="tidybayes-models.html">tidybayes-models</a>.</p></dd>


<dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt>
<dd><p>Lists (or data frames) providing data prototypes used to convert
columns returned by <code><a href="spread_draws.html">spread_draws()</a></code> and <code><a href="spread_draws.html">gather_draws()</a></code> back into useful data types.
See <em>Details</em>.</p></dd>

</dl></div>
    <div id="value">
    <h2>Value</h2>
    <p>A decorated version of <code>model</code>.</p>
    </div>
    <div id="details">
    <h2>Details</h2>
    <p>Each argument in <code>...</code> specifies a list or data.frame. The <code>model</code>
is decorated with a list of constructors that can convert a numeric column
into the data types in the lists in <code>...</code>.</p>
<p>Then, when <code><a href="spread_draws.html">spread_draws()</a></code> or <code><a href="spread_draws.html">gather_draws()</a></code> is called on the decorated
<code>model</code>, each list entry with the same name as the variable or a dimension
in <code>variable_spec</code> is a used as a prototype for that variable or dimension —
i.e., its type is taken to be the expected type of that variable or dimension.
Those types are used to translate numeric values of variables back into
useful values (for example, levels of a factor).</p>
<p>The most common use of <code>recover_types</code> is to automatically translate
dimensions of a variable that correspond to levels of a factor in the original data back into
levels of that factor. The simplest way to do this is to pass in the data
frame from which the original data came.</p>
<p>Supported types of prototypes are factor, ordered, and logical. For example:</p>
<ul><li><p>if <code>prototypes$v</code> is a factor, the v column in the
returned draws is translated into a factor using <code>factor(v, labels=levels(prototypes$v), ordered=is.ordered(prototypes$v))</code>.</p></li>
<li><p>if
<code>prototypes$v</code> is a logical, the v column is translated into a logical
using <code>as.logical(v)</code>.</p></li>
</ul><p>Additional data types can be supported by providing a custom implementation
of the generic function <code>as_constructor</code>.</p>
    </div>
    <div id="see-also">
    <h2>See also</h2>
    <div class="dont-index"><p><code><a href="spread_draws.html">spread_draws()</a></code>, <code><a href="spread_draws.html">gather_draws()</a></code>, <code><a href="compose_data.html">compose_data()</a></code>.</p></div>
    </div>
    <div id="author">
    <h2>Author</h2>
    <p>Matthew Kay</p>
    </div>

    <div id="ref-examples">
    <h2>Examples</h2>
    <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="co"># \dontrun{</span></span></span>
<span class="r-in"><span></span></span>
<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://dplyr.tidyverse.org" class="external-link">dplyr</a></span><span class="op">)</span></span></span>
<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://magrittr.tidyverse.org" class="external-link">magrittr</a></span><span class="op">)</span></span></span>
<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://mc-stan.org/rstan/" class="external-link">rstan</a></span><span class="op">)</span></span></span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> Loading required package: StanHeaders</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> rstan version 2.32.6 (Stan version 2.32.2)</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> For execution on a local, multicore CPU with excess RAM we recommend calling</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> options(mc.cores = parallel::detectCores()).</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> To avoid recompilation of unchanged Stan programs, we recommend calling</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> rstan_options(auto_write = TRUE)</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> For within-chain threading using `reduce_sum()` or `map_rect()` Stan functions,</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> change `threads_per_chain` option:</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> rstan_options(threads_per_chain = 1)</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> Do not specify '-march=native' in 'LOCAL_CPPFLAGS' or a Makevars file</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> Attaching package: 'rstan'</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> The following object is masked from 'package:coda':</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span>     traceplot</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> The following object is masked from 'package:magrittr':</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span>     extract</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> The following objects are masked from 'package:posterior':</span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> </span>
<span class="r-msg co"><span class="r-pr">#&gt;</span>     ess_bulk, ess_tail</span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Here's an example dataset with a categorical predictor (`condition`) with several levels:</span></span></span>
<span class="r-in"><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">5</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="va">n</span> <span class="op">=</span> <span class="fl">10</span></span></span>
<span class="r-in"><span><span class="va">n_condition</span> <span class="op">=</span> <span class="fl">5</span></span></span>
<span class="r-in"><span><span class="va">ABC</span> <span class="op">=</span> <span class="fu"><a href="https://tibble.tidyverse.org/reference/tibble.html" class="external-link">tibble</a></span><span class="op">(</span></span></span>
<span class="r-in"><span>  condition <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="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</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="st">"A"</span>,<span class="st">"B"</span>,<span class="st">"C"</span>,<span class="st">"D"</span>,<span class="st">"E"</span><span class="op">)</span>, <span class="va">n</span><span class="op">)</span><span class="op">)</span>,</span></span>
<span class="r-in"><span>  response <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/stats/Normal.html" class="external-link">rnorm</a></span><span class="op">(</span><span class="va">n</span> <span class="op">*</span> <span class="fl">5</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="fl">0</span>,<span class="fl">1</span>,<span class="fl">2</span>,<span class="fl">1</span>,<span class="op">-</span><span class="fl">1</span><span class="op">)</span>, <span class="fl">0.5</span><span class="op">)</span></span></span>
<span class="r-in"><span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># We'll fit the following model to it:</span></span></span>
<span class="r-in"><span><span class="va">stan_code</span> <span class="op">=</span> <span class="st">"</span></span></span>
<span class="r-in"><span><span class="st">  data {</span></span></span>
<span class="r-in"><span><span class="st">    int&lt;lower=1&gt; n;</span></span></span>
<span class="r-in"><span><span class="st">    int&lt;lower=1&gt; n_condition;</span></span></span>
<span class="r-in"><span><span class="st">    int&lt;lower=1, upper=n_condition&gt; condition[n];</span></span></span>
<span class="r-in"><span><span class="st">    real response[n];</span></span></span>
<span class="r-in"><span><span class="st">  }</span></span></span>
<span class="r-in"><span><span class="st">  parameters {</span></span></span>
<span class="r-in"><span><span class="st">    real overall_mean;</span></span></span>
<span class="r-in"><span><span class="st">    vector[n_condition] condition_zoffset;</span></span></span>
<span class="r-in"><span><span class="st">    real&lt;lower=0&gt; response_sd;</span></span></span>
<span class="r-in"><span><span class="st">    real&lt;lower=0&gt; condition_mean_sd;</span></span></span>
<span class="r-in"><span><span class="st">  }</span></span></span>
<span class="r-in"><span><span class="st">  transformed parameters {</span></span></span>
<span class="r-in"><span><span class="st">    vector[n_condition] condition_mean;</span></span></span>
<span class="r-in"><span><span class="st">    condition_mean = overall_mean + condition_zoffset * condition_mean_sd;</span></span></span>
<span class="r-in"><span><span class="st">  }</span></span></span>
<span class="r-in"><span><span class="st">  model {</span></span></span>
<span class="r-in"><span><span class="st">    response_sd ~ cauchy(0, 1);       // =&gt; half-cauchy(0, 1)</span></span></span>
<span class="r-in"><span><span class="st">    condition_mean_sd ~ cauchy(0, 1); // =&gt; half-cauchy(0, 1)</span></span></span>
<span class="r-in"><span><span class="st">    overall_mean ~ normal(0, 5);</span></span></span>
<span class="r-in"><span><span class="st"></span></span></span>
<span class="r-in"><span><span class="st">    //=&gt; condition_mean ~ normal(overall_mean, condition_mean_sd)</span></span></span>
<span class="r-in"><span><span class="st">    condition_zoffset ~ normal(0, 1);</span></span></span>
<span class="r-in"><span><span class="st"></span></span></span>
<span class="r-in"><span><span class="st">    for (i in 1:n) {</span></span></span>
<span class="r-in"><span><span class="st">      response[i] ~ normal(condition_mean[condition[i]], response_sd);</span></span></span>
<span class="r-in"><span><span class="st">    }</span></span></span>
<span class="r-in"><span><span class="st">  }</span></span></span>
<span class="r-in"><span><span class="st">"</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="va">m</span> <span class="op">=</span> <span class="fu"><a href="https://mc-stan.org/rstan/reference/stan.html" class="external-link">stan</a></span><span class="op">(</span>model_code <span class="op">=</span> <span class="va">stan_code</span>, data <span class="op">=</span> <span class="fu"><a href="compose_data.html">compose_data</a></span><span class="op">(</span><span class="va">ABC</span><span class="op">)</span>, control <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/list.html" class="external-link">list</a></span><span class="op">(</span>adapt_delta<span class="op">=</span><span class="fl">0.99</span><span class="op">)</span>,</span></span>
<span class="r-in"><span>  <span class="co"># 1 chain / few iterations just so example runs quickly</span></span></span>
<span class="r-in"><span>  <span class="co"># do not use in practice</span></span></span>
<span class="r-in"><span>  chains <span class="op">=</span> <span class="fl">1</span>, iter <span class="op">=</span> <span class="fl">500</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 1).</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Gradient evaluation took 3.4e-05 seconds</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.34 seconds.</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Adjust your expectations accordingly!</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration:   1 / 500 [  0%]  (Warmup)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration:  50 / 500 [ 10%]  (Warmup)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 100 / 500 [ 20%]  (Warmup)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 150 / 500 [ 30%]  (Warmup)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 200 / 500 [ 40%]  (Warmup)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 250 / 500 [ 50%]  (Warmup)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 251 / 500 [ 50%]  (Sampling)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 300 / 500 [ 60%]  (Sampling)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 350 / 500 [ 70%]  (Sampling)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 400 / 500 [ 80%]  (Sampling)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 450 / 500 [ 90%]  (Sampling)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: Iteration: 500 / 500 [100%]  (Sampling)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1:  Elapsed Time: 0.138 seconds (Warm-up)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1:                0.16 seconds (Sampling)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1:                0.298 seconds (Total)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Chain 1: </span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> <span class="warning">Warning: </span>Bulk Effective Samples Size (ESS) is too low, indicating posterior means and medians may be unreliable.</span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> Running the chains for more iterations may help. See</span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> https://mc-stan.org/misc/warnings.html#bulk-ess</span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> <span class="warning">Warning: </span>Tail Effective Samples Size (ESS) is too low, indicating posterior variances and tail quantiles may be unreliable.</span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> Running the chains for more iterations may help. See</span>
<span class="r-wrn co"><span class="r-pr">#&gt;</span> https://mc-stan.org/misc/warnings.html#tail-ess</span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># without using recover_types(), the `condition` column returned by spread_draws()</span></span></span>
<span class="r-in"><span><span class="co"># will be an integer:</span></span></span>
<span class="r-in"><span><span class="va">m</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="spread_draws.html">spread_draws</a></span><span class="op">(</span><span class="va">condition_mean</span><span class="op">[</span><span class="va">condition</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"><a href="http://mjskay.github.io/ggdist/reference/point_interval.html" class="external-link">median_qi</a></span><span class="op">(</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 5 × 7</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>   condition condition_mean .lower .upper .width .point .interval</span>
<span class="r-out co"><span class="r-pr">#&gt;</span>       <span style="color: #949494; font-style: italic;">&lt;int&gt;</span>          <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>  <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>  <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>  <span style="color: #949494; font-style: italic;">&lt;dbl&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>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span>         1          0.188 -<span style="color: #BB0000;">0.196</span>  0.559   0.95 median qi       </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span>         2          0.999  0.676  1.36    0.95 median qi       </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">3</span>         3          1.85   1.49   2.18    0.95 median qi       </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">4</span>         4          1.04   0.657  1.33    0.95 median qi       </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">5</span>         5         -<span style="color: #BB0000;">0.883</span> -<span style="color: #BB0000;">1.22</span>  -<span style="color: #BB0000;">0.523</span>   0.95 median qi       </span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># If we apply recover_types() first, subsequent calls to other tidybayes functions will</span></span></span>
<span class="r-in"><span><span class="co"># automatically back-convert factors so that they are labeled with their original levels</span></span></span>
<span class="r-in"><span><span class="co"># (assuming the same name is used)</span></span></span>
<span class="r-in"><span><span class="va">m</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/compound.html" class="external-link">%&lt;&gt;%</a></span> <span class="fu">recover_types</span><span class="op">(</span><span class="va">ABC</span><span class="op">)</span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># now the `condition` column with be a factor with levels "A", "B", "C", ...</span></span></span>
<span class="r-in"><span><span class="va">m</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="spread_draws.html">spread_draws</a></span><span class="op">(</span><span class="va">condition_mean</span><span class="op">[</span><span class="va">condition</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"><a href="http://mjskay.github.io/ggdist/reference/point_interval.html" class="external-link">median_qi</a></span><span class="op">(</span><span class="op">)</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 5 × 7</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span>   condition condition_mean .lower .upper .width .point .interval</span>
<span class="r-out co"><span class="r-pr">#&gt;</span>   <span style="color: #949494; font-style: italic;">&lt;fct&gt;</span>              <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>  <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>  <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span>  <span style="color: #949494; font-style: italic;">&lt;dbl&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>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> A                  0.188 -<span style="color: #BB0000;">0.196</span>  0.559   0.95 median qi       </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span> B                  0.999  0.676  1.36    0.95 median qi       </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">3</span> C                  1.85   1.49   2.18    0.95 median qi       </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">4</span> D                  1.04   0.657  1.33    0.95 median qi       </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">5</span> E                 -<span style="color: #BB0000;">0.883</span> -<span style="color: #BB0000;">1.22</span>  -<span style="color: #BB0000;">0.523</span>   0.95 median qi       </span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># }</span></span></span>
</code></pre></div>
    </div>
  </div>
  <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
    <nav id="toc" data-toggle="toc" class="sticky-top"><h2 data-toc-skip>Contents</h2>
    </nav></div>
</div>


      <footer><div class="copyright">
  <p></p><p>Developed by <a href="https://www.mjskay.com" class="external-link">Matthew Kay</a>.</p>
</div>

<div class="pkgdown">
  <p></p><p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.1.0.</p>
</div>

      </footer></div>






  </body></html>

