Extending JAGS: A tutorial on adding custom distributions to JAGS (with a diffusion model example)
We demonstrate how to add a custom distribution into the general-purpose, open-source, cross-platform graphical modeling package JAGS ("Just Another Gibbs Sampler"). JAGS is intended to be modular and extensible, and modules written in the way laid out here can be loaded at runtime as needed and do not interfere with regular JAGS functionality when not loaded. Writing custom extensions requires knowledge of C++, but installing a new module can be highly automatic, depending on the operating system. As a basic example, we implement a Bernoulli distribution in JAGS. We further present our implementation of the Wiener diffusion first-passage time distribution, which is freely available at https://sourceforge.net/projects/jags-wiener/ .