Learn R Programming

GPArotation (version 2026.8-1)

00.GPArotation: Gradient Projection Algorithms for Factor Rotation

Description

GPA Rotation for Factor Analysis

The GPArotation package contains functions for the rotation of factor loadings matrices. The functions implement Gradient Projection (GP) algorithms for orthogonal and oblique rotation. Additionally, a number of rotation criteria are provided. The GP algorithms minimize the rotation criterion function and provide the corresponding rotation matrix. For oblique rotation, the covariance/correlation matrix of the factors is also provided. The rotation criteria implemented in this package are described in Bernaards and Jennrich (2005) in addition to a number of others. Theory of the GP algorithm is described in Jennrich (2001, 2002).

Vignettes are provided covering general usage, local minima diagnostics, bifactor rotation and reliability, and a visual walkthrough of the gradient projection algorithm. Access them via browseVignettes("GPArotation").

Package:GPArotation
Depends:R (>= 3.5.0)
License:GPL Version 2.

Index of functions:

Rotations using gradient projection algorithms

obliminOblimin rotation
quartiminQuartimin rotation
targetTOrthogonal target rotation
targetQOblique target rotation
pstTOrthogonal partially specified target rotation
pstQOblique partially specified target rotation
oblimaxOblimax rotation
entropyMinimum entropy rotation
quartimaxQuartimax rotation
VarimaxVarimax rotation
simplimaxSimplimax rotation
bentlerTOrthogonal Bentler invariant pattern simplicity rotation
bentlerQOblique Bentler invariant pattern simplicity rotation
tandemITandem criteria principle I rotation
tandemIITandem criteria principle II rotation
geominTOrthogonal Geomin rotation
geominQOblique Geomin rotation
bigeominTOrthogonal Bi-Geomin rotation
bigeominQOblique Bi-Geomin rotation
cfTOrthogonal Crawford-Ferguson family rotation
cfQOblique Crawford-Ferguson family rotation
equamaxEquamax rotation
parsimaxParsimax rotation
infomaxTOrthogonal Infomax rotation
infomaxQOblique Infomax rotation
mccammonMcCammon minimum entropy ratio rotation
variminVarimin rotation
bifactorTOrthogonal bifactor rotation
bifactorQOblique bifactor rotation
lpTOrthogonal \(L^p\) rotation
lpQOblique \(L^p\) rotation

Core gradient projection algorithms

GPForthOrthogonal rotation function
GPFoblqOblique rotation function

Random-start wrappers and internal engine

GPFRSorthRandom-start wrapper for orthogonal rotation
GPFRSoblqRandom-start wrapper for oblique rotation

2D orthogonal trajectory plot

plot2fOrthComparison2D trajectory plot for 2 factor orthogonal rotation

S3 methods

print.GPArotationPrint rotated solution with simple structure measures
summary.GPArotationSummary with pattern, structure, and diagnostics
plot.GPArotationPlot: salient, pairs, profile, vector, target, heatmap, trajectory, diagnostics, residuals
residuals.GPArotationObserved minus modeled residual of correlation matrix
updateupdate [The R Stats Package]

Data sets

Harman8Harman's 8 physical variables; centroid loadings
NetherlandsTVWansbeek and Meijer Netherlands TV viewership; correlation matrix
box20Thurstone's 20 box variables; unrotated factor loadings
box26Thurstone's 26 box variables; unrotated factor loadings
CCAICCAI Climate-Friendly Purchasing Choices domain; correlation matrix, pattern matrix, and factor intercorrelations
GriffithMulaikGriffith and Mulaik interpersonal personality traits; 24-variable correlation matrix

Other rotations not using gradient projection algorithms

eivErrors-in-variables rotation
echelonEchelon rotation
varimaxvarimax [The R Stats Package]
promaxpromax [The R Stats Package]

Legacy gradient projection algorithms (code unchanged since 2008)

GPForth.legacyOrthogonal rotation, original implementation (not exported)
GPFoblq.legacyOblique rotation, original implementation (not exported)

Utility functions

Random.StartRandom starting matrix for factor rotation
GPForth.lpSingle-start \(L^p\) orthogonal rotation
GPFoblq.lpSingle-start \(L^p\) oblique rotation

Utility functions (not exported)

