Less than four months after the release of Stan 2.18, the rstan package is ready for general use. Many of you were already using rstan 2.18.1, but that was never announced because it was challenging to get the C++ toolchain configuration right on Windows. It is now easier than ever to get rstan to work on Windows, but even if you do not use Windows, you should update to rstan 2.18.2 now.
We strongly recommend everyone use RStudio version 1.2.x when working with rstan, even though it is still in beta
because it has fantastic support for editing Stan programs, which is described at
So, if you do not have RStudio installed or have been using version 1.1.x, you should install the 1.2.x beta now.
We have revamped the “RStan Getting Started” wiki page
but in short
- On Windows, everything should be fine as long as Rtools can be installed and it is no longer necessary to adjust the PATH environmental variable
- On a Mac, everything should be fine if you previously used the toolchain installer and you have not yet upgraded the operating system to Mojave. Otherwise, if you have upgraded the operating system to Mojave, you may have to use the toolchain that comes with Xcode for a little while. This has caused trouble for several people, so open a new thread if that includes you.
- On Linux, you should already have a C++ toolchain, but Stan now requires as much of the C++14 standard that is implemented by
clang++-3.4. So, you may need to install and / or use a more up-to-date version of your C++ compiler. See here for more information.
The main changes in rstan relative to 2.17.x (aside from automatically finding the C++ toolchain on Windows) are
- The effective sample size is now estimated without bounds that restrict the estimate to be between zero and the nominal number of post-warmup draws. Thus, you may get “super-efficient” estimated posterior means where the effective sample size exceeds the nominal number of post-warmup draws because the first-order autocorrelation is negative. Also, you may get negative effective sample size estimates, in which case the sampling was completely unreliable (@avehtari says that this is only likely when you only use one chain, in which case the problem is that you only used one chain)
refresh = 0eliminates all intermediate output and progress reports
- The compiler warnings won’t be printed to the screen by default; specify
verbose = TRUEin the call to
samplingif you need to see them for some reason.
unconstrain_parsmethod can now return an entire matrix of unconstrained parameters across all iterations and chains
- There is a
loo.stanfit()method that can be used if your Stan program has a
log_likelement in its
generated quantitiesthat is a vector of contributions to the log-likelihood by each “observation”
- There are a now a bunch of
get_functions to get HMC diagnostics programatically
- The internals of
expose_stan_functionswork differently now, which should allow it to work for all possible user-defined Stan functions, but likely have introduced new bugs so let us know if it does not work in your situation