NEST uses many synthetic datasets to generate reference eigenvalues against which to compare the empirical eigenvalues. This is similar to parallel analysis, but other than parallel analysis, NEST does not just rely on synthetic eigenvalues based on an identity matrix as null model. It was introduced by Achim (2017), see also Brandenburg and Papenberg (2024) and Caron (2025) for further simulation studies including NEST.
NEST(
x,
N = NA,
alpha = 0.05,
use = c("pairwise.complete.obs", "all.obs", "complete.obs", "everything",
"na.or.complete"),
cor_method = c("pearson", "spearman", "kendall", "poly", "tetra"),
n_datasets = 1000,
...
)An object of class efa_retention (see print.efa_retention() for
the print method). Its main fields are:
A named numeric vector ("NEST") with the suggested number of
factors according to the NEST procedure.
A list with a single record holding the empirical eigenvalues and the reference eigenvalues.
A list of control settings used.
data.frame or matrix. data.frame or matrix of raw data or matrix with correlations.
numeric. The number of observations. Only needed if x is a correlation matrix.
numeric. The alpha level to use (i.e., 1-alpha percentile of eigenvalues is used for reference values).
character. Passed to stats::cor() if raw
data is given as input. Default is "pairwise.complete.obs".
character. One of "pearson", "spearman", or "kendall",
passed to stats::cor(). "poly" and "tetra" are not supported because
NEST compares the data against simulated continuous reference data.
Default is "pearson".
numeric. The number of datasets to simulate. Default is 1000.
Additional arguments passed to EFA(). For example,
the extraction method can be changed here (default is "PAF"). PAF is more
robust, but it will take longer compared to the other estimation methods
available ("ML" and "ULS").
NEST compares the first empirical eigenvalue against the first eigenvalues
of n_dataset synthetic datasets based on a null model (i.e.,
with uncorrelated variables; same as in parallel analysis, see PARALLEL()).
The following eigenvalues are compared against synthetic datasets based on an EFA-model with one fewer factors
than the position of the respective empirical eigenvalue. E.g, the second
empirical eigenvalue is compared against synthetic data based on a one-factor
model. In each comparison the \(k\)-th empirical eigenvalue is tested against
the \(k\)-th largest eigenvalue of the synthetic datasets. The alpha-level
defines against which percentile of the synthetic
eigenvalue distribution to compare the empirical eigenvalues against, i.e., an
alpha of .05 (the default) uses the 95th percentile as reference value.
The number of factors tested is capped at \(\lfloor 0.8 \times p \rfloor\) (with \(p\) the number of variables; Achim, 2017) and additionally limited so that the \((k - 1)\)-factor reference model used at each step stays over-identified. If no empirical eigenvalue falls at or below its reference within this range, every tested factor is accepted and this capped number is returned.
For details on the method, including simulation studies, see Achim (2017), Brandenburg and Papenberg (2024), and Caron (2025).
The NEST function can also be called together with other factor
retention criteria in the N_FACTORS() function.
N_FACTORS() as a wrapper function for this and the other factor
retention criteria.
Other factor retention criteria:
CD(),
EKC(),
HULL(),
KGC(),
MAP(),
PARALLEL(),
SCREE(),
SMT()
# with correlation matrix
NEST(test_models$baseline$cormat, N = 500)
# with raw data
NEST(GRiPS_raw)
Run the code above in your browser using DataLab