Exploratory factor analysis with multiple options for factor extraction and rotation
EFA(data, Nfactors=NULL, extraction = 'paf', rotation='promax', corkind='pearson',
Ncases=NULL, iterpaf=100, ppower = 3,
delta = .01, verbose=TRUE)A list with the following elements:
The unrotated factor loadings
The rotated factor loadings
The pattern matrix
The structure matrix
The correlations between the factors
The initial eigenvalues and total variance explained
The eigenvalues and total variance explained after factor extraction (no rotation)
The rotation sums of squared loadings and total variance explained for the rotated loadings
The reproduced correlation matrix, based on the rotated loadings
Model fit coefficients
The model chi squared
The model degrees of freedom
The model p-value
The null model chi squared
The null model degrees of freedom
The unrotated factor solution communalities
The unrotated factor solution uniquenesses
An all-numeric dataframe where the rows are cases & the columns are
the variables, or a correlation matrix with ones on the diagonal.The function
internally determines whether the data are a correlation matrix.
The number of factors to extract. If not specified, then the EMPKC procedure
will be used to determine the number of factors.
The factor extraction method for the analysis.
The options are 'paf' (the default), 'alpha', 'fullinfo', 'gls', 'image', 'minres',
'ml', 'ols', 'uls', and 'wls'.
The factor rotation method for the analysis.
The orthogonal rotation options are:
'varimax' (the default), 'bentlerT', 'entropy',
'equamax', 'geominT', 'quartimax', and 'none'.
The oblique rotation options are: 'promax' (the default), 'bentlerQ',
'geominQ', 'oblimin', 'oblimax', 'quartimin',
'simplimax', and 'none'.
The kind of correlation matrix to be used if data is not a correlation matrix.
The options are 'pearson', 'kendall', 'spearman', 'gamma', and 'polychoric'. Required
only if the entered data is not a correlation matrix.
The number of cases. Required only if data is a correlation matrix.
The maximum number of iterations for paf.
The power value to be used in a promax rotation (required only if
rotation = 'promax'). Suggested value: 3
When rotation = 'geominQ' or 'geominT', delta is a tuning parameter
for the Geomin criterion. It acts as a small constant that is added to prevent
mathematical problems when a factor loading is exactly zero.
Delta is sometimes referred to as 'epsilon'.
Should detailed results be displayed in console? TRUE (default) or FALSE
Brian P. O'Connor
The factor extraction computations for the following methods are conducted using the psych package (Revelle, 2026): 'alpha', 'gls', 'minres', 'ols', 'uls', and 'wls'.
The factor extraction computations for 'fullinfo' are conducted using the mirt package (Chalmers, 2012). Full-information methods are considered more appropriate for item-level data than other factor extraction methods (Wirth & Edwards, 2007).
The factor rotation computations for the following methods are conducted using the GPArotation package (Bernaards & Jennrich, 2005, 2026): 'bentlerQ', 'bentlerT', 'entropy', 'geominQ', 'geominT', 'oblimax', 'oblimin', 'quartimax', 'quartimin', and 'simplimax'.
For factor extraction (see Mulaik, 2010, for a review):
alpha is for an alpha factor analysis
gls is for a generalized weighted least squares factor analysis
image is for image factor analysis
minres is for a minimum residual factor analysis
ml is for maximum likelihood factor analysis
ols is for an ordinary least squares factor analysis
paf is for principal axis factor analysis
uls is for an unweighted least squares factor analysis
wls is for a weighted least squares factor analysis
For factor rotation (see Jennrich, 2018, for a review):
bentlerQ is an oblique rotation based on Bentler's invariant pattern simplicity criterion.
bentlerT is an orthogonal rotation based on Bentler's invariant pattern simplicity criterion
entropy entropy is an orthogonal factor rotation that pushes factor loadings to be either strongly dominant (close to 1.0) or cleanly absent (close to 0.0), reducing the overall informational "noise" of the matrix.
equamax is an orthogonal rotation designed as a mathematical compromise between varimax and quartimax.
geominQ is an oblique factor rotation method that find a clean "simple structure" even when the data contains highly complex variables (variables that naturally load on multiple factors).
geominT is an orthogonal factor rotation that combines the strict geometric constraint of uncorrelated factors with Brownes flexible, product-based geomin complexity criterion.
oblimax is an oblique factor rotation method that maximizes the number of very high and very low (near-zero) factor loadings.
oblimin is an oblique factor rotation that allows factors to correlate freely to achieve the simplest possible loading structure.
promax is a two-stage oblique factor rotation method.
quartimax is an orthogonal factor rotation designed to spread the explained variance evenly across the factors, actively preventing a single general factor from dominating.
simplimax is an oblique factor rotation that attempts to recover complex or messy "simple structures" where traditional continuous methods like oblimin or geomin fail.
quartimin is an oblique factor rotation that focuses on simplifying the rows of the loading matrix.
varimax is an orthogonal
factor rotation that maximizes the variance of the squared factor loadings within
each individual factor column.
Run one of the following commands for more detailed descriptions of the above extraction and rotation methods:
RShowDoc("EFA_BIFACTOR_vignettes", package = "EFA.dimensions")
vignette("EFA_BIFACTOR_vignettes")
Bernaards, C. A., & Jennrich, R. I. (2005). Gradient Projection Algorithms
and Software for Arbitrary Rotation Criteria in Factor Analysis.
Educational and Psychological Measurement, 65(5), 676-696.
https://doi.org/10.1177/0013164404272507
Bernaards, C. A., & Jennrich, R. I. (2026). GPArotation: Gradient Projection Factor Rotation.
R package version 2026.4-1, https://CRAN.R-project.org/package=GPArotation
Chalmers, R. P. (2012). mirt: A Multidimensional Item Response Theory Package for the R Environment.
Journal of Statistical Software, 48(6), 129. doi:10.18637/jss.v048.i06.
Jennrich, R. I. (2018). Rotation. In P. Irwing, T. Booth, & D. J. Hughes (Eds.), The Wiley handbook
of psychometric testing: A multidisciplinary reference on survey, scale and test development (pp. 279304).
Wiley Blackwell. https://doi.org/10.1002/9781118489772.ch10
Mulaik, S. A. (2010). Foundations of factor analysis (2nd ed.). Boca Raton, FL: Chapman
and Hall/CRC Press, Taylor & Francis Group.
Revelle, W. (2026). psych: Procedures for Psychological, Psychometric, and Personality Research.
R package version 2.6.5, https://CRAN.R-project.org/package=psych
Sellbom, M., & Tellegen, A. (2019). Factor analysis in psychological assessment research:
Common pitfalls and recommendations.
Psychological Assessment, 31(12), 1428-1441. https://doi.org/10.1037/pas0000623
Watts, A. L., Greene, A. L., Ringwald, W., Forbes, M. K., Brandes, C. M., Levin-Aspenson,
H. F., & Delawalla, C. (2023). Factor analysis in personality disorders research: Modern issues
and illustrations of practical recommendations.
Personality Disorders: Theory, Research, and Treatment, 14(1), 105-117.
https://doi.org/10.1037/per0000581
Wirth, R. J., & Edwards, M. C. (2007). Item factor analysis: current approaches and future directions.
Psychological methods, 12(1), 58-79. https://doi.org/10.1037/1082-989X.12.1.58
# the Harman (1967) correlation matrix
EFA(data=data_Harman, extraction = 'paf', Nfactors=2, Ncases=305, rotation='oblimin')
# \donttest{
# Rosenberg Self-Esteem scale items, using ml extraction & polychoric correlations
EFA(data=data_RSE, Nfactors=2, extraction = 'ml', corkind='polychoric')
# NEO-PI-R scales
EFA(data=data_NEOPIR, Nfactors=5, extraction='minres', rotation='promax')
# }
Run the code above in your browser using DataLab