nomo_efa() estimates a common-factor exploratory factor analysis while
keeping the consequential analytical choices visible. Oblique rotation is
the default, item-level diagnostics are framed as prompts for inspection,
and no item is automatically deleted or model silently refit.
Usage
nomo_efa(
data,
items = NULL,
factors,
factor_count = NULL,
rotation = "oblimin",
fm = "minres",
correlation = NULL,
types = NULL,
missing = NULL,
smooth = NULL,
guidance = nomo_defaults()
)Arguments
- data
A data frame containing candidate items.
- items
Optional character vector identifying item columns. If
factorsis anomo_factorsobject anditems = NULL, its item set is inherited. Otherwise all columns are used whenitems = NULL.- factors
A positive integer number of factors to extract, or a
nomo_factorsobject. For anomo_factorsobject, the selected parallel-analysis factor count is used unlessfactor_countis supplied.- factor_count
Optional positive integer. This may be supplied only when
factorsis anomo_factorsobject. It keeps that result's items, modeling types, correlations, and missing-data handling while recording a researcher-selected factor count, rather than implying that the parallel-analysis suggestion was adopted.- rotation
Rotation passed to
psych::fa(). The default is"oblimin". Orthogonal rotations are allowed but are recorded as a researcher choice.- fm
Common-factor extraction method passed to
psych::fa(). The default is"minres". Supported values are"minres","uls","ols","wls","gls","pa","ml","minchi","minrank","alpha", and"old.min".- correlation
Optional correlation strategy:
"auto","pearson","polychoric","tetrachoric", or"mixed". IfNULL, the value is inherited from a suppliednomo_factorsobject when possible; otherwise"auto"is used.- types
Optional named character vector declaring selected items as
"continuous","ordinal", or"binary". IfNULL, modeling types are inherited from a suppliednomo_factorsobject when possible; otherwise they are inferred using the same conservative rules asnomo_factors().- missing
Optional missing-data strategy:
"pairwise"or"complete". IfNULL, the value is inherited from a suppliednomo_factorsobject when possible; otherwise"pairwise"is used.- smooth
Optional logical. If
NULL(default), smoothing is inherited from a suppliednomo_factorsobject when that object explicitly used smoothing; otherwiseFALSE. IfFALSE, a non-positive-definite correlation matrix stops the analysis. IfTRUE,psych::cor.smooth()is used explicitly and the intervention is recorded.- guidance
Guidance settings from
nomo_defaults().
Value
An object of class nomo_efa. The fields to read are:
items,n_factors, andfactor_source, which records whether the count was the researcher's or taken from anomo_factorsresult.correlation_methodandcorrelation_matrix: the correlations analyzed.pattern_matrix,structure_matrix, andfactor_correlations.communalities,uniquenesses, andcomplexity.item_summary: one row per item, with its primary and secondary loadings, communality, flags, and the explanation of any flag.residual_matrix,residual_pairs, andrmsr: local misfit.sample_adequacy: sample size, KMO, and Bartlett's test.decision_log.
Other fields record the call, the settings used, and intermediate engine
results. They may change between releases and are not part of the stable
interface (see ?nomologR).
Details
The factor count may be supplied directly as a positive integer or by passing
a nomo_factors object. When a nomo_factors object is supplied, its primary
parallel-analysis suggestion is used as the requested EFA factor count and,
unless overridden, its item set, modeling types, correlation model, and
missing-data strategy are carried forward.
References
Browne, M. W. (2001). An overview of analytic rotation in exploratory factor analysis. Multivariate Behavioral Research, 36(1), 111-150. doi:10.1207/S15327906MBR3601_05
Conway, J. M., & Huffcutt, A. I. (2003). A review and evaluation of exploratory factor analysis practices in organizational research. Organizational Research Methods, 6(2), 147-168. doi:10.1177/1094428103251541
Costello, A. B., & Osborne, J. W. (2005). Best practices in exploratory factor analysis: Four recommendations for getting the most from your analysis. Practical Assessment, Research, and Evaluation, 10, Article 7. doi:10.7275/jyj1-4868
Fabrigar, L. R., Wegener, D. T., MacCallum, R. C., & Strahan, E. J. (1999). Evaluating the use of exploratory factor analysis in psychological research. Psychological Methods, 4(3), 272-299. doi:10.1037/1082-989X.4.3.272
Kaiser, H. F. (1958). The varimax criterion for analytic rotation in factor analysis. Psychometrika, 23(3), 187-200. doi:10.1007/BF02289233
Watkins, M. W. (2018). Exploratory factor analysis: A guide to best practice. Journal of Black Psychology, 44(3), 219-246. doi:10.1177/0095798418771807
Examples
efa <- nomo_efa(nomo_demo_continuous, factors = 2)
efa
#> <nomo_efa> Exploratory factor analysis
#> Cases: 500 | Items: 10 | Factors: 2 (researcher specified)
#> Correlation: pearson | Extraction: minres | Rotation: oblimin
#> Off-diagonal RMSR: 0.018 | Flags: 2 review, 1 concern
#> No items were automatically deleted or refit.
efa$item_summary[, c("item", "primary_loading", "secondary_loading", "attention")]
#> # A tibble: 10 × 4
#> item primary_loading secondary_loading attention
#> <chr> <dbl> <dbl> <chr>
#> 1 a1 0.808 -0.0444 KEEP
#> 2 a2 0.709 0.0643 KEEP
#> 3 a3 0.667 0.0153 KEEP
#> 4 a4 0.770 -0.0377 KEEP
#> 5 a5 0.414 0.335 REVIEW
#> 6 b1 0.783 0.0141 KEEP
#> 7 b2 0.693 -0.0200 KEEP
#> 8 b3 0.783 -0.00673 KEEP
#> 9 b4 0.637 -0.0119 REVIEW
#> 10 b5 0.332 0.0286 STRONG REVIEW
# Carry retention evidence and its modeling decisions into the EFA
fac <- nomo_factors(nomo_demo_continuous, n_iter = 20, seed = 2026)
efa_from_evidence <- nomo_efa(nomo_demo_continuous, factors = fac)
summary(efa_from_evidence)
#> <nomo_efa summary> Exploratory factor analysis
#> Cases: 500 | Items: 10 | Factors: 2 (from nomo_factors())
#> Correlation: pearson | Extraction: minres | Rotation: oblimin
#> Supporting adequacy: KMO 0.874
#>
#> Item structure
#> Item Factor Loading Next factor Loading Communality Flag
#> a1 F1 0.808 F2 -0.044 0.624
#> a2 F1 0.709 F2 0.064 0.547
#> a3 F1 0.667 F2 0.015 0.454
#> a4 F1 0.770 F2 -0.038 0.569
#> a5 F1 0.414 F2 0.335 0.406 review
#> b1 F2 0.783 F1 0.014 0.623
#> b2 F2 0.693 F1 -0.020 0.469
#> b3 F2 0.783 F1 -0.007 0.608
#> b4 F2 0.637 F1 -0.012 0.400 review
#> b5 F2 0.332 F1 0.029 0.120 concern
#>
#> Flagged items
#> - a5 (review): secondary loading |0.34| meets/exceeds the 0.30 cross-loading
#> reference
#> - b4 (review): communality 0.40 is below the 0.40 teaching reference
#> - b5 (concern): primary loading |0.33| is below the 0.40 teaching reference;
#> communality 0.12 is below the 0.40 teaching reference
#>
#> Factor correlations
#> Factor 1 Factor 2 r
#> F1 F2 0.439
#>
#> Largest residual correlations
#> Off-diagonal RMSR: 0.018
#> Item 1 Item 2 Residual
#> b4 b5 0.042
#> a5 b5 -0.039
#> a4 b5 0.038
#> a2 a5 0.030
#> b2 b5 -0.028
#>
#> Numerical references trigger inspection, not automatic deletion or hidden
#> refitting.