Compute VSS (Very Simple Structure) Criterion for Factor Loadings
Source:R/r_selection_advanced.R
compute_vss_criterion.RdComputes the Very Simple Structure (VSS) criterion, which evaluates how well factor loadings exhibit simple structure (each variable loads strongly on one factor, weakly on others).
Arguments
- Lambda
A list of K loading matrices, each (M x r), representing factor loadings for each cluster.
- threshold
Threshold for determining "strong" vs "weak" loadings. Default is 0.5. Loadings with absolute value above this threshold are considered strong.
- method
Method for computing VSS. Options: "threshold" (count variables with exactly one strong loading above threshold), "ratio" (compute concentration ratio max(lambda^2)/sum(lambda^2) for each variable). Default is "threshold".
- rotate
Rotation method to apply before computing VSS. Options: "none" (no rotation), "varimax" (orthogonal rotation). Default is "none". VSS on unrotated FA loadings is rotation-dependent and often uninformative. Rotation is recommended for meaningful VSS.
Value
A numeric scalar representing the VSS criterion. Higher values indicate better simple structure. Returns NA if rotation fails or loadings are degenerate.
Details
The VSS criterion evaluates simple structure in factor loadings. Two methods are available:
**Threshold method (default):** For each variable (muscle), count how many factors have |loading| > threshold. Simple structure is achieved when this count is exactly 1. The VSS score is the proportion of variables across all clusters that exhibit simple structure.
**Ratio method:** For each variable (muscle), compute the concentration ratio max(lambda^2)/sum(lambda^2), which measures how concentrated the loadings are on a single factor. The VSS score is the average concentration ratio across all variables. This method is more robust when loadings are small in absolute magnitude, as it doesn't depend on an arbitrary threshold.
This implementation is inspired by the psych::VSS() function, adapted for mixture models where each cluster has its own loading matrix.