Author: Andrew Parnell
Date: 2026-05-02

# simmr: quick start guide

#### Andrew Parnell

#### 2026-05-02

## Step 1: install `simmr`

Use:

    install.packages("simmr")

then

    library(simmr)

## Step 2: load in the data

Some geese isotope data is included with this package. Find where it is with:

    system.file("extdata", "geese_data.xls", package = "simmr")

Load into R with:

    library(readxl)
    path <- system.file("extdata", "geese_data.xls", package = "simmr")
    geese_data <- lapply(excel_sheets(path), read_excel, path = path)

If you want to see what the original Excel sheet looks like you can run `system(paste('open',path))`.

We can now separate out the data into parts

    targets <- geese_data[[1]]
    sources <- geese_data[[2]]
    TEFs <- geese_data[[3]]
    concdep <- geese_data[[4]]

Note that if you don’t have TEFs or concentration dependence you can set these all to the value 0 or just leave them blank in the step below.

## Step 3: load the data into `simmr`

    geese_simmr <- simmr_load(
      mixtures = targets[, 1:2],
      source_names = sources$Sources,
      source_means = sources[, 2:3],
      source_sds = sources[, 4:5],
      correction_means = TEFs[, 2:3],
      correction_sds = TEFs[, 4:5],
      concentration_means = concdep[, 2:3],
      group = as.factor(paste("Day", targets$Time))
    )

## Step 4: plot the data

    plot(geese_simmr, group = 1:8)

    ## Warning in geom_errorbar(..., orientation = orientation): Ignoring unknown
    ## aesthetics: height

## Step 5: run through `simmr` and check convergence

    geese_simmr_out <- simmr_mcmc(geese_simmr)
    summary(geese_simmr_out,
      type = "diagnostics",
      group = 1
    )

Check that the model fitted well:

    posterior_predictive(geese_simmr_out, group = 5)

    ## Compiling model graph
    ##    Resolving undeclared variables
    ##    Allocating nodes
    ## Graph information:
    ##    Observed stochastic nodes: 40
    ##    Unobserved stochastic nodes: 46
    ##    Total graph size: 198
    ##
    ## Initializing model

    ## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
    ## ℹ Please use `linewidth` instead.
    ## ℹ The deprecated feature was likely used in the bayesplot package.
    ##   Please report the issue at <https://github.com/stan-dev/bayesplot/issues/>.
    ## This warning is displayed once per session.
    ## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
    ## generated.

## Step 6: look at the output

Look at the influence of the prior:

    prior_viz(geese_simmr_out)

Look at the histogram of the dietary proportions:

    plot(geese_simmr_out, type = "histogram")

    compare_groups(geese_simmr_out,
      groups = 1:4,
      source_name = "Enteromorpha"
    )

    ## Most popular orderings are as follows:

    ##                                     Probability
    ## Day 428 > Day 124 > Day 398 > Day 1      0.2194
    ## Day 428 > Day 398 > Day 124 > Day 1      0.1758
    ## Day 428 > Day 124 > Day 1 > Day 398      0.1536
    ## Day 428 > Day 398 > Day 1 > Day 124      0.0997
    ## Day 428 > Day 1 > Day 124 > Day 398      0.0903
    ## Day 428 > Day 1 > Day 398 > Day 124      0.0622
    ## Day 398 > Day 428 > Day 124 > Day 1      0.0392
    ## Day 124 > Day 428 > Day 398 > Day 1      0.0369
    ## Day 124 > Day 428 > Day 1 > Day 398      0.0303
    ## Day 398 > Day 428 > Day 1 > Day 124      0.0228
    ## Day 398 > Day 124 > Day 428 > Day 1      0.0139
    ## Day 124 > Day 398 > Day 428 > Day 1      0.0128
    ## Day 1 > Day 428 > Day 398 > Day 124      0.0111
    ## Day 1 > Day 428 > Day 124 > Day 398      0.0108
    ## Day 124 > Day 1 > Day 428 > Day 398      0.0069
    ## Day 1 > Day 398 > Day 428 > Day 124      0.0033
    ## Day 1 > Day 124 > Day 428 > Day 398      0.0031
    ## Day 398 > Day 1 > Day 428 > Day 124      0.0022
    ## Day 124 > Day 1 > Day 398 > Day 428      0.0014
    ## Day 398 > Day 124 > Day 1 > Day 428      0.0014
    ## Day 1 > Day 124 > Day 398 > Day 428      0.0011
    ## Day 1 > Day 398 > Day 124 > Day 428      0.0008
    ## Day 124 > Day 398 > Day 1 > Day 428      0.0006
    ## Day 398 > Day 1 > Day 124 > Day 428      0.0003

For the many more options available to run and analyse output, see the main vignette via `vignette('simmr')`