EFAtools

EFAtools: An R package with fast and flexible implementations of exploratory factor analysis tools - Published in JOSS (2020)

https://github.com/mdsteiner/efatools

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    4 of 6 committers (66.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Engineering Computer Science - 40% confidence
Last synced: 6 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: mdsteiner
  • License: gpl-3.0
  • Language: R
  • Default Branch: master
  • Size: 13.6 MB
Statistics
  • Stars: 10
  • Watchers: 1
  • Forks: 3
  • Open Issues: 5
  • Releases: 14
Created about 7 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License

README.Rmd

---
output: github_document
---



```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-",
  out.width = "100%"
)
```

# EFAtools


[![CRAN status](https://www.r-pkg.org/badges/version/EFAtools)](https://CRAN.R-project.org/package=EFAtools)
[![DOI](https://joss.theoj.org/papers/10.21105/joss.02521/status.svg)](https://doi.org/10.21105/joss.02521)



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](https://cran.r-project.org/) with:
```{r eval=FALSE}
install.packages("EFAtools")
```

You can install the development version from [GitHub](https://github.com/) with:

```{r eval=FALSE}
install.packages("devtools")
devtools::install_github("mdsteiner/EFAtools")
```

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

```{r eval=FALSE}
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.

```{r fig.height=3}
# load the package
library(EFAtools)

# Run multiple factor retention methods
N_FACTORS(test_models$baseline$cormat, N = 500)

# 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)
```

## Citation

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

## Contribute or Report Bugs

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.

Owner

  • Name: Markus Steiner
  • Login: mdsteiner
  • Kind: user

JOSS Publication

EFAtools: An R package with fast and flexible implementations of exploratory factor analysis tools
Published
September 16, 2020
Volume 5, Issue 53, Page 2521
Authors
Markus D. Steiner ORCID
Center for Cognitive and Decision Sciences, Department of Psychology, University of Basel, Switzerland
Silvia Grieder ORCID
Division of Developmental and Personality Psychology, Department of Psychology, University of Basel, Switzerland
Editor
Frederick Boehm ORCID
Tags
exploratory factor analysis factor retention methods hierarchical factor analysis comparison of implementations

Papers & Mentions

Total mentions: 1

What factors contribute to the meaning of work? A validation of Morin’s Meaning of Work Questionnaire
Last synced: 4 months ago

GitHub Events

Total
  • Release event: 4
  • Push event: 6
  • Create event: 4
Last Year
  • Release event: 4
  • Push event: 6
  • Create event: 4

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 553
  • Total Committers: 6
  • Avg Commits per committer: 92.167
  • Development Distribution Score (DDS): 0.391
Past Year
  • Commits: 9
  • Committers: 1
  • Avg Commits per committer: 9.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
mdsteiner m****r@u****h 337
Silvia Grieder s****r@u****h 205
Markus Steiner m****r@f****e 4
Markus Steiner m****r@d****h 4
Markus Steiner m****r@f****h 2
Silvia Grieder s****r@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 66
  • Total pull requests: 2
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 1 minute
  • Total issue authors: 5
  • Total pull request authors: 2
  • Average comments per issue: 0.65
  • Average comments per pull request: 0.5
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • sgrieder (37)
  • mdsteiner (26)
  • FlorianScharf (1)
  • jacobsoj (1)
  • cwliu007 (1)
Pull Request Authors
  • FabrizioSandri (1)
  • mdsteiner (1)
Top Labels
Issue Labels
enhancement (5) bug (2)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • cran 1,115 last-month
  • Total dependent packages: 1
  • Total dependent repositories: 0
  • Total versions: 15
  • Total maintainers: 1
cran.r-project.org: EFAtools

Fast and Flexible Implementations of Exploratory Factor Analysis Tools

  • Versions: 15
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 1,115 Last month
Rankings
Downloads: 13.9%
Forks count: 17.8%
Dependent packages count: 18.7%
Stargazers count: 21.1%
Average: 21.4%
Dependent repos count: 35.5%
Maintainers (1)
Last synced: 6 months ago

Dependencies

DESCRIPTION cran
  • R >= 3.6.0 depends
  • GPArotation * imports
  • Rcpp * imports
  • checkmate * imports
  • cli * imports
  • crayon * imports
  • dplyr * imports
  • future * imports
  • future.apply * imports
  • ggplot2 * imports
  • graphics * imports
  • lavaan * imports
  • magrittr * imports
  • progress * imports
  • progressr * imports
  • psych * imports
  • rlang * imports
  • stats * imports
  • stringr * imports
  • tibble * imports
  • tidyr * imports
  • viridisLite * imports
  • knitr * suggests
  • microbenchmark * suggests
  • rmarkdown * suggests
  • testthat * suggests
.github/workflows/R-CMD-check.yaml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/upload-artifact main composite
  • r-lib/actions/setup-pandoc v1 composite
  • r-lib/actions/setup-r v1 composite