efaUnrotate: Analyze Unrotated Exploratory Factor Analysis Model

View source: R/efa.R

efaUnrotateR Documentation

Analyze Unrotated Exploratory Factor Analysis Model


This function will analyze unrotated exploratory factor analysis model. The unrotated solution can be rotated by the orthRotate and oblqRotate functions.


efaUnrotate(data = NULL, nf, varList = NULL, start = TRUE, aux = NULL, ...)



A target data.frame


The desired number of factors


Target observed variables. If not specified, all variables in data will be used (or sample.cov if is.null(data); see cfa for argument descriptions).


Use starting values in the analysis from the factanal function. If FALSE, the starting values from the lavaan package will be used. TRUE is ignored with a warning if the aux argument is used.


The list of auxiliary variables. These variables will be included in the model by the saturated-correlates approach to account for missing information.


Other arguments in the cfa function in the lavaan package, such as ordered, se, estimator, or sample.cov and sample.nobs.


This function will generate a lavaan script for unrotated exploratory factor analysis model such that (1) all factor loadings are estimated, (2) factor variances are fixed to 1, (3) factor covariances are fixed to 0, and (4) the dot products of any pairs of columns in the factor loading matrix are fixed to zero (Johnson & Wichern, 2002). The reason for creating this function to supplement the factanal function is that users can enjoy some advanced features from the lavaan package, such as scaled χ^2, diagonally weighted least squares estimation for ordinal indicators, or full-information maximum likelihood (FIML) to handle incomplete data.


A lavaan output of unrotated exploratory factor analysis solution.


Sunthud Pornprasertmanit (psunthud@gmail.com)

Terrence D. Jorgensen (University of Amsterdam; TJorgensen314@gmail.com)


unrotated <- efaUnrotate(HolzingerSwineford1939, nf = 3,
                         varList = paste0("x", 1:9), estimator = "mlr")
summary(unrotated, std = TRUE)
inspect(unrotated, "std")

dat <- data.frame(HolzingerSwineford1939,
                  z = rnorm(nrow(HolzingerSwineford1939), 0, 1))
unrotated2 <- efaUnrotate(dat, nf = 2, varList = paste0("x", 1:9), aux = "z")

semTools documentation built on May 10, 2022, 9:05 a.m.