stanhelpers is a small collection of functions to make things that I do with Stan and rstan easier. The package is a work in progress as I discover and solve bottlenecks.
Install the package with:
# install.packages("devtools")
devtools::install_github("seananderson/stanhelpers")
Right now there are only two functions: sampling_parallel()
and extract_df()
.
extract_df()
The default function rstan::extract()
extracts posterior samples from a Stan model. The output is a list containing matrices of samples (where parameters are vectors). extract_df()
instead extracts the samples and returns them in one of three "tidy data" formats:
These formats should be easier to use with packages such as dplyr, tidyr, or ggplot2. Internally, the data frame columns are renamed with index numbers for each element of a parameter. For example, an underscore would result in column names of b0_1
and b0_2
for a variable named b0
with 2 columns.
sampling_parallel()
This is now built into rstan. You should use options(mc.cores = parallel::detectCores())
or, e.g., stan(..., cores = 4)
instead.
This function makes it easy to sample from Stan models in parallel (on OS X or Linux). The rstan wiki explains how to sample in parallel, but this takes a lot of extra code. I want it to be as easy to sample in parallel as it is to call the default functions. So, instead of writing the following for every model:
library("parallel")
sflist <-
mclapply(1:4, mc.cores = 2,
function(i) sampling(object = foo, data = foo_data, seed = rng_seed,
chains = 1, chain_id = i, refresh = -1))
fit <- sflist2stanfit(sflist)
I can just write:
fit <- sampling_parallel(foo, foo_data, chains = 4L)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.