Section author: Ravi Selker, Jonathon Love, Damian Dropmann

Confirmatory Factor Analysis

(cfa)

Description

Confirmatory Factor Analysis

Usage

cfa(
  data,
  factors = list(list(label = "Factor 1", vars = list())),
  resCov,
  miss = "fiml",
  constrain = "facVar",
  estTest = TRUE,
  ci = FALSE,
  ciWidth = 95,
  stdEst = FALSE,
  factCovEst = TRUE,
  factInterceptEst = FALSE,
  resCovEst = FALSE,
  resInterceptEst = FALSE,
  fitMeasures = list("cfi", "tli", "rmsea"),
  modelTest = TRUE,
  pathDiagram = FALSE,
  corRes = FALSE,
  hlCorRes = 0.1,
  mi = FALSE,
  hlMI = 3
)

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 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

Output

A results object containing:

results$factorLoadings

a table containing the factor loadings

results$factorEst$factorCov

a table containing factor covariances estimates

results$factorEst$factorIntercept

a table containing factor intercept estimates

results$resEst$resCov

a table containing residual covariances estimates

results$resEst$resIntercept

a table containing residual intercept estimates

results$modelFit$test

a table containing the chi-square test for exact fit

results$modelFit$fitMeasures

a table containing fit measures

results$modelPerformance$corRes

a table containing residuals for the observed correlation matrix

results$modelPerformance$modIndices

a group

results$pathDiagram

an image containing the model path diagram

results$modelSyntax

the lavaan syntax used to fit the model

Tables can be converted to data frames with asDF or as.data.frame(). For example:

results$factorLoadings$asDF

as.data.frame(results$factorLoadings)

Examples

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 a
#               Textual     0.459      0.0635    7.22    < .001
#               Speed       0.471      0.0862    5.46    < .001
#    Textual    Textual     1.000 a
#               Speed       0.283      0.0715    3.96    < .001
#    Speed      Speed       1.000 a
#  --------------------------------------------------------------
#    a fixed parameter
#
#
#  MODEL FIT
#
#  Test for Exact Fit
#  ------------------------
#    X²      df    p
#  ------------------------
#    85.3    24    < .001
#  ------------------------
#
#
#  Fit Measures
#  -----------------------------------------------
#    CFI      TLI      RMSEA     Lower     Upper
#  -----------------------------------------------
#    0.931    0.896    0.0921    0.0714    0.114
#  -----------------------------------------------
#