| randomWalkMetropolis {EMC} | R Documentation |
Given a target density function and a symmetric proposal generating function, this function produces samples from the target using the random walk Metropolis algorithm.
randomWalkMetropolis(nIters,
startingVal,
logTarDensFunc,
propNewFunc,
MHBlocks = NULL,
MHBlockNTimes = NULL,
saveFitness = FALSE,
verboseLevel = 0,
...)
Below sampDim refers to the dimension of the sample space.
nIters |
integer > 0. |
startingVal |
double vector of length sampDim. |
logTarDensFunc |
function of two arguments
(draw, ...)
that returns the target density evaluated in the log scale. |
propNewFunc |
function of three arguments
(block, currentDraw, ...)
that returns new Metropolis-Hastings proposals. See details
below on the argument block. |
MHBlocks |
list of integer vectors giving dimensions to be
blocked together for sampling. It defaults to
as.list(1:sampDim), i.e., each dimension is treated as a
block on its own. See details below for an example. |
MHBlockNTimes |
integer vector of number of times each block
given by MHBlocks should be sampled in each iteration. It
defaults to rep(1, length(MHBlocks)). See details below
for an example. |
saveFitness |
logical indicating whether fitness values
should be saved. See details below. |
verboseLevel |
integer, a value >= 2 produces a
lot of output. |
... |
optional arguments to be passed to logTarDensFunc
and propNewFunc. |
propNewFuncpropNewFunc is called multiple
times by varying the block argument over
1:length(MHBlocks), so this function should know how to
generate a proposal from the currentDraw depending on which
block was passed as the argument. See the example section
for sample code.MHBlocks and MHBlockNTimessampDim = 6. Let we want to
sample dimensions 1, 2, 4 as one block, dimensions 3 and 5 as
another and treat dimension 6 as the third block. Suppose we want
to sample the three blocks mentioned above 1, 5 and 10 times in
each iteration, respectively. Then we could set MHBlocks =
list(c(1, 2, 4), c(3, 5), 6) and MHBlockNTimes = c(1, 5,
10)saveFitnesslogTarDensFunc values. By default, the
fitness values are not saved, but one can do so by setting
saveFitness = TRUE.
This function returns a list with the following components:
draws |
matrix of dimension nIters x
sampDim, if saveFitness = FALSE. If saveFitness =
TRUE, then the returned matrix is of dimension nIters
x (sampDim + 1), where the fitness values
appear in its last column. |
acceptRatios |
matrix of the acceptance rates. |
detailedAcceptRatios |
matrix with detailed summary of the
acceptance rates. |
nIters |
the nIters argument. |
startingVal |
the startingVal argument. |
time |
the time taken by the run. |
The effect of leaving the default value NULL for some of the
arguments above are as follows:
MHBlocks | as.list(1:sampDim). |
| | rep(1, length(MHBlocks)). |
Gopi Goswami goswami@stat.harvard.edu
Jun S. Liu (2001). Monte Carlo strategies for scientific computing. Springer.
MetropolisHastings,
parallelTempering, evolMonteCarlo
samplerObj <-
with(CigarShapedFuncGenerator1(-13579),
randomWalkMetropolis(nIters = 5000,
startingVal = c(0, 0),
logTarDensFunc = logTarDensFunc,
propNewFunc = propNewFunc,
verboseLevel = 1))
print(samplerObj)
print(names(samplerObj))
with(samplerObj,
{
print(detailedAcceptRatios)
print(dim(draws))
plot(draws,
xlim = c(-3, 5),
ylim = c(-3, 4),
pch = '.',
ask = FALSE,
main = as.expression(paste('# draws:', nIters)),
xlab = as.expression(substitute(x[xii], list(xii = 1))),
ylab = as.expression(substitute(x[xii], list(xii = 2))))
})