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
%>%
.
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)
Here is an example using the ex_4factors_corr
correlation matrix from
the Rnest
library. The factor structure is
and the correlation matrix is
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)
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
res <- nest(ex_4factors_corr, n = 120, alpha = c(.01,.025,.05,.1))
plot(res, pa = TRUE)
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()
Caron, P.-O. (2025). Rnest: An R package for the Next Eigenvalue Sufficiency Test. https://github.com/quantmeth/Rnest
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/