Using this tutorial

We expect folks to explore the code: run it, look at the different objects with $\tt str$, $\tt summary$ and $\tt head$, and to try adapting for their own analyses.

We assume you are familiar with R, in particular lists, data frames, arrays, factors and for loops. There are plenty of resources on the web to get up to speed with R, and we do not include that here.

You should be able to copy/paste R code from browser directly into an R script (works on Firefox and Chrome, others?), but we also provide a ZIP file with the code and data for each page here.

Software setup

You will need recent versions of R and JAGS. These are free and work on all platforms. Details of the latest versions and links to download software are here.

On Windows, we recommend using Notepad++ with NppToR – see here for an overview. We prefer this to RStudio as it does not mess with the internals of R; the only change it makes is to set itself as the default editor with options(editor="C:\Program Files (x86)\NppToR\NppEditR.exe"). It enforces Single Document Interface (SDI) mode – ie, the Console and graphics windows are separate top-level windows – and you can add other options1You will find a list of options here to the R CMD call – I use --no-save --no-restore. Sadly, that is only available for Windows.

We recommend using a custom folder for R temporary files on Windows and a custom library folder too. See here for details.

Running the JAGS code

JAGS does not have its own graphical user interface (GUI) and is designed to be run from R. Mostly we use the jags function in Ken Kellner’s jagsUI package to do this. We often use the mcmcOutput package to handle the output, including doing nice plots of diagnostics and posterior distributions.

We run MCMC chains in parallel for all except the simplest models. In our code we specify 3 chains, since all recent computers have at least 4 cores. To check, run parallel::detectCores(). (This returns the number of logical cores, which is generally twice the number of physical cores thanks to hyperthreading. References to “cores” in the tutorial mean logical cores.) If your computer has more cores – and most laptops on sale now have 8 – you may want to increase the number of chains and reduce the number of iterations per chain.

Coding styles

We try to use core R functions as far as possible and minimise the number of third-party packages used. We don’t use pipes (the %>% operator from the magrittr package) as we think it’s important to inspect and check the calculation at each step.

We started off using the Google style guide for R, but that’s no longer on the Google web site and its offspring are more complex. So we did our own “essential style guide“.

When R output is included in the scripts, it’s preceded by a “#” so that it doesn’t cause errors when the script is run. Large blocks of output have been edited. In particular, the output from jagsUI::jags has columns for overlap0 and f, which are rarely relevant to our analyses and exceed the width of the tutorial page, so I have just deleted them.

Our JAGS code follows similar conventions to R. See our JAGS coding preferences for more information.

Questions and suggestions

Please use the Comments area for questions about the material on the page or issues in running the code. Please make sure you have the latest versions of everything before reporting an issue: we don’t want to know if old packages don’t work!

Leave a Reply

Your email address will not be published. Required fields are marked *

The maximum upload file size: 1 MB. You can upload: image, document, text, archive.