Description Usage Arguments Details Value See Also Examples
Defines a probability distribution object for use with
compare.samplers
.
1 2 3 4 |
ndim |
The size of the distribution's state space. |
name |
A human-readable name for the distribution. |
name.expression |
A name for the distribution in
|
log.density |
A function taking a vector argument that returns the log density of the distribution evaluated at that point. |
grad.log.density |
A function taking a vector argument that returns the gradient of the log density of the distribution evaluated at that point. |
log.density.and.grad |
A function taking a vector argument
and a logical that returns a list with two elements,
|
initial |
A function that returns an overdispersed initial
state for an MCMC simulation of this distribution, used by
|
mean |
A vector specifying the true mean of the distribution. |
cov |
A matrix specifying the true covariance of the distribution. |
mean.log.dens |
A scalar specifying the true mean of the log density of the distribution. This will depend on the normalization of the log density function. |
Every distribution must have a name and a dimension. The log density and its gradient are optional; they are used by samplers implemented in R. Samplers implemented in other languages could specifically recognize the name of the distribution instead of calling back into R, though there is a mechanism for C functions to call back. The mean and covariance do not affect sampling, only post-sample diagnostics like autocorrelation time.
For many distributions, it is easier to compute the log density
and its gradient at the same time than separately; these will
generally specify log.density.and.grad
and leave
log.density
and log.density.and.grad
as NULL
. The
returned object will fill those in with calls to
log.density.and.grad
. Similarly, if it is simpler to
compute them separately, log.density.and.grad
will be
synthesized from log.density
and grad.log.density
if necessary.
mean
, cov
, and mean.log.dens
values are
intended to be used by diagnostic routines. mean
and
mean.log.dens
are currently used by compare.samplers
when estimating autocorrelation times.
See make.c.dist
for a way to define distributions
whose densities are implemented in C instead of R.
A scdist
object. It has elements with the same names as the arguments
to make.dist
.
compare.samplers
,
make.c.dist
,
check.dist.gradient
,
“R/C Glue in SamplerCompare” (vignette)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # A one dimensional Gamma(3,2) distribution.
# So that the density does not return NaN outside the support.
inflog <- function(x) ifelse(x<=0, -Inf, log(x))
# Define density; unnormalized densities are fine.
gamma32.log.density <- function(x) (3-1)*inflog(x) - x/2
gamma32.grad <- function(x) (3-1)/x - 1/2
# Use make.dist to define the distribution object.
gamma32.dist <- make.dist(1, 'Gamma32', 'plain("Gamma")(3,2)',
log.density=gamma32.log.density,
grad.log.density=gamma32.grad,
mean=3*2, cov=as.matrix(3*2^2))
# Make sure the log density and gradient agree at an arbitrary point.
check.dist.gradient(gamma32.dist, 17)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.