lavTestScore.mi: Score Test for Multiple Imputations

View source: R/runMI-score.R

lavTestScore.miR Documentation

Score Test for Multiple Imputations


Score test (or "Lagrange multiplier" test) for lavaan models fitted to multiple imputed data sets. Statistics for releasing one or more fixed or constrained parameters in model can be calculated by pooling the gradient and information matrices pooled across imputed data sets in a method proposed by Mansolf, Jorgensen, & Enders (2020)—analogous to the "D1" Wald test proposed by Li, Meng, Raghunathan, & Rubin's (1991)—or by pooling the complete-data score-test statistics across imputed data sets (i.e., "D2"; Li et al., 1991).


lavTestScore.mi(object, add = NULL, release = NULL, test = c("D2", "D1"),
  scale.W = !asymptotic, omit.imps = c("no.conv", ""),
  asymptotic = is.null(add), univariate = TRUE, cumulative = FALSE,
  epc = FALSE, standardized = epc, cov.std = epc, verbose = FALSE,
  warn = TRUE, information = "expected")



An object of class lavaan.mi.


Either a character string (typically between single quotes) or a parameter table containing additional (currently fixed-to-zero) parameters for which the score test must be computed.


Vector of integers. The indices of the equality constraints that should be released. The indices correspond to the order of the equality constraints as they appear in the parameter table.


character indicating which pooling method to use. "D1" requests Mansolf, Jorgensen, & Enders' (2020) proposed Wald-like test for pooling the gradient and information, which are then used to calculate score-test statistics in the usual manner. "D2" (default because it is less computationall intensive) requests to pool the complete-data score-test statistics from each imputed data set, then pool them across imputations, described by Li et al. (1991) and Enders (2010).


logical. If FALSE, the pooled information matrix is calculated as the weighted sum of the within-imputation and between-imputation components. Otherwise, the pooled information is calculated by scaling the within-imputation component by the average relative increase in variance (ARIV; Enders, 2010, p. 235), which is only consistent when requesting the F test (i.e., asymptotic = FALSE. Ignored (irrelevant) if test = "D2".


character vector specifying criteria for omitting imputations from pooled results. Can include any of c("no.conv", "", "no.npd"), the first 2 of which are the default setting, which excludes any imputations that did not converge or for which standard errors could not be computed. The last option ("no.npd") would exclude any imputations which yielded a nonpositive definite covariance matrix for observed or latent variables, which would include any "improper solutions" such as Heywood cases. Specific imputation numbers can also be included in this argument, in case users want to apply their own custom omission criteria (or simulations can use different numbers of imputations without redundantly refitting the model).


logical. If FALSE (default when using add to test adding fixed parameters to the model), the pooled test will be returned as an F-distributed variable with numerator (df1) and denominator (df2) degrees of freedom. If TRUE, the pooled F statistic will be multiplied by its df1 on the assumption that its df2 is sufficiently large enough that the statistic will be asymptotically χ^2 distributed with df1. When using the release argument, asymptotic will be set to TRUE because (A)RIV can only be calculated for added parameters.


logical. If TRUE, compute the univariate score statistics, one for each constraint.


logical. If TRUE, order the univariate score statistics from large to small, and compute a series of multivariate score statistics, each time including an additional constraint in the test.


logical. If TRUE, and we are releasing existing constraints, compute the expected parameter changes for the existing (free) parameters (and any specified with add), if all constraints were released. For EPCs associated with a particular (1-df) constraint, only specify one parameter in add or one constraint in release.


If TRUE, two extra columns ( and sepc.all) in the $epc table will contain standardized values for the EPCs. See lavTestScore.


logical. See standardizedSolution.


logical. Not used for now.


logical. If TRUE, print warnings if they occur.


character indicating the type of information matrix to use (check lavInspect for available options). "expected" information is the default, which provides better control of Type I errors.


A list containing at least one data.frame:

  • $test: The total score test, with columns for the score test statistic (X2), its degrees of freedom (df), its p value under the χ^2 distribution (p.value), and if asymptotic=FALSE, the average relative invrease in variance (ARIV) used to calculate the denominator df is also returned as a missing-data diagnostic, along with the fraction missing information (FMI = ARIV / (1 + ARIV)).

  • $uni: Optional (if univariate=TRUE). Each 1-df score test, equivalent to modification indices. Also includes EPCs if epc=TRUE, and RIV and FMI if asymptotic=FALSE.

  • $cumulative: Optional (if cumulative=TRUE). Cumulative score tests, with ARIV and FMI if asymptotic=FALSE.

  • $epc: Optional (if epc=TRUE). Parameter estimates, expected parameter changes, and expected parameter values if ALL the tested constraints were freed.

See lavTestScore for details.


Terrence D. Jorgensen (University of Amsterdam;

Adapted from lavaan source code, written by Yves Rosseel (Ghent University;

test = "D1" method proposed by Maxwell Mansolf (University of California, Los Angeles;


Bentler, P. M., & Chou, C.-P. (1992). Some new covariance structure model improvement statistics. Sociological Methods & Research, 21(2), 259–282. doi: 10.1177/0049124192021002006

Enders, C. K. (2010). Applied missing data analysis. New York, NY: Guilford.

Li, K.-H., Meng, X.-L., Raghunathan, T. E., & Rubin, D. B. (1991). Significance levels from repeated p-values with multiply-imputed data. Statistica Sinica, 1(1), 65–92. Retrieved from

Mansolf, M., Jorgensen, T. D., & Enders, C. K. (2020). A multiple imputation score test for model modification in structural equation models. Psychological Methods, 25(4), 393–411. doi: 10.1037/met0000243

See Also



 ## Not run: 
## impose missing data for example
HSMiss <- HolzingerSwineford1939[ , c(paste("x", 1:9, sep = ""),
HSMiss$x5 <- ifelse(HSMiss$x5 <= quantile(HSMiss$x5, .3), NA, HSMiss$x5)
age <- HSMiss$ageyr + HSMiss$agemo/12
HSMiss$x9 <- ifelse(age <= quantile(age, .3), NA, HSMiss$x9)

## impute missing data
HS.amelia <- amelia(HSMiss, m = 20, noms = "school", p2s = FALSE)
imps <- HS.amelia$imputations

## specify CFA model from lavaan's ?cfa help page
HS.model <- '
  speed =~ c(L1, L1)*x7 + c(L1, L1)*x8 + c(L1, L1)*x9

out <- cfa.mi(HS.model, data = imps, group = "school", = TRUE)

## Mode 1: Score test for releasing equality constraints

## default test: Li et al.'s (1991) "D2" method
lavTestScore.mi(out, cumulative = TRUE)
## Li et al.'s (1991) "D1" method
lavTestScore.mi(out, test = "D1")

## Mode 2: Score test for adding currently fixed-to-zero parameters
lavTestScore.mi(out, add = 'x7 ~~ x8 + x9')

## End(Not run)

semTools documentation built on May 10, 2022, 9:05 a.m.