Learn R Programming

⚠️There's a newer version (1.1.0) of this package.Take me there.

EFAtools

The EFAtools package provides functions to perform exploratory factor analysis (EFA) procedures and compare their solutions. The goal is to provide state-of-the-art factor retention methods and a high degree of flexibility in the EFA procedures. This way, implementations from R psych and SPSS can be compared. Moreover, functions for Schmid-Leiman transformation, and computation of omegas are provided. To speed up the analyses, some of the iterative procedures like principal axis factoring (PAF) are implemented in C++.

Installation

You can install the release version from CRAN with:

install.packages("EFAtools")

You can install the development version from GitHub with:

install.packages("devtools")
devtools::install_github("mdsteiner/EFAtools")

To also build the vignette when installing the development version, use:

install.packages("devtools")
devtools::install_github("mdsteiner/EFAtools", build_vignettes = TRUE)

Example

Here are a few examples on how to perform the analyses with the different types and how to compare the results using the COMPARE function. For more details, see the vignette by running vignette("EFAtools", package = "EFAtools"). The vignette provides a high-level introduction into the functionalities of the package.

# load the package
library(EFAtools)

# Run multiple factor retention methods
N_FACTORS(test_models$baseline$cormat, N = 500)
#> Warning in N_FACTORS(test_models$baseline$cormat, N = 500): ! 'x' was a correlation matrix but CD needs raw data. Skipping CD.
#> ℹ The default implementation of EKC has changed compared to EFAtools version <= 0.5.0 to reflect the original version by Braeken and van Assen (2017). The previous version (which often yields different results from the original) is available with type = 'AM2019'. See details in the help page.
#> 
#> ── Tests for the suitability of the data for factor analysis ───────────────────
#> 
#> Bartlett's test of sphericity
#> 
#> ✔ The Bartlett's test of sphericity was significant at an alpha level of .05.
#>   These data are probably suitable for factor analysis.
#> 
#>   

Copy Link

Version

Install

install.packages('EFAtools')

Monthly Downloads

1,405

Version

0.7.1

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Markus Steiner

Last Published

August 21st, 2026

Functions in EFAtools (0.7.1)

KMO

Kaiser-Meyer-Olkin criterion
FACTOR_SCORES

Estimate factor scores for an EFA model
NEST

Next eigenvalue sufficiency test (NEST)
N_FACTORS

Various Factor Retention Criteria
EKC

Empirical Kaiser Criterion
MAP

Velicer's Minimum Average Partial (MAP) Criterion
IDS2_R

Intelligence subtests from the Intelligence and Development Scales--2
KGC

Kaiser-Guttman Criterion
GRiPS_raw

GRiPS_raw
HULL

Hull method for determining the number of factors to retain
SMT

Sequential Chi Square Model Tests, RMSEA lower bound, and AIC
OMEGA

McDonald's omega
SCREE

Scree Plot
UPPS_raw

UPPS_raw
PARALLEL

Parallel analysis
SL

Schmid-Leiman Transformation
PROCRUSTES

Rotate a loading matrix to a target using Procrustes alignment
SPSS_23

Various outputs from SPSS (version 23) FACTOR
SPSS_27

Various outputs from SPSS (version 27) FACTOR
RiskDimensions

RiskDimensions
.calc_cis

Confidence intervals around mean
.change_class

Covert a "LOADINGS" table to matrix or a matrix to "LOADINGS"
.average_matrices

Average a list of matrices elementwise
WJIV_ages_40_90

Woodcock Johnson IV: ages 40 to 90 plus
WJIV_ages_3_5

Woodcock Johnson IV: ages 3 to 5
WJIV_ages_14_19

Woodcock Johnson IV: ages 14 to 19
.compute_vars

Compute explained variances from loadings
WJIV_ages_20_39

Woodcock Johnson IV: ages 20 to 39
WJIV_ages_6_8

Woodcock Johnson IV: ages 6 to 8
WJIV_ages_9_13

Woodcock Johnson IV: ages 9 to 13
.consensus_loss

Mean squared discrepancy to a consensus target
.consensus_target_procrustes_single

Internal single-start consensus engine
.factor_corres

Compute number of non-matching indicator-to-factor correspondences
.extract_list_object

Extract a list object by its name
.numformat

Format numbers for print method
.hyperplane_count

Count near-zero loadings
.oblique_procrustes

Oblique Procrustes target rotation using a k x k inner objective
.nest_sym

Get reference values for nest.
plot.PARALLEL

Plot PARALLEL object
plot.KGC

Plot KGC object
.orthogonal_procrustes

Closed-form orthogonal Procrustes rotation
.paf_iter

Perform the iterative PAF procedure
plot.CD

Plot CD object
plot.EFA_AVERAGE

Plot EFA_AVERAGE object
plot.EKC

Plot EKC object
plot.HULL

Plot HULL object
.parallel_sim

Parallel analysis on simulated data.
.stat_over_list

Calculate statistics for a list of matrices
print.BARTLETT

Print BARTLETT object
print.CD

Print function for CD objects
print.EKC

Print function for EKC objects
print.EFA_AVERAGE

Print EFA_AVERAGE object
print.PARALLEL

Print function for PARALLEL objects
print.COMPARE

Print COMPARE object
print.SL

Print SL object
print.SLLOADINGS

Print SLLOADINGS object
print.EFA

Print EFA object
print.SCREE

Print function for SCREE objects
print.LOADINGS

Print LOADINGS object
print.KMO

Print KMO object
print.OMEGA

Print OMEGA object
print.SMT

Print SMT object
print.HULL

Print function for HULL objects
print.KGC

Print function for KGC objects
print.N_FACTORS

Print function for N_FACTORS objects
%>%

Pipe operator
.tucker_congruence

Tucker congruence between factors
residuals.EFA

Residuals function for EFA objects
population_models

population_models
plot.SCREE

Plot SCREE object
print.NEST

Print function for NEST objects
print.MAP

Print function for MAP objects
test_models

Four test models used in Grieder and Steiner (2020)
COMPARE

Compare two vectors or matrices (communalities or loadings)
CD

Comparison Data
DOSPERT

DOSPERT
BARTLETT

Bartlett's test of sphericity
EFAtools-package

EFAtools: Fast and Flexible Implementations of Exploratory Factor Analysis Tools
EFA

Exploratory factor analysis (EFA)
DOSPERT_raw

DOSPERT_raw
CONSENSUS_PROCRUSTES

Consensus Procrustes alignment across multiple loading matrices
EFA_POOLED

Exploratory factor analysis on multiple data imputations
EFA_AVERAGE

Model averaging across different EFA methods and types