| sfa_simplify | R Documentation |
Selects a reduced (short-form) item set per group using only the items' semantic structure — no human response data — and reports how well the reduced set preserves the factor structure of the full scale (in the spirit of Wang et al., 2026; Jung & Seo, 2025). It selects items by centroid/medoid proximity within a grouping, rather than reimplementing those papers' specific clustering pipelines. The output is a candidate short form that should be validated psychometrically before use.
sfa_simplify(
x,
target_n,
method = c("anchor", "medoid"),
groups = c("theoretical", "fitted"),
...
)
x |
An object of class |
target_n |
Integer number of items to keep per group. Groups with
|
method |
|
groups |
How items are grouped before trimming: |
... |
Currently unused. |
Two selection strategies are offered:
"anchor"(default) Keep the items most similar to their own
group's centroid (un-flipped, leave-one-out; see sfa_anchor);
drop the weakest. Simple and interpretable, but can retain near-duplicate
items (see sfa_redundancy).
"medoid"Within each group, greedily select items that are both representative (close to the group centroid) and non-redundant (spread apart in embedding space). Trades a little central tendency for broader coverage.
After selection the scale is re-fit on the kept items and compared with the full-scale solution: number of factors retained and structure recovery against the theoretical grouping (NMI and ARI).
An object of class "sfa_simplify": a list with keep
(kept item codes), drop (dropped items with reasons), the re-fit
reduced_fit, and a fidelity report.
Wang, B., Zhang, Y., Hu, Y., Hou, H., Peng, K., & Ni, S. (2026). Discovering semantic latent structures in psychological scales: A response-free pathway to efficient simplification. arXiv:2602.12575 (preprint).
Jung, S.-J., & Seo, J.-W. (2025). A transformer-based embedding approach to developing short-form psychological measures. Frontiers in Psychology, 16, Article 1640864. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.3389/fpsyg.2025.1640864")}
sfa_anchor, sfa_redundancy,
sfa_congruence
data(big5)
fit <- sfa(
data.frame(code = big5$codes, item = big5$items,
factor = big5$factors, scoring = big5$scoring),
embeddings = big5$embeddings, scoring = big5$scoring, nfactors = 5)
# keep the 5 most representative items per construct
short <- sfa_simplify(fit, target_n = 5, method = "anchor")
short$keep
# group by the fitted factors instead of the supplied key (needs no labels)
sfa_simplify(fit, target_n = 5, groups = "fitted")$keep
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.