| 00.GPArotation | R Documentation |
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
oblimin | Oblimin rotation |
quartimin | Quartimin rotation |
targetT | Orthogonal target rotation |
targetQ | Oblique target rotation |
pstT | Orthogonal partially specified target rotation |
pstQ | Oblique partially specified target rotation |
oblimax | Oblimax rotation |
entropy | Minimum entropy rotation |
quartimax | Quartimax rotation |
Varimax | Varimax rotation |
simplimax | Simplimax rotation |
bentlerT | Orthogonal Bentler invariant pattern simplicity rotation |
bentlerQ | Oblique Bentler invariant pattern simplicity rotation |
tandemI | Tandem criteria principle I rotation |
tandemII | Tandem criteria principle II rotation |
geominT | Orthogonal Geomin rotation |
geominQ | Oblique Geomin rotation |
bigeominT | Orthogonal Bi-Geomin rotation |
bigeominQ | Oblique Bi-Geomin rotation |
cfT | Orthogonal Crawford-Ferguson family rotation |
cfQ | Oblique Crawford-Ferguson family rotation |
equamax | Equamax rotation |
parsimax | Parsimax rotation |
infomaxT | Orthogonal Infomax rotation |
infomaxQ | Oblique Infomax rotation |
mccammon | McCammon minimum entropy ratio rotation |
varimin | Varimin rotation |
bifactorT | Orthogonal bifactor rotation |
bifactorQ | Oblique bifactor rotation |
lpT | Orthogonal L^p rotation |
lpQ | Oblique L^p rotation |
Core gradient projection algorithms
GPForth | Orthogonal rotation function |
GPFoblq | Oblique rotation function |
Random-start wrappers and internal engine
GPFRSorth | Random-start wrapper for orthogonal rotation |
GPFRSoblq | Random-start wrapper for oblique rotation |
2D orthogonal trajectory plot
plot2fOrthComparison | 2D trajectory plot for 2 factor orthogonal rotation |
S3 methods
print.GPArotation | Print rotated solution with simple structure measures |
summary.GPArotation | Summary with pattern, structure, and diagnostics |
plot.GPArotation | Plot: salient, pairs, profile, vector, target, heatmap, trajectory, diagnostics, residuals |
residuals.GPArotation | Observed minus modeled residual of correlation matrix |
update | update [The R Stats Package] |
Data sets
Harman8 | Harman's 8 physical variables; centroid loadings |
NetherlandsTV | Wansbeek and Meijer Netherlands TV viewership; correlation matrix |
box26 | Thurstone's 26 box variables; unrotated factor loadings |
CCAI | CCAI Climate-Friendly Purchasing Choices domain; correlation matrix, pattern matrix, and factor intercorrelations |
GriffithMulaik | Griffith and Mulaik interpersonal personality traits; 24-variable correlation matrix |
Other rotations not using gradient projection algorithms
eiv | Errors-in-variables rotation |
echelon | Echelon rotation |
varimax | varimax [The R Stats Package] |
promax | promax [The R Stats Package] |
Legacy gradient projection algorithms (code unchanged since 2008)
GPForth.legacy | Orthogonal rotation, original implementation (not exported) |
GPFoblq.legacy | Oblique rotation, original implementation (not exported) |
Utility functions
Random.Start | Random starting matrix for factor rotation |
GPForth.lp | Single-start L^p orthogonal rotation |
GPFoblq.lp | Single-start L^p oblique rotation |
Utility functions (not exported)
.GPA_RS_engine | Internal random-start engine |
.sortGPALoadings | Sort and sign-correct factors |
NormalizingWeight | Normalizing weights utility |
calc_AUC | AUC simple structure measure |
calc_FSI | Factor Simplicity Index |
calc_simplicity | Hoffman, Gini, Bentler simplicity indices |
calc_hyperplane | Hyperplane count |
calc_fitstats | ML fit statistics: RMSEA, SRMR |
plot_trajectory | Helper function for plot2fOrthComparison |
plot_gpa_diagnostics | Helper function for plot2fOrthComparison |
plot_algorithm_comparison | Helper function for plot2fOrthComparison |
.reconstruct_trajectory | Helper function for plot2fOrthComparison |
plotRotationLandscape | Helper function for plot2fOrthComparison |
plot_landscape_trajectory | Helper function for plot2fOrthComparison |
Value, gradient, rotation criterion functions (not exported)
vgQ.oblimin | Oblimin |
vgQ.quartimin | Quartimin |
vgQ.target | Target |
vgQ.pst | Partially specified target |
vgQ.oblimax | Oblimax |
vgQ.entropy | Minimum entropy |
vgQ.quartimax | Quartimax |
vgQ.varimax | Varimax |
vgQ.simplimax | Simplimax |
vgQ.bentler | Bentler invariant pattern simplicity |
vgQ.tandemI | Tandem criteria principle I |
vgQ.tandemII | Tandem criteria principle II |
vgQ.geomin | Geomin |
vgQ.bigeomin | Bi-Geomin |
vgQ.cf | Crawford-Ferguson family |
vgQ.infomax | Infomax |
vgQ.mccammon | McCammon minimum entropy ratio |
vgQ.varimin | Varimin |
vgQ.bifactor | Bifactor |
vgQ.lp.wls | Weighted least squares for L^p rotation |
Vignettes
GPA1guide | Gradient Projection Factor Rotation (main guide) |
GPA2local | Assessing Local Minima in Factor Rotation |
GPA3bifactor | Bifactor Rotation and Reliability Coefficients |
GPA4fitstats | Factor Model Fit and Simple Structure Diagnostics |
Coen A. Bernaards and Robert I. Jennrich with some R modifications by Paul Gilbert.
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. \Sexpr[results=rd]{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. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/BF02294840")}
Jennrich, R.I. (2002). A simple general method for oblique rotation. Psychometrika, 67, 7–19. \Sexpr[results=rd]{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. \Sexpr[results=rd]{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. \Sexpr[results=rd]{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. \Sexpr[results=rd]{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. \Sexpr[results=rd]{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. \Sexpr[results=rd]{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.
\Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/s11336-023-09911-y")}
Lorenzo-Seva, U. (2003). A factor simplicity index. Psychometrika, 68(1), 49–60. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/BF02296652")}
GPFRSorth,
GPFRSoblq,
rotations,
vgQ,
simple_structure,
plot.GPArotation
browseVignettes("GPArotation")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.