next up previous
Next: Where can I get Up: An Introduction to YADAS Previous: An Introduction to YADAS

Introduction: What is YADAS?

YADAS is a software system for statistical analysis using Markov chain Monte Carlo (MCMC). It is written in Java and its source code is being distributed here; in §[*]. It was intended to be used by statistical researchers, and as such, it has always been a goal to make YADAS extensible enough to handle new models of forms not yet envisioned. However, it is one thing to have a system with no limits to its extensibility, and another thing altogether to have useful components available that make extensions easy. The BasicMCMCBond construct, with its argument functions and a small set of log-density functions, enables specification of most models without requiring the user to write a great deal of new code. The MCMCUpdate interface allows users to update the parameters in their MCMC algorithms in arbitrary ways and in particular MultipleParameterUpdates make it easy to propose Metropolis-Hastings moves in arbitrary directions. Metropolis-Hastings moves of multiple parameters simultaneously are powerful and intuitive ways to improve convergence of difficult MCMC algorithms. See [5] for ``Design Ideas for Markov Chain Monte Carlo Software,'' a paper published about YADAS in the Journal of Computational and Graphical Statistics.

The emphasis of YADAS is on Metropolis and Metropolis-Hastings moves, rather than on Gibbs sampling using exact conditional distributions. Avoiding Gibbs sampling frees analysts from the responsibility of evaluating and coding full conditional distributions. YADAS mostly automates the process of calculating acceptance probabilities, so that the task of defining an MCMC algorithm is reduced to specifying the terms in the unnormalized posterior distribution. Furthermore, the same algorithms that are used to compute acceptance probabilities for simple Metropolis moves can also be used to compute acceptance probabilities for more complex moves should they prove necessary. There is no incentive for analysts to force-fit their prior knowledge into conjugate forms. Metropolis steps require users to tune step size parameters, but this process is usually quite straightforward, and generally automated in YADAS.

Many people are concerned with computation speed issues when they hear that YADAS is written in Java. Java's speed is underrated, and in any case, human time required to write an application is invariably much more precious than computational time. Still, the general-purpose algorithms used in YADAS will slow things down relative to special purpose code. If your problem is large enough that optimization with respect to speed is critical, YADAS will not be an ideal solution.

Finally, YADAS is an acronym for ``yet another data analysis system'', and is pronounced as if it were a contraction of ``yada yada yada''.

In this documentation, we will begin by reviewing Markov chain Monte Carlo ideas in §1.1, and by reviewing object-oriented programming in Java in §1.2. We introduce the key components in any YADAS analysis in §2, and discuss how we normally deal with poor mixing in MCMC in §3. We present a number of examples in §4, each of which illustrates an advanced topic in YADAS.

 

 

 



Subsections
next up previous
Next: Where can I get Up: An Introduction to YADAS Previous: An Introduction to YADAS
Todd Graves 2008-09-24