Parametric bootstrap
This simulates samples from a fit object inheriting from class "HLfit", as produced by spaMM's fitting functions, and applies a given function to each simulated sample. Parallelization is supported (see Details). A typical usage of the parametric bootstrap is to fit by one model some samples simulated under another model (see Example).
spaMM_boot(object, simuland, nsim, nb_cores=NULL, seed=NULL,
resp_testfn=NULL, control.foreach=list(),
debug. = FALSE, type, fit_env=NULL, cluster_args=NULL,
showpbar= eval(spaMM.getOption("barstyle")),
...)object |
The fit object to simulate from. |
simuland |
The function to apply to each simulated sample. See Details for requirements of this function. |
nsim |
Number of samples to simulate and analyze. |
nb_cores |
Number of cores to use for parallel computation. The default is |
seed |
Passed to |
resp_testfn |
Passed to |
control.foreach |
list of control arguments for |
debug. |
Boolean (or integer, interpreted as boolean). For debugging purposes, particularly from parallel computations. The effect of |
type |
Character: passed to |
fit_env |
An environment or list containing variables necessary to evaluate |
cluster_args |
|
showpbar |
Controls display of progress bar. See |
... |
Further arguments passed to the |
spaMM_boot handles parallel backends with different features. pbapply::pbapply has a very simple interface (essentially equivalent to apply) and provides progress bars, but (in version 1.4.0, at least) does not have efficient load-balancing. doSNOW also provides a progress bar and allows more efficient load-balancing, but its requires foreach. foreach handles errors differently from pbapply (which will simply stop if fitting a model to a bootstrap replicate fails): see the foreach documentation.
spaMM_boot calls simulate.HLfit on the fit object and applies simuland on each column of the matrix returned by this call.
simulate.HLfit uses the type argument, which must be explicitly provided.
The simuland function must take as first argument a vector of response values, and may have other arguments including ‘...’. When required, these additional arguments must be passed through the ‘...’ arguments of spaMM_boot. Variables needed to evaluate them must be available from within the simuland function or otherwise provided as elements of fit_env.
A list, with two elements (unless debug. is TRUE):
nsim return values in the format returned either by apply or parallel::parApply or by foreach::`%dopar%` as controlled by control.foreach$.combine (which is here "rbind" by default).
the state of .Random.seed at the beginning of the sample simulation
.
if (spaMM.getOption("example_maxtime")>7) {
data("blackcap")
# Generate fits of null and full models:
lrt <- fixedLRT(null.formula=migStatus ~ 1 + Matern(1|longitude+latitude),
formula=migStatus ~ means + Matern(1|longitude+latitude),
method='ML',data=blackcap)
# The 'simuland' argument:
myfun <- function(y, what=NULL, lrt, ...) {
data <- lrt$fullfit$data
data$migStatus <- y ## replaces original response (! more complicated for binomial fits)
full_call <- getCall(lrt$fullfit) ## call for full fit
full_call$data <- data
res <- eval(full_call) ## fits the full model on the simulated response
if (!is.null(what)) res <- eval(what)(res=res) ## post-process the fit
return(res) ## the fit, or anything produced by evaluating 'what'
}
# where the 'what' argument (not required) of myfun() allows one to control
# what the function returns without redefining the function.
# Call myfun() with no 'what' argument: returns a list of fits
spaMM_boot(lrt$nullfit, simuland = myfun, nsim=1, lrt=lrt, type ="marginal")[["bootreps"]]
# Return only a model coefficient for each fit:
spaMM_boot(lrt$nullfit, simuland = myfun, nsim=7,
what=quote(function(res) fixef(res)[2L]), lrt=lrt, type ="marginal")[["bootreps"]]
}Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.