High Level Metropolis function
high_level_metropolis.RdThis function uses default assumption everywhere and returns a function that will sample from the given model. This function will generate code, compile the code, create an ODE solver for it, infer the sampling space from the scale of the parameters, create all necessary functions to move in parameter space (gradients of likelihood and prior), as well as Fisher Information functions.
Usage
high_level_metropolis(
m,
o = as_ode(m, cla = FALSE),
ex = experiments(m, o),
x = values(m$Parameter),
beta = 1,
verbose = interactive()
)Arguments
- m
the model's TSV representation read via
model_from_tsv- o
(optional) ode representation of
m- ex
experiments of
m, with simulation instructions foro.- x
initial point of the Markov chain, pre in initialized to have the right attributes.
- beta
for parallel tempering, the log-likelihood will have a factor of
betaapplied to it- verbose
prints extra messages when TRUE
Value
smmala a function of three arguments: p0, N, eps; where
p0 is the starting point, N is the desired sample-size, and eps
is the step size. This function has an attribute called "init",
with a pre-initialized starting point.
Examples
m <- model_from_tsv(uqsa_example("AKAP79"))
rwm <- high_level_metropolis(m) # "random walk", metropolis algorithm
p <- rwm %@% "init" # a valid starting point
N <- 100
if (interactive()){
smallSample <- rwm(rwm %@% "init",N,1e-6)
plot(
smallSample %@% "logLikelihood",
type="l",
main=sprintf("%i iterations",N),
xlab="iterations",
ylab="log-likelihood"
)
} else {
smallSample <- rwm(rwm %@% "init",N/4,1e-6)
}