runMCMC | R Documentation |
Main wrapper function to start MCMCs, particle MCMCs and SMCs
runMCMC(bayesianSetup, sampler = "DEzs", settings = NULL)
bayesianSetup |
either a BayesianSetup (see |
sampler |
sampling algorithm to be run. Default is DEzs. Options are "Metropolis", "AM", "DR", "DRAM", "DE", "DEzs", "DREAM", "DREAMzs", "SMC". For details see the help of the individual functions. |
settings |
list with settings for each sampler. If a setting is not provided, defaults (see |
The runMCMC function can be started with either one of
an object of class BayesianSetup with prior and likelihood function (created with createBayesianSetup
). check if appropriate parallelization options are used - many samplers can make use of parallelization if this option is activated when the class is created.
a log posterior or other target function,
an object of class BayesianOutput created by runMCMC. The latter allows to continue a previous MCMC run.
Settings for the sampler are provides as a list. You can see the default values by running applySettingsDefault
with the respective sampler name. The following settings can be used for all MCMCs:
startValue (no default) start values for the MCMC. Note that DE family samplers require a matrix of start values. If startvalues are not provided, they are sampled from the prior.
iterations (10000) the MCMC iterations
burnin (0) burnin
thin (1) thinning while sampling
consoleUpdates (100) update frequency for console updates
parallel (NULL) whether parallelization is to be used
message (TRUE) if progress messages are to be printed
nrChains (1) the number of independent MCMC chains to be run. Note that this is not controlling the internal number of chains in population MCMCs such as DE, so if you run nrChains = 3 with a DEzs startValue that is a 4xparameter matrix (= 4 internal chains), you will run independent DEzs runs with 4 internal chains each.
The MCMC samplers will have a number of additional settings, which are described in the Vignette (run vignette("BayesianTools", package="BayesianTools") and in the help of the samplers. See Metropolis
for Metropolis based samplers, DE
and DEzs
for standard differential evolution samplers, DREAM
and DREAMzs
for DREAM sampler, Twalk
for the Twalk sampler, and smcSampler
for rejection and Sequential Monte Carlo sampling. Note that the samplers "AM", "DR", and "DRAM" are special cases of the "Metropolis" sampler and are shortcuts for predefined settings ("AM": adapt=TRUE; "DR": DRlevels=2; "DRAM": adapt=True, DRlevels=2).
Note that even if you specify parallel = T, this will only turn on internal parallelization of the samplers. The independent samplers controlled by nrChains are not evaluated in parallel, so if time is an issue it will be better to run the MCMCs individually and then combine them via createMcmcSamplerList
into one joint object.
Note that DE and DREAM variants as well as SMC and T-walk require a population to start, which should be provided as a matrix. Default (NULL) sets the population size for DE to 3 x dimensions of parameters, for DREAM to 2 x dimensions of parameters and for DEzs and DREAMzs to three, sampled from the prior. Note also that the zs variants of DE and DREAM require two populations, the current population and the z matrix (a kind of memory) - if you want to set both, provide a list with startvalue$X and startvalue$Z.
setting startValue for sampling with nrChains > 1 : if you want to provide different start values for the different chains, provide them as a list
The function returns an object of class mcmcSampler (if one chain is run) or mcmcSamplerList. Both have the superclass bayesianOutput. It is possible to extract the samples as a coda object or matrix with getSample
.
It is also possible to summarize the posterior as a new prior via createPriorDensity
.
Florian Hartig
createBayesianSetup
## Generate a test likelihood function. ll <- generateTestDensityMultiNormal(sigma = "no correlation") ## Create a BayesianSetup object from the likelihood ## is the recommended way of using the runMCMC() function. bayesianSetup <- createBayesianSetup(likelihood = ll, lower = rep(-10, 3), upper = rep(10, 3)) ## Finally we can run the sampler and have a look settings = list(iterations = 1000, adapt = FALSE) out <- runMCMC(bayesianSetup = bayesianSetup, sampler = "Metropolis", settings = settings) ## out is of class bayesianOutput. There are various standard functions # implemented for this output plot(out) correlationPlot(out) marginalPlot(out) summary(out) ## additionally, you can return the sample as a coda object, and make use of the coda functions # for plotting and analysis codaObject = getSample(out, start = 500, coda = TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.