Skip to content

Rnest : An R package for the Next Eigenvalue Sufficiency Tests (NEST)

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md
Notifications You must be signed in to change notification settings

quantmeth/Rnest

Repository files navigation

Rnest: An R package for the Next Eigenvalue Sufficiency Test

The library Rnest offers the Next Eigenvalue Sufficiency Tests (NEST) (Achim, 2017, 2020) to determine the number of dimensions in exploratory factor analysis. It provides a main function nest() to carry the analysis and a plot() function. It has been showed to amongst the best stopping rule to determine the nuber of factor in factor analysis (Achim, 2021; Brandenburg & Papenberg, 2024; Caron, accepté).

There is many examples of correlation matrices available with the packages and other stopping rules as well, such as pa() for parallel analysis or MAP() for minimum average partial correlation.

As of version 1.0, Rnest is compatible with the tidyverse and the %>%.

Installation

The development version can be accessed through GitHub:

remotes::install_github(repo = "quantmeth/Rnest")
library(Rnest)

The CRAN package is also available.

installed.packages("Rnest")
library(Rnest)

Examples

Here is an example using the ex_4factors_corr correlation matrix from the Rnest library. The factor structure is

and the correlation matrix is

$$\begin{bmatrix} 1&.810&.270&.567&.567&.189&&&&&& \\ .810&1&.270&.567&.567&.189&&&&&& \\ .270&.270&1&.189&.189&.063&&&&&& \\ .567&.567&.189&1&.810&.270&&&&&& \\ .567&.567&.189&.810&1&.270&&&&&& \\ .189&.189&.063&.270&.270&1&&&&&& \\ &&&&&&1&.810&.270&.567&.567&.189 \\ &&&&&&.810&1&.270&.567&.567&.189 \\ &&&&&&.270&.270&1&.189&.189&.063 \\ &&&&&&.567&.567&.189&1&.810&.270 \\ &&&&&&.567&.567&.189&.810&1&.270 \\ &&&&&&.189&.189&.063&.270&.270&1 \\ \end{bmatrix}$$

From ex_4factors_corr, we can easily generate random data using the MASS packages (Venables & Ripley, 2002).

set.seed(1)
mydata <- MASS::mvrnorm(n = 2500,
                        mu = rep(0, ncol(ex_4factors_corr)),
                        Sigma = ex_4factors_corr)

We can then carry NEST.

res <- nest(mydata)
res
## At 95% confidence, Next Eigenvalue Sufficiency Test (NEST) suggests 4 factors.

The first output tells hom many factors NEST suggests. We can also consult the summary with

summary(res)
## 
## nest 1.0 ended normally 
##  
##    Estimator                       ML 
##    Number of model parameters      66 
##    Resampling                      1000 
##    Sample size                     2500 
##    Stopped at                      5 
##  
##  
## Probabilities of factors 
##   Factor     Eigenvalue     Prob 
##     F1         3.228       < .001 
##     F2         3.167       < .001 
##     F3         1.007         .009 
##     F4         0.972         .009 
##     F5         0.860         .735 
## 
##  
## At 95% confidence, Next Eigenvalue Sufficiency Test (NEST) suggests 4 factors. 
## Try plot(nest()) to see a graphical representation of the results. 
## 

We can visualize the results using the generic function plot() using the nest() output.

plot(res)
Scree plot of NEST

Scree plot of NEST

The above figure shows the empirical eigenvalues in blue and the 95th percentile of the sampled eigenvalues.

It is also possible to use a correlation matrix directly. A sample size, n must be supplied.

nest(ex_4factors_corr, n = 240)
## At 95% confidence, Next Eigenvalue Sufficiency Test (NEST) suggests 2 factors.

The nest() function can use with many $\alpha$ values and presents parallel analysis results if desired.

res <- nest(ex_4factors_corr, n = 120, alpha = c(.01,.025,.05,.1))
plot(res, pa = TRUE)
Scree plot of NEST with many $\alpha$

Scree plot of NEST with many $\alpha$

Recommended usage

Recommended usage : fiml estimation for correlation matrix and removing unique variables.

library(dplyr)
ex_3factors_doub_unique %>%
  genr8(n = 200) %>%        # to generate simulated data for the example
  cor_nest() %>%  
  remove_unique() %>%       
  nest() %>% 
  plot()

How to cite

Caron, P.-O. (2025). Rnest: An R package for the Next Eigenvalue Sufficiency Test. https://github.com/quantmeth/Rnest

References

Achim, A. (2017). Testing the number of required dimensions in exploratory factor analysis. The Quantitative Methods for Psychology, 13(1), 64–74. https://doi.org/10.20982/tqmp.13.1.p064

Achim, A. (2020). Esprit et enjeux de l’analyse factorielle exploratoire. The Quantitative Methods for Psychology, 16(4), 213–247. https://doi.org/10.20982/tqmp.16.4.p213

Achim, A. (2021). Determining the number of factors using parallel analysis and its recent variants: Comment on Lim and Jahng (2019). Psychological Methods, 26(1), 69–73. https://doi.org/10.1037/met0000269

Brandenburg, N., & Papenberg, M. (2024). Reassessment of innovative methods to determine the number of factors: A simulation-based comparison of exploratory graph analysis and next eigenvalue sufficiency test. Psychological Methods, 29(1), 21–47. https://doi.org/10.1037/met0000527

Caron, P.-O. (accepté). A comparison of the next eigenvalue sufficiency test to other stopping rules for the number of factors in factor analysis. Educational and Psychological Measurement. https://doi.org/10.1177/00131644241308528

Venables, W. N., & Ripley, B. D. (2002). Modern applied statistics with S. Springer. https://www.stats.ox.ac.uk/pub/MASS4/

About

Rnest : An R package for the Next Eigenvalue Sufficiency Tests (NEST)

Topics

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published