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).
Source
Velicer, W. F. (1976). Determining the number of components from the matrix of partial correlations. Psychometrika, 41, 321–327.
Velicer, W. F., Eaton, C. A., & Fava, J. L. (2000). Construct explication through factor or component analysis: A review and evaluation of alternative procedures for determining the number of factors or components. In Goffin, R. D. & Helmes, E. (Eds.), Problems and Solutions in Human Assessment: Honoring Douglas N. Jackson at Seventy (pp. 41–71). Boston: Kluwer.
Arguments
- x
A numeric
matrixordata.frame. Can be either (a) a correlation matrix, or (b) raw data (rows = observations, columns = variables) from which correlations are computed.- use
Character string specifying the treatment of missing values when computing correlations. Passed to
stats::cor(). Defaults to"pairwise.complete.obs".- cor_method
Character string specifying the correlation coefficient to be computed if raw data are supplied. One of
"pearson","spearman", or"kendall"(passed tostats::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".
Value
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 containinguseandcor_method.
Details
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().
See also
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()
Examples
## Example with raw data
res <- efa_map(GRiPS_raw)
#> ℹ `x` is not a correlation matrix; computing correlations from the raw data.
res
#> ── Minimum average partial ─────────────────────────────────────────────────────
#>
#> • Original implementation (TR2): 1
#> • Revised implementation (TR4): 1
## Example with a correlation matrix
res2 <- efa_map(test_models$baseline$cormat)
res2
#> ── Minimum average partial ─────────────────────────────────────────────────────
#>
#> • Original implementation (TR2): 1
#> • Revised implementation (TR4): 3