calculate.D2: Calculate the "D2" statistic

View source: R/runMI.R

calculate.D2R Documentation

Calculate the "D2" statistic


This is a utility function used to calculate the "D2" statistic for pooling test statistics across multiple imputations. This function is called by several functions used for lavaan.mi objects, such as lavTestLRT.mi, lavTestWald.mi, and lavTestScore.mi. But this function can be used for any general scenario because it only requires a vector of χ^2 statistics (one from each imputation) and the degrees of freedom for the test statistic. See Li, Meng, Raghunathan, & Rubin (1991) and Enders (2010, chapter 8) for details about how it is calculated.


calculate.D2(w, DF = 0L, asymptotic = FALSE)



numeric vector of Wald χ^2 statistics. Can also be Wald z statistics, which will be internally squared to make χ^2 statistics with one df (must set DF = 0L).


degrees of freedom (df) of the χ^2 statistics. If DF = 0L (default), w is assumed to contain z statistics, which will be internally squared.


logical. If FALSE (default), the pooled test will be returned as an F-distributed statistic 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.


A numeric vector containing the test statistic, df, its p value, and 2 missing-data diagnostics: the relative invrease in variance (RIV, or average for multiparameter tests: ARIV) and the fraction missing information (FMI = ARIV / (1 + ARIV)).


Terrence D. Jorgensen (University of Amsterdam;


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

See Also

lavTestLRT.mi, lavTestWald.mi, lavTestScore.mi


## generate a vector of chi-squared values, just for example
DF <- 3 # degrees of freedom
M <- 20 # number of imputations
CHI <- rchisq(M, DF)

## pool the "results"
calculate.D2(CHI, DF) # by default, an F statistic is returned
calculate.D2(CHI, DF, asymptotic = TRUE) # asymptotically chi-squared

## generate standard-normal values, for an example of Wald z tests
Z <- rnorm(M)
calculate.D2(Z) # default DF = 0 will square Z to make chisq(DF = 1)
## F test is equivalent to a t test with the denominator DF

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