run_efa: Conducts exploratory factor analysis

View source: R/run_efa.R

run_efaR Documentation

Conducts exploratory factor analysis


This function is intended for use on independent samples rather than integrated with k-fold cross-validation.


  m = floor(ncol(variables)/4),
  rotation = "oblimin",
  simple = TRUE,
  threshold = NA,
  single.item = c("keep", "drop", "none"),
  identified = TRUE,
  constrain0 = FALSE,
  ordered = FALSE,
  estimator = NULL,
  missing = "listwise",



a data.frame (or convertible to a data.frame) of variables (i.e., items) to factor analyze


integer; maximum number of factors to extract. Default is 4 items per factor.


character (case-sensitive); any rotation method listed in rotations in the GPArotation package. Default is "oblimin".


logical; Should the most simple structure be returned (default)? If FALSE, items can cross load on multiple factors.


numeric between 0 and 1 indicating the minimum (absolute) value of the loading for an item on a factor.


character indicating how single-item factors should be treated. Use "keep" (default) to keep them in the model when generating the CFA syntax, "drop" to remove them, or "none" indicating the CFA syntax should not be generated for this model and "" will be returned.


logical; Should identification check for rotational uniqueness a la Millsap (2001) be performed?


logical; Should variable(s) with all loadings below threshold still be included in model syntax? If TRUE, variable(s) will load onto first factor with the loading constrained to 0.


logical; Should items be treated as ordinal and the polychoric correlations used in the factor analysis? When FALSE (default) the Pearson correlation matrix is used. A character vector of item names is also accepted to prompt estimation of the polychoric correlation matrix.


if ordered = FALSE, the default is "ML". If ordered = TRUE, the default is "DWLS". See lavaan for other options.


default is "listwise". See lavaan for other options.


other arguments passed to lavaan functions. See lavOptions.


A three-element list:

  • efas lavaan object for each m model

  • loadings (rotated) factor loading matrix for each m model

  • cfa.syntax CFA syntax generated from loadings


# simulate data based on a 3-factor model with standardized loadings
sim.mod <- "f1 =~ .7*x1 + .8*x2 + .3*x3 + .7*x4 + .6*x5 + .8*x6 + .4*x7
                f2 =~ .8*x8 + .7*x9 + .6*x10 + .5*x11 + .5*x12 + .7*x13 + .6*x14
                f3 =~ .6*x15 + .5*x16 + .9*x17 + .4*x18 + .7*x19 + .5*x20
                f1 ~~ .2*f2
                f2 ~~ .2*f3
                f1 ~~ .2*f3
                x9 ~~ .2*x10"
set.seed(1161) <- simstandard::sim_standardized(sim.mod, n = 900,
                                          latent = FALSE,
                                          errors = FALSE)[c(2:9,1,10:20)]
# Run 1-, 2-, and 3-factor models
efas <- run_efa(, m = 3)

kfa documentation built on March 18, 2022, 5:26 p.m.

Related to run_efa in kfa...