.GPA_RS_engineInternal random-start engine
.sortGPALoadingsSort and sign-correct factors
NormalizingWeightNormalizing weights utility
calc_AUCAUC simple structure measure
calc_FSIFactor Simplicity Index
calc_simplicityHoffman, Gini, Bentler simplicity indices
calc_hyperplaneHyperplane count
calc_fitstatsML fit statistics: RMSEA, SRMR
plot_trajectoryHelper function for plot2fOrthComparison
plot_gpa_diagnosticsHelper function for plot2fOrthComparison
plot_algorithm_comparisonHelper function for plot2fOrthComparison
.reconstruct_trajectoryHelper function for plot2fOrthComparison
plotRotationLandscapeHelper function for plot2fOrthComparison
plot_landscape_trajectoryHelper function for plot2fOrthComparison

Value, gradient, rotation criterion functions (not exported)

vgQ.obliminOblimin
vgQ.quartiminQuartimin
vgQ.targetTarget
vgQ.pstPartially specified target
vgQ.oblimaxOblimax
vgQ.entropyMinimum entropy
vgQ.quartimaxQuartimax
vgQ.varimaxVarimax
vgQ.simplimaxSimplimax
vgQ.bentlerBentler invariant pattern simplicity
vgQ.tandemITandem criteria principle I
vgQ.tandemIITandem criteria principle II
vgQ.geominGeomin
vgQ.bigeominBi-Geomin
vgQ.cfCrawford-Ferguson family
vgQ.infomaxInfomax
vgQ.mccammonMcCammon minimum entropy ratio
vgQ.variminVarimin
vgQ.bifactorBifactor
vgQ.lp.wlsWeighted least squares for \(L^p\) rotation

Vignettes

GPA1guideGradient Projection Factor Rotation (main guide)
GPA2localAssessing Local Minima in Factor Rotation
GPA3bifactorBifactor Rotation and Reliability Coefficients
GPA4fitstatsFactor Model Fit and Simple Structure Diagnostics

Arguments

Author

Coen A. Bernaards and Robert I. Jennrich with some R modifications by Paul Gilbert.

References

The software reference is:

Bernaards, C.A. and Jennrich, R.I. (2005). Gradient projection algorithms and software for arbitrary rotation criteria in factor analysis. Educational and Psychological Measurement, 65, 676--696. tools:::Rd_expr_doi("10.1177/0013164404272507")

Theory of gradient projection algorithms:

Jennrich, R.I. (2001). A simple general procedure for orthogonal rotation. Psychometrika, 66, 289--306. tools:::Rd_expr_doi("10.1007/BF02294840")

Jennrich, R.I. (2002). A simple general method for oblique rotation. Psychometrika, 67, 7--19. tools:::Rd_expr_doi("10.1007/BF02294706")

A clear and accessible introduction to gradient projection algorithms for factor rotation is provided in:

Mansolf, M. and Reise, S.P. (2016). Exploratory bifactor analysis: The Schmid-Leiman orthogonalization and Jennrich-Bentler analytic rotations. Multivariate Behavioral Research, 51(5), 698--717. tools:::Rd_expr_doi("10.1080/00273171.2016.1215898")

Barzilai-Borwein step size:

Barzilai, J. and Borwein, J.M. (1988). Two-point step size gradient methods. IMA Journal of Numerical Analysis, 8, 141--148. tools:::Rd_expr_doi("10.1093/imanum/8.1.141")

Cayley transform retraction:

Wen, Z. and Yin, W. (2013). A feasible method for optimization with orthogonality constraints. Mathematical Programming, 142, 397--434. tools:::Rd_expr_doi("10.1007/s10107-012-0584-1")

Non-monotone line search:

Grippo, L., Lampariello, F., and Lucidi, S. (1986). A nonmonotone line search technique for Newton's method. SIAM Journal on Numerical Analysis, 23(4), 707--716. tools:::Rd_expr_doi("10.1137/0723046")

Zhang, H. and Hager, W.W. (2004). A nonmonotone line search technique and its application to unconstrained optimization. SIAM Journal on Optimization, 14(4), 1043--1056. tools:::Rd_expr_doi("10.1137/S1052623403428208")

Simple structure measures:

Liu, X., Wallin, G., Chen, Y., and Moustaki, I. (2023). Rotation to sparse loadings using \(L^p\) losses and related inference problems. Psychometrika, 88(2), 527--553. tools:::Rd_expr_doi("10.1007/s11336-023-09911-y")

Lorenzo-Seva, U. (2003). A factor simplicity index. Psychometrika, 68(1), 49--60. tools:::Rd_expr_doi("10.1007/BF02296652")

See Also

GPFRSorth, GPFRSoblq, rotations, vgQ, simple_structure, plot.GPArotation browseVignettes("GPArotation")