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 `MultipleParameterUpdate`s 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.