Quantify Simple Structure in a Factor Loading Matrix
Source:R/simple_structure.R
simple_structure.RdSummarizes how closely a rotated loading matrix approaches Thurstone's simple structure, in which each item loads on as few factors as possible so that the factors are interpretable. Three complementary quantities are reported: the mean item complexity (the average number of factors an item effectively loads on, one for a perfectly simple item), the hyperplane proportion (the share of loadings near zero, which Thurstone sought to maximize), and the counts of pure versus complex items at a salience cutoff. Together they turn a visual impression of a loading matrix into numbers.
Arguments
- Lambda
A numeric matrix of factor loadings, items in rows and factors in columns (for example
unclass(psych::fa(...)$loadings)or a lavaan standardized loading matrix). Row names, if present, label the items.- salient
Absolute loading at or above which an item is counted as loading saliently on a factor. Defaults to 0.30 (about ten percent of an item's variance), a common floor for a meaningful loading.
- hyperplane
Absolute loading below which a loading is treated as lying in the hyperplane (effectively zero). Defaults to 0.10.
Value
A data.frame (class dmar_tbl) with one row per
summary quantity (term, value): the number of items and
factors, the mean and median item complexity, the hyperplane
proportion, and the counts and proportion of pure items. The per-item
complexities are attached as the "complexity" attribute (a named
numeric vector), and the salience and hyperplane cutoffs as the
"salient" and "hyperplane" attributes.
Details
Item complexity is Hofmann's complexity index, proposed in Hofmann
(1977) and given as Equation 1 of Hofmann (1978),
\(c_i = (\sum_j \lambda_{ij}^2)^2 / \sum_j \lambda_{ij}^4\), which
equals one when an item loads on a single factor and rises toward the
number of factors as the loadings spread out; it is the same complexity
that psych::fa reports. The "complexity" attribute holds
these per-item values, and the mean_complexity row is their
arithmetic average, what Hofmann (1978) calls the total matrix
complexity. These are complexities, not Kaiser's (1974) simplicity
index; Hofmann (1978) shows that either can be derived from the other
at the item level, with the simplicity of item \(i\) in an
\(m\)-factor solution given by his Equation 3,
\(s_i = [1/(m - 1)][(m / c_i) - 1]\). An item is pure when
exactly one of its loadings is salient and complex when more
than one is. The hyperplane proportion is the fraction of all loadings
whose absolute value is below hyperplane; a clean simple
structure is mostly such near-zero loadings.
References
Hofmann, R. J. (1977). Indices descriptive of factor complexity. The Journal of General Psychology, 96, 58–66.
Hofmann, R. J. (1978). Complexity and simplicity as objective indices descriptive of factor solutions. Multivariate Behavioral Research, 13(2), 247–250.
Kaiser, H. F. (1974). An index of factorial simplicity. Psychometrika, 39(1), 31–36.
Thurstone, L. L. (1947). Multiple-factor analysis. University of Chicago Press.
See also
average_variance_extracted and htmt
for the convergent and discriminant sides of an exploratory solution.
Other multivariate and latent variable methods:
average_variance_extracted(),
bifactor_indices(),
cfa_1(),
cfa_2(),
cfa_k(),
ci_eigenvalue(),
common_method_marker(),
common_method_single_factor(),
dmacs(),
ecvi(),
htmt(),
irt_grm(),
irt_information(),
measurement_alignment(),
measurement_invariance(),
procrustes_phi()
Author
Ken Kelley kkelley@nd.edu
Examples
# A nearly simple two-factor structure: six items, three per factor.
Lambda <- rbind(
i1 = c(0.80, 0.05), i2 = c(0.75, 0.10), i3 = c(0.70, -0.05),
i4 = c(0.08, 0.78), i5 = c(-0.04, 0.72), i6 = c(0.30, 0.60))
simple_structure(Lambda)
#> term value
#> items 6
#> factors 2
#> mean_complexity 1.09
#> median_complexity 1.02
#> hyperplane_proportion 0.333
#> n_pure 5
#> n_complex 1
#> proportion_pure 0.833
attr(simple_structure(Lambda), "complexity")
#> i1 i2 i3 i4 i5 i6
#> 1.007812 1.035544 1.010204 1.021036 1.006173 1.470588