Computes Velicer's Minimum Average Partial (MAP) criterion for determining the number of factors/components to retain. The function implements the original MAP criterion (Velicer, 1976), expressed via the \(\mathrm{TR2}\) representation, and the revised \(\mathrm{TR4}\) variant proposed by Velicer, Eaton, and Fava (2000).
efa_map(
x,
use = c("pairwise.complete.obs", "all.obs", "complete.obs", "everything",
"na.or.complete"),
cor_method = c("pearson", "spearman", "kendall", "poly", "tetra")
)An object of class efa_retention (see print.efa_retention() for the
print method) with the following main elements:
n_factors: A named numeric vector ("TR2", "TR4") with the index
\(m\) that minimizes the original (TR2) and revised (TR4) MAP criterion.
results: A list with one record per criterion, each holding the
criterion values over \(m\).
settings: A list containing use and cor_method.
A numeric matrix or data.frame. Can be either (a) a correlation matrix, or
(b) raw data (rows = observations, columns = variables) from which correlations are computed.
Character string specifying the treatment of missing values when computing correlations.
Passed to stats::cor(). Defaults to "pairwise.complete.obs".
Character string specifying the correlation coefficient to be computed if raw
data are supplied. One of "pearson", "spearman", or "kendall" (passed to
stats::cor()), or "poly" / "tetra" for polychoric / tetrachoric correlations
of ordinal / binary data (a two-step estimator with no empty-cell continuity
correction). Defaults to "pearson".
MAP partials successive principal components out of the correlation matrix and, after removing \(m\) components, summarizes the off-diagonal partial correlations \(r^*_{ij}\) that remain in the \(m\)-th partial correlation matrix \(M\) (which has a unit diagonal); the suggested number of factors is the \(m\) that minimizes the criterion. Two criteria are returned, each rescaling the trace of a matrix power of \(M\) by the number of off-diagonal cells \(p(p-1)\):
TR2 (original MAP; Velicer, 1976): the average squared off-diagonal partial correlation, $$\mathrm{TR2}_m = \frac{\mathrm{tr}(M^2) - p}{p(p-1)} = \frac{\sum_{i \neq j} (r^*_{ij})^2}{p(p-1)},$$ where subtracting \(p\) removes the \(p\) unit diagonal entries.
TR4 (revised MAP; Velicer, Eaton, & Fava, 2000): the analogous fourth-power summary, formed from the trace of the fourth matrix power, $$\mathrm{TR4}_m = \frac{\mathrm{tr}(M^4) - p}{p(p-1)}.$$ Moving from the squared to the fourth power downweights the small partial correlations relative to the large ones, which can sharpen the minimum.
A non-positive-definite input correlation matrix (e.g. from sampling error) is
smoothed with psych::cor.smooth().
efa_retain() as a wrapper function for this and the other factor
retention criteria.
Other factor retention criteria:
efa_cd(),
efa_ekc(),
efa_hull(),
efa_kgc(),
efa_nest(),
efa_parallel(),
efa_retain(),
efa_scree(),
efa_smt()
## Example with raw data
res <- efa_map(GRiPS_raw)
res
## Example with a correlation matrix
res2 <- efa_map(test_models$baseline$cormat)
res2
Run the code above in your browser using DataLab