idemc | R Documentation |
Performs Implausibility-driven Evolutionary Monte Carlo
idemc(
ems,
N,
targets,
cutoff = 3,
s = max(500, ceiling(N/5)),
sn = s,
p = 0.4,
thin = 1,
pm = 0.9,
w = 0.8,
M = 10,
detailed = FALSE,
verbose = interactive(),
get_burnt = FALSE,
burnt = NULL
)
ems |
The emulators to evaluate implausibility on |
N |
The desired number of final points to generate |
targets |
The target values for the emulated outputs |
cutoff |
The desired implausibility cutoff of the final proposal |
s |
The number of points to generate at intermediate burn-in steps |
sn |
The number of points to generate at the final burn-in stage |
p |
The proportion of space that should remain between ladder rungs |
thin |
The thinning factor: a factor T means N*T points are generated to obtain N |
pm |
The probability that an idemc step will use mutation moves |
w |
The probability of local random walks in the mutation step |
M |
The number of mutations to perform in an IDEMC step |
detailed |
If TRUE, points proposed at every rung will be returned |
verbose |
Should information about burn-in be displayed during the process? |
get_burnt |
If TRUE, the procedure stops after burn-in, returning seeding for a full IDEMC proposal |
burnt |
If provided, this is assumed to be the result of a burn-in (or a priori analysis) |
This method for generating points is focused on finding non-implausible
regions that are either extremely small relative to the initial parameter
domain, or have interesting structure (particularly disconnected structure)
that would potentially be overlooked by more standard point generation methods.
The method is robust but computationally intensive, compared to normal methods,
and should not be used as a default - see generate_new_design
for
less computationally expensive methods.
The IDEMC method operates on an 'implausibility ladder', in the vein of common annealing methods. Each rung of the ladder is characterised by the implausibility threshold, and determinations are made about the structure of the points in each rung using clustering. One step of the evolutionary algorithm can consist of the following steps:
Mutation. A point is modified using a random-walk proposal, which can be a global
move or a within-cluster move. Within-cluster moves are chosen with probability
w
. The move is retained if the new point satisfies the implausibility
constraints of the rung.
Crossover. Points are re-organised in descending order of how active each variable is for the emulated outputs, and two different rungs are selected randomly. The points are 'mixed' using one-point real crossover at a random crossover point, producing two new points. The move is retained if both new points satisfy the relevant implausibility constraints of their rung.
Exchange. Two adjacent rungs are chosen and their points are swapped. The move is retained if the higher-implausibility rung is appropriate for being in the lower implausibility rung.
At a given step, one of mutation or crossover is performed, with probability
of mutation being chosen determined by pm
. If mutation is chosen, then
M
mutation moves are performed; else (n+1)/2
crossover moves are
performed on the n
rungs. Exchange is always performed and n+1
such
moves are performed.
The choice of 'implausibility ladder' and clusters can be determined a priori,
or else this function performs a burn-in phase to determine them. Points are
generated using the idemc steps at the current rungs, and the next ladder rung
implausibility is chosen by requiring that a proportion p
of points from
the previous rung are accepted in the new one. At each stage, s
idemc
steps are performed. Once the final rung has implausibility no larger than the
desired cutoff
, a final set of sn
idemc steps are performed across
all rungs to determine final clusters.
Either a list of data.frames, one per rung, or a single data.frame of points.
Vernon & Williamson (2013) \Sexpr[results=rd]{tools:::Rd_expr_doi("10.48550/arXiv.1309.3520")}
generate_new_design
for more standard point generation methods
# Excessive runtime
idemc_res <- idemc(SIREmulators$ems, 200, SIREmulators$targets, s = 100, p = 0.3)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.