run_efa {kfa} | R Documentation |
Conducts exploratory factor analysis
Description
This function is intended for use on independent samples rather than integrated with k-fold cross-validation.
Usage
run_efa(
data,
variables = names(data),
m = floor(ncol(data)/4),
rotation = "oblimin",
simple = TRUE,
min.loading = NA,
single.item = c("keep", "drop", "none"),
identified = TRUE,
constrain0 = FALSE,
ordered = FALSE,
estimator = NULL,
missing = "listwise",
...
)
Arguments
data |
a |
variables |
character vector of column names in |
m |
integer; maximum number of factors to extract. Default is 4 items per factor. |
rotation |
character (case-sensitive); any rotation method listed in
|
simple |
logical; Should the perfect simple structure be returned (default) when converting EFA results to CFA syntax?
If |
min.loading |
numeric between 0 and 1 indicating the minimum (absolute) value of the loading for a variable on a factor
when converting EFA results to CFA syntax. Must be specified when |
single.item |
character indicating how single-item factors should be treated.
Use |
identified |
logical; Should identification check for rotational uniqueness a la Millsap (2001) be performed?
If the model is not identified |
constrain0 |
logical; Should variable(s) with all loadings below |
ordered |
logical; Should items be treated as ordinal and the
polychoric correlations used in the factor analysis? When |
estimator |
if |
missing |
default is "listwise". See |
... |
other arguments passed to |
Details
When converting EFA results to CFA syntax (via efa_cfa_syntax
), the simple structure is
defined as each variable loading onto a single factor. This is determined using the largest factor loading for each variable.
When simple = FALSE
, variables are allowed to cross-load on multiple factors. In this case, all pathways with loadings
above the min.loading
are retained. However, allowing cross-loading variables can result in model under-identification.
An identification check is run by default, but can be turned off by setting identified = FALSE
.
Value
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
References
Millsap, R. E. (2001). When trivial constraints are not trivial: The choice of uniqueness constraints in confirmatory factor analysis. Structural Equation Modeling, 8(1), 1-17. doi:10.1207/S15328007SEM0801_1
Examples
# 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)
sim.data <- 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(sim.data, m = 3)