Confirmatory Factor Analysis
Confirmatory Factor Analysis
Example usage
data <- lavaan::HolzingerSwineford1939
jmv::cfa(
data = data,
factors = list(
list(label="Visual", vars=c("x1", "x2", "x3")),
list(label="Textual", vars=c("x4", "x5", "x6")),
list(label="Speed", vars=c("x7", "x8", "x9"))),
resCov = NULL)
#
# CONFIRMATORY FACTOR ANALYSIS
#
# Factor Loadings
# ─────────────────────────────────────────────────────────────────
# Factor Indicator Estimate SE Z p
# ─────────────────────────────────────────────────────────────────
# Visual x1 0.900 0.0832 10.81 < .001
# x2 0.498 0.0808 6.16 < .001
# x3 0.656 0.0776 8.46 < .001
# Textual x4 0.990 0.0567 17.46 < .001
# x5 1.102 0.0626 17.60 < .001
# x6 0.917 0.0538 17.05 < .001
# Speed x7 0.619 0.0743 8.34 < .001
# x8 0.731 0.0755 9.68 < .001
# x9 0.670 0.0775 8.64 < .001
# ─────────────────────────────────────────────────────────────────
#
#
# FACTOR ESTIMATES
#
# Factor Covariances
# ──────────────────────────────────────────────────────────────
# Estimate SE Z p
# ──────────────────────────────────────────────────────────────
# Visual Visual 1.000 ᵃ
# Textual 0.459 0.0635 7.22 < .001
# Speed 0.471 0.0862 5.46 < .001
# Textual Textual 1.000 ᵃ
# Speed 0.283 0.0715 3.96 < .001
# Speed Speed 1.000 ᵃ
# ──────────────────────────────────────────────────────────────
# ᵃ fixed parameter
#
#
# MODEL FIT
#
# Test for Exact Fit
# ────────────────────────
# χ² df p
# ────────────────────────
# 85.3 24 < .001
# ────────────────────────
#
#
# Fit Measures
# ───────────────────────────────────────────────
# CFI TLI RMSEA Lower Upper
# ───────────────────────────────────────────────
# 0.931 0.896 0.0921 0.0714 0.114
# ───────────────────────────────────────────────
#
Arguments
data | the data as a data frame |
factors | a list containing named lists that define the label of the factor and the vars that belong to that factor |
resCov | a list of lists specifying the residual covariances that need to be estimated |
miss | 'listwise' or 'fiml', how to handle missing values; 'listwise' excludes a row from all analyses if one of its entries is missing, 'fiml' uses a full information maximum likelihood method to estimate the model. |
constrain | 'facVar' or 'facInd', how to contrain the model; 'facVar' fixes the factor variances to one, 'facInd' fixes each factor to the scale of its first indicator. |
estTest | TRUE (default) or FALSE, provide 'Z' and 'p' values for the model estimates |
ci | TRUE or FALSE (default), provide a confidence interval for the model estimates |
ciWidth | a number between 50 and 99.9 (default: 95) specifying the confidence interval width that is used as 'ci' |
stdEst | TRUE or FALSE (default), provide a standardized estimate for the model estimates |
factCovEst | TRUE (default) or FALSE, provide estimates for the factor (co)variances |
factInterceptEst | TRUE or FALSE (default), provide estimates for the factor intercepts |
resCovEst | TRUE (default) or FALSE, provide estimates for the residual (co)variances |
resInterceptEst | TRUE or FALSE (default), provide estimates for the residual intercepts |
fitMeasures | one or more of 'cfi', 'tli', 'srmr', 'rmsea', 'aic', or 'bic'; use CFI, TLI, SRMR, RMSEA + 90% confidence interval, adjusted AIC, and BIC model fit measures, respectively |
modelTest | TRUE (default) or FALSE, provide a chi-square test for exact fit that compares the model with the perfect fitting model |
pathDiagram | TRUE or FALSE (default), provide a path diagram of the model |
corRes | TRUE or FALSE (default), provide the residuals for the observed correlation matrix (i.e., the difference between the expected correlation matrix and the observed correlation matrix) |
hlCorRes | a number (default: 0.1), highlight values in the 'corRes' table above this value |
mi | TRUE or FALSE (default), provide modification indices for the parameters not included in the model |
hlMI | a number (default: 3), highlight values in the 'modIndices' tables above this value |
Returns
A results object containing:
results$factorLoadings | a table |
results$factorEst$factorCov | a table |
results$factorEst$factorIntercept | a table |
results$resEst$resCov | a table |
results$resEst$resIntercept | a table |
results$modelFit$test | a table |
results$modelFit$fitMeasures | a table |
results$modelPerformance$corRes | a table |
results$modelPerformance$modIndices | |
results$pathDiagram | an image |
results$modelSyntax |
Tables can be converted to data frames with asDF or as.data.frame(). For example:
results$factorLoadings$asDF
as.data.frame(results$factorLoadings)