Skip to contents

This page provides details on how to get the best results from a Bayesian metabolism model. See Quickstart for an example of preparing and fitting a Bayesian model.

Why Bayesian models?

Bayesian models are slower than the alternatives, but they offer several advantages: * They can be state-space models, including both observation error and process error. * They can be hierarchically structured, allowing you to use information from many days of data to inform estimates on each individual day. * They produce more accurate and nuanced uncertainty estimates.

Configuring Bayesian models

The structure and specifications of Bayesian models require special attention. For more information, see the help file at ?specs, especially the Relevant arguments section and the parameter definitions. Also see the vignette called ‘fit_fix_k’.

Inspecting Bayesian models

Stan MCMC information

After fitting a streamMetabolizer model, you can pull out the original Stan model object using get_mcmc(mm) where mm is your fitted metabolism model. You’ll need the rstan package to inspect the outputs from there, so run library(rstan) before proceeding.

See ?stanfit for some ideas on how to inspect the Stan model object. My go-to first method is traceplot() (and the inc_warmup=TRUE arg to traceplot() can be handy). plot(), print(), and summary() are also useful.

Model warnings and errors

Unlike other model types in streamMetabolizer, Bayesian models sometimes have overall warnings and errors not specific to any one day. If there are any, you will see a note in the ‘warnings’ or ‘errors’ columns of the model printout, and you can see the full message[s] as elements in the list returned by get_fit(). There’s also a [smaller] possibility of errors or warnings directly associated with metabolism prediction rather than fitting, inspectable in the ‘warnings’ and ‘errors’ columns of the data.frame returned by predict_metab().

# here's where you'd find fitting messages:
select(get_params(mm), warnings, errors)
get_fit(mm)$warnings
get_fit(mm)$errors

# and prediction messages
select(predict_metab(mm), warnings, errors)