Learn R Programming

lavaan (version 0.5-17)

bootstrapLavaan: Bootstrapping a Lavaan Model

Description

Bootstrap the LRT, or any other statistic (or vector of statistics) you can extract from a fitted lavaan object.

Usage

bootstrapLavaan(object, R = 1000L, type = "ordinary", verbose = FALSE, 
                FUN = "coef", warn = -1L, return.boot = FALSE,
                parallel = c("no", "multicore", "snow"),
                ncpus = 1L, cl = NULL, h0.rmsea = NULL, ...)

bootstrapLRT(h0 = NULL, h1 = NULL, R = 1000L, type="bollen.stine", verbose = FALSE, return.LRT = FALSE, double.bootstrap = "no", double.bootstrap.R = 500L, double.bootstrap.alpha = 0.05, warn = -1L, parallel = c("no", "multicore", "snow"), ncpus = 1L, cl = NULL)

Arguments

object
An object of class lavaan.
h0
An object of class lavaan. The restricted model.
h1
An object of class lavaan. The unrestricted model.
R
Integer. The number of bootstrap draws.
type
If "ordinary" or "nonparametric", the usual (naive) bootstrap method is used. If "bollen.stine", the data is first transformed such that the null hypothesis holds exactly in the resampling space. If "yuan"
FUN
A function which when applied to the lavaan object returns a vector containing the statistic(s) of interest. The default is FUN="coef", returning the estimated values of the free parameters in the mode
...
Other named arguments for FUN which are passed unchanged each time it is called.
verbose
If TRUE, show information for each bootstrap draw.
warn
Sets the handling of warning messages. See options.
return.boot
Not used for now.
return.LRT
If TRUE, return the LRT values as an attribute to the pvalue.
parallel
The type of parallel operation to be used (if any). If missing, the default is "no".
ncpus
Integer: number of processes to be used in parallel operation: typically one would chose this to the number of available CPUs.
cl
An optional parallel or snow cluster for use if parallel = "snow". If not supplied, a cluster on the local machine is created for the duration of the bootstrapLavaan or bootstrapLRT call.
h0.rmsea
Only used if type="yuan". Allows one to do the Yuan bootstrap under the hypothesis that the population RMSEA equals a specified value.
double.bootstrap
If "standard" the genuine double bootstrap is used to compute an additional set of plug-in p-values for each boostrap sample. If "FDB", the fast double bootstrap is used to compute second level LRT-values for each bootstrap sam
double.bootstrap.R
Integer. The number of bootstrap draws to be use for the double bootstrap.
double.bootstrap.alpha
The significance level to compute the adjusted alpha based on the plugin p-values.

Details

The FUN function can return either a scalar or a numeric vector. This function can be an existing function (for example coef) or can be a custom defined function. For example: myFUN <- function(x) { # require(lavaan) modelImpliedCov <- fitted(x)$cov vech(modelImpliedCov) } If parallel="snow", it is imperative that the require(lavaan) is included in the custom function.

References

Bollen, K. and Stine, R. (1992) Bootstrapping Goodness of Fit Measures in Structural Equation Models. Sociological Methods and Research, 21, 205--229.

Yuan, K.-H., Hayashi, K., & Yanagihara, H. (2007). A class of population covariance matrices in the bootstrap approach to covariance structure analysis. Multivariate Behavioral Research, 42, 261--281.

Examples

Run this code
# fit the Holzinger and Swineford (1939) example
HS.model <- ' visual  =~ x1 + x2 + x3
              textual =~ x4 + x5 + x6
              speed   =~ x7 + x8 + x9 '

fit <- cfa(HS.model, data=HolzingerSwineford1939, se="none")

# get the test statistic for the original sample
T.orig <- fitMeasures(fit, "chisq")

# bootstrap to get bootstrap test statistics
# we only generate 10 bootstrap sample in this example; in practice
# you may wish to use a much higher number
T.boot <- bootstrapLavaan(fit, R=10, type="bollen.stine",
                          FUN=fitMeasures, fit.measures="chisq")

# compute a bootstrap based p-value
pvalue.boot <- length(which(T.boot > T.orig))/length(T.boot)

Run the code above in your browser using DataLab