knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
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++.
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)
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 all possible factor retention methods N_FACTORS(test_models$baseline$cormat, N = 500, method = "ML") # A type SPSS EFA to mimick the SPSS implementation with # promax rotation EFA_SPSS <- EFA(test_models$baseline$cormat, n_factors = 3, type = "SPSS", rotation = "promax") # look at solution EFA_SPSS # A type psych EFA to mimick the psych::fa() implementation with # promax rotation EFA_psych <- EFA(test_models$baseline$cormat, n_factors = 3, type = "psych", rotation = "promax") # compare the type psych and type SPSS implementations COMPARE(EFA_SPSS$rot_loadings, EFA_psych$rot_loadings, x_labels = c("SPSS", "psych")) # Average solution across many different EFAs with oblique rotations EFA_AV <- EFA_AVERAGE(test_models$baseline$cormat, n_factors = 3, N = 500, method = c("PAF", "ML", "ULS"), rotation = "oblique", show_progress = FALSE) # look at solution EFA_AV # Perform a Schmid-Leiman transformation SL <- SL(EFA_psych) # Based on a specific salience threshold for the loadings (here: .20): factor_corres <- SL$sl[, c("F1", "F2", "F3")] >= .2 # Compute omegas from the Schmid-Leiman solution OMEGA(SL, factor_corres = factor_corres)
If you use this package in your research, please acknowledge it by citing:
Steiner, M.D., & Grieder, S.G. (2020). EFAtools: An R package with fast and flexible implementations of exploratory factor analysis tools. Journal of Open Source Software, 5(53), 2521. https://doi.org/10.21105/joss.02521
If you want to contribute or report bugs, please open an issue on GitHub or email us at markus.d.steiner@gmail.com or silvia.grieder@gmail.com.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.