spaMM_boot | R Documentation |
spaMM_boot
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).
spaMM2boot
is similar except that it assumes that the original model is refitted on the simulated data, and the given function is applied to the refitted model, and the value is in a format directly usable as input for boot::boot.ci
.
Both of these functions can be used to apply standard parametric bootstrap procedures. spaMM_boot
is suitable for more diverse applications, e.g. 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")),
boot_samples=NULL,
...)
spaMM2boot(object, statFUN, nsim, nb_cores=NULL, seed=NULL,
resp_testfn=NULL, control.foreach=list(),
debug. = FALSE, type="marginal", fit_env=NULL,
cluster_args=NULL, showpbar= eval(spaMM.getOption("barstyle")),
boot_samples=NULL,
...)
object |
The fit object to simulate from. |
simuland |
The function to apply to each simulated sample. See Details for requirements of this function. |
statFUN |
The function to apply to each fit object for 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, given that |
type |
Character: passed to |
fit_env |
An environment or list containing variables necessary to evaluate |
cluster_args |
|
showpbar |
Controls display of progress bar. See |
boot_samples |
NULL, or precomputed bootstrap samples from the fitted model, provided as a matrix with one column per bootstrap replicate (the format of the result of |
... |
Further arguments passed to the |
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
.
The statFUN
function must take as first argument (named refit
) a fit object, and may have other arguments including ‘...’ handled as for simuland
.
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.
spaMM_boot
returns a list, with the following element(s) (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).
(absent in the case the boot_samples
argument was used to provide the new response values but not the RNGstate
) the state of .Random.seed
at the beginning of the sample simulation
.
spaMM2boot
returns a list suitable for use by boot.ci
, with elements:
nsim
return values of the simulated statistic (in matrix format).
nsim
return the value of statFUN
from the original fit.
The simulation type ("parametric"
).
nsim
the state of .Random.seed
at the beginning of the sample simulation
.
(other elements of an object of class boot
are currently not included.)
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"]]
## Not run:
# Parametric bootstrap by spaMM2boot() and spaMM_boot():
boot.ci_info <- spaMM2boot(lrt$nullfit, statFUN = function(refit) fixef(refit)[1],
nsim=99, type ="marginal")
boot::boot.ci(boot.ci_info, , type=c("basic","perc","norm"))
nullfit <- lrt$nullfit
boot_t <- spaMM_boot(lrt$nullfit, simuland = function(y, nullfit) {
refit <- update_resp(nullfit, y)
fixef(refit)[1]
}, nsim=99, type ="marginal", nullfit=nullfit)$bootreps
boot::boot.ci(list(R = length(boot_t), sim="parametric"), t0=fixef(nullfit)[1],
t= t(boot_t), type=c("basic","perc","norm"))
## End(Not run)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.