View source: R/ctr_bayes_fit.R
blavFitIndices | R Documentation |
This function provides a posterior distribution of some \chi^2
-based fit
indices to assess the global fit of a latent variable model.
blavFitIndices(object, thin = 1L, pD = c("loo","waic","dic"),
rescale = c("devM","ppmc","mcmc"),
fit.measures = "all", baseline.model = NULL)
## S4 method for signature 'blavFitIndices'
## S4 method for signature 'blavFitIndices'
summary(object, ...)
## S3 method for class 'bfi'
summary(object, central.tendency = c("mean","median","mode"),
hpd = TRUE, prob = .90)
object |
An object of class |
thin |
Optional |
pD |
|
rescale |
|
fit.measures |
If |
baseline.model |
If not |
... |
Additional arguments to the summary method: |
central.tendency |
Takes values "mean", "median", "mode", indicating which statistics should be used to characterize the location of the posterior distribution. By default, all 3 statistics are returned. The posterior mean is labeled EAP for expected a posteriori estimate, and the mode is labeled MAP for modal a posteriori estimate. |
hpd |
A |
prob |
The "confidence" level of the credible interval(s) (defaults to 0.9). |
An S4 object of class blavFitIndices
consisting of 2 slots:
@details |
A |
@indices |
A |
The summary()
method returns a data.frame
containing one row
for each requested fit.measure
, and columns containing the specified
measure(s) of central.tendency
, the posterior SD,
and (if requested) the HPD credible-interval limits.
Mauricio Garnier-Villareal (Vrije Universiteit Amsterdam; mgv@pm.me)
Terrence D. Jorgensen (University of Amsterdam; TJorgensen314@gmail.com)
rescale = "PPMC"
based on:
Hoofs, H., van de Schoot, R., Jansen, N. W., & Kant, I. (2017). Evaluating model fit in Bayesian confirmatory factor analysis with large samples: Simulation study introducing the BRMSEA. Educational and Psychological Measurement. doi:10.1177/0013164417709314
rescale = "devM"
based on:
Garnier-Villarreal, M., & Jorgensen, T. D. (2020). Adapting Fit Indices for Bayesian Structural Equation Modeling: Comparison to Maximum Likelihood. Psychological Methods, 25(1), 46–70. https://doi.org/dx.doi.org/10.1037/met0000224 (See also https://osf.io/afkcw/)
Other references:
Vehtari, A., Gelman, A., & Gabry, J. (2017). Practical Bayesian model evaluation using leave-one-out cross-validation and WAIC. Statistics and Computing, 27(5), 1413–1432. doi:10.1007/s11222-016-9696-4
## Not run:
data(HolzingerSwineford1939, package = "lavaan")
HS.model <- ' visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9 '
## fit target model
fit1 <- bcfa(HS.model, data = HolzingerSwineford1939,
n.chains = 2, burnin = 1000, sample = 1000)
## fit null model to calculate CFI, TLI, and NFI
null.model <- c(paste0("x", 1:9, " ~~ x", 1:9), paste0("x", 1:9, " ~ 1"))
fit0 <- bcfa(null.model, data = HolzingerSwineford1939,
n.chains = 2, burnin = 1000, sample = 1000)
## calculate posterior distributions of fit indices
## The default method mimics fit indices derived from ML estimation
ML <- blavFitIndices(fit1, baseline.model = fit0)
ML
summary(ML)
## other options:
## - use Hoofs et al.'s (2017) PPMC-based method
## - use the estimated number of parameters from WAIC instead of LOO-IC
PPMC <- blavFitIndices(fit1, baseline.model = fit0,
pD = "waic", rescale = "PPMC")
## issues a warning about using rescale="PPMC" with N < 1000 (see Hoofs et al.)
## - specify only the desired measures of central tendency
## - specify a different "confidence" level for the credible intervals
summary(PPMC, central.tendency = c("mean","mode"), prob = .95)
## Access the posterior distributions for further investigation
head(distML <- data.frame(ML@indices))
## For example, diagnostic plots using the bayesplot package:
## distinguish chains
nChains <- blavInspect(fit1, "n.chains")
distML$Chain <- rep(1:nChains, each = nrow(distML) / nChains)
library(bayesplot)
mcmc_pairs(distML, pars = c("BRMSEA","BMc","BGammaHat","BCFI","BTLI"),
diag_fun = "hist")
## Indices are highly correlated across iterations in both chains
## Compare to PPMC method
distPPMC <- data.frame(PPMC@indices)
distPPMC$Chain <- rep(1:nChains, each = nrow(distPPMC) / nChains)
mcmc_pairs(distPPMC, pars = c("BRMSEA","BMc","BGammaHat","BCFI","BTLI"),
diag_fun = "dens")
## nonlinear relation between BRMSEA, related to the floor effect of BRMSEA
## that Hoofs et al. found for larger (12-indicator) models
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.