Automated psychometric network analysis

network_auto() optionally runs unique variable analysis (UVA), then estimates an EGA network with Spearman correlations, EBICglasso (gamma .5) and consensus Louvain. These are prespecified choices, not a claim that one estimator is best for every scale. English is the primary reporting language; use language="esp" for Spanish. All stages keep their native results, conditions and package versions.

Choose model="glasso", "TMFG", or "BGGM", and algorithm="louvain", "leiden", or "walktrap". Defaults remain GLASSO and consensus Louvain. The selected estimator is propagated to bootEGA, bootnet, NCT and loading permutations. The selected algorithm applies to empirical and group EGA and both hierEGA orders. Non-Louvain choices use LE for the separate unidimensional check; Leiden explicitly uses EGAnet’s modularity objective. Loading permutations use fixed communities and Walktrap/LE for unused membership checks. EGAnet 2.4.1 disables BGGM internally; PsychoMatic preserves that native error without substituting another estimator. TMFG edges are filtered correlations, not partial correlations. Gamma affects GLASSO only. UVA retains its independent native redundancy estimator. TMFG hierarchy orders need at least four nodes. EGAnet can also fail in riEGA bootstraps with an invalid correlation missing-data argument for some options. These optional native failures are recorded with explanations; no method is silently replaced and earlier valid results remain available.

bootstrap_type="resampling" draws participant rows with replacement; bootstrap_type="parametric" simulates continuous multivariate-normal data from the empirical correlation matrix. It does not retain ordinal categories: with corr="polychoric", native auto correlation classifies continuous replicates as continuous. These options govern structural EGA, configural, riEGA and hierEGA bootstraps. Neither is automatically declared best. bootnet edge precision remains nonparametric and centrality stability remains case-drop (Christensen & Golino, 2021; Epskamp et al., 2018). Use network_plots(fit, "figures", label_cex=1.5) to enlarge node labels further when reducing figures for publication; default label size is 1.2 without automatic shrinking.

Choose corr="polychoric" for ordinal items (binary items use the corresponding tetrachoric correlation), or corr="pearson" for Pearson correlations. The polychoric option requires every item to be ordinal; numeric integer items with at most seven observed categories are recognized by the specification. Declare other ordinal encodings with psychomatic_spec(..., level="ordinal"). The installed EGAnet polychoric estimator supports up to 11 categories per item. The EGAnet auto estimator is constrained to classify all selected item columns as ordinal. Correlations are re-estimated from response rows inside every bootstrap and permutation; a fixed correlation matrix is never resampled. For hierEGA, higher-order network scores are continuous and native auto uses Pearson correlations for those scores when their category count exceeds the declared ordinal threshold. RI residuals are correlation matrices, not recoded ordinal response data. EGAnet 2.4.1 riEGA ignores a nondefault ordinal category threshold in its initial correlation calculation: when any item has more than seven categories, the polychoric riEGA stage is explicitly not evaluable rather than silently switching to mixed correlations.

seed=NULL (default) draws one analysis seed from the session RNG without imposing a fixed seed. That double-precision seed is passed to all native stages, including EGAnet routines whose own NULL option is not controlled by R’s RNG. It is recorded in fit$effective_settings$seed; set.seed() before the call controls the draw. Set seed=2026 (or 2026L) to replay an analysis without advancing the caller’s RNG state. The method reports the seed and its origin. Package versions remain in fit$diagnostics$versions, outside reader-facing reports.

fit <- PsychoMatic::network_auto(my_data, items=paste0("I",1:12), group="sex",
  reverse=c("I3","I8"), ranges=list(I3=c(1,5), I8=c(1,5)), seed=2026)
print(fit)
plot(fit, type="network")
plot(fit, type="ega_stability") # EGA network and item replication, side by side
PsychoMatic::network_plots(fit, "figures", formats=c("pdf","svg","png"))
PsychoMatic::psychomatic_report(fit, format=c("word","excel"),
  file_name="network_results", language="eng")
PsychoMatic::psychomatic_report(fit, format=c("word","excel"),
  file_name="resultados_red", language="esp")

Reader reports include signed cross-loadings beneath primary loadings and a complete item stability table beneath community structural consistency. Empty assigned-community cells in the cross-loading table refer to primary loadings reported above. Loading magnitude uses unrounded values.

Publication figures use colored replication points and shared layouts for group networks. In a two-group comparison, thick orange node borders indicate complete BH-significant loading differences; gray borders mean no difference detected, and squares mean unavailable tests. Non-significance does not imply equivalence. The combined ega_stability panel is selected by default when bootstrap results exist. Standalone network and stability figures remain available explicitly.

Optional dependencies are EGAnet (>=2.0.7), bootnet, NetworkComparisonTest, igraph, and qgraph. Install these explicitly before analysis; PsychoMatic never installs packages during a user’s analysis. Word requires officer/flextable; Excel requires openxlsx.

install.packages(c("EGAnet","bootnet","NetworkComparisonTest","igraph","qgraph",
  "officer","flextable","openxlsx"))

UVA uses weighted topological overlap (wTO threshold .25; Christensen et al., 2023). With the default uva=NULL, UVA is not executed: no wTO, redundancy table, removal proposal or UVA figure is generated. Reports explicitly identify the omitted stage; omission does not mean no redundancies were detected. Use uva="diagnostic" to compute candidate pairs, their wTO and justified native removal proposals while keeping every item. Use uva="removed" to authorize automatic representative selection and removal, with documented reasons. No mode asks interactive questions; behavior is identical in consoles, scripts and knitr. The former "ask" and "reduce" options are no longer valid. Review semantic coverage before authorizing removal; statistical redundancy alone does not demonstrate wording effects. The redundant-pairs table shows only finite wTO values at or above the declared cutoff; the full native pairwise table remains in fit$results$uva$wto$pairwise.

Default console and Word/Excel reports emphasize detected communities, bootstrap structural consistency and separate comparisons of network structure, global strength and item loadings. The compact item table shows only loading differences with BH-adjusted p < .05. Non-significance does not establish equivalence; unavailable tests or unsupported configural structure remain explicit. Full technical tables, conditions and bibliographies remain in the result object. Use print(fit, detail="audit") or psychomatic_report(fit, detail="audit") to inspect them. The shared APA formatter uses partial italics for journal names, volumes and book titles in package bibliographies. Word and Excel preserve rich text; compatible interactive consoles use ANSI italics and redirected logs stay plain. Use options(PsychoMatic.ansi=FALSE) to disable or TRUE to force terminal styling. EGAnet retains the member of a pair with the lowest maximum wTO to other items outside that pair. For larger sets it retains the member with the highest mean wTO within the redundant set, including the zero diagonal in the native mean. An exact tie is resolved by the native candidate order, not a quality judgment. The console/Word/Excel reports identify proposed and actual removals, their retained representatives, scores, rules and ties. When UVA is requested, fit$results$uva preserves the native proposal, including its candidate reduced_data; the applied decision is in fit$results$uva_selection and fit$results$retained_items/removed_items. Requested and effective UVA modes are recorded separately. The original responses are preserved in diagnostics. Groups always share the same analysis item set. Bootstrap inference holds this set fixed; when UVA removes representatives it does not incorporate selection uncertainty.

# Skip UVA (default)
fit <- network_auto(my_data, uva=NULL)
# Describe redundancy, preserve all items
diagnostic <- network_auto(my_data, uva="diagnostic")
# Authorize justified representative removal
reduced <- network_auto(my_data, uva="removed")

riEGA uses original unrecoded numeric responses. Empirical RI convergence and admissibility are explicitly checked; an unsuccessful RI fit makes the stage not evaluable. Only declared reverse keys and theoretical ranges recode the main analysis. Negative correlations are diagnostics, not semantic evidence that an item is inverse. RI convergence does not alone establish wording effects (Bulut et al., 2025; Faraci & Nasonte, 2026). An admissible RI fit can leave an empty residual network or unassigned items. In that case its partition TEFI and structural bootstrap are explicitly not_evaluable, rather than a programming failure. The original EGA, main bootstrap and group comparisons continue. The diagnostic plot explains the unavailable partition; this outcome does not prove wording effects. Raw and RI partitions are also evaluated on the same original correlation matrix. Native residual TEFI is separately labeled and never ranked against raw TEFI.

Revised network loadings preserve signs and cross-loadings. Approximate magnitude guidelines are .20 (small), .35 (moderate), .50 (large), following Christensen et al. (2025). These guidelines do not justify automatic item deletion. Network figures show only item identifiers in nodes; numeric edge labels are regularized partial correlations (type="network"). type="loadings" displays primary revised loadings on item-to-dimension edges, with square dimension nodes; this is a descriptive loading diagram, not a CFA model or an item network. type="loadings_matrix" retains the complete signed loading/cross-loading map.

hierEGA() explores higher-order structure. When EGA identifies at least three dimensions with at least three indicators each, the workflow fits correlated, second-order and orthogonal bifactor CFA candidates using lavaan. Internal names protect model syntax from arbitrary item labels. Any ordinal indicators, including mixed ordinal/continuous data, use WLSMV with the ordinal subset; otherwise MLR is used on the same complete-case sample. Recommendations require convergence, admissibility, CFI >=.95, RMSEA <=.06 and SRMR <=.08. Among comparable likelihood fits, BIC must improve by at least 10 to prefer a more complex model over an acceptable correlated candidate. WLSMV comparisons use fit/admissibility and a declared preference for simpler acceptable candidates; AIC/BIC are not used. These are conservative operational heuristics, not proof of a true model. When bootstrap is enabled, riEGA refits the random intercept in each resample, and hierEGA refits both orders. Candidate recommendations additionally require >=.70 structural consistency in relevant orders; otherwise they are indeterminate. An indeterminate recommendation is legitimate. genTEFI has its own comparison set. Same-sample CFA is exploratory; external validation remains necessary. Reports separately show network communities and TEFI by order, native hierarchical assignments and the native exploratory interpretation, followed by Supplementary CFA candidates. CFA factors use the initial pooled EGA partition, rather than the native hierEGA lower-order partition, which may identify different communities. Both partitions are reported and their distinct sources must be retained. Negative variances are inadmissible Heywood cases, regardless of CFI. A second-order model with exactly three first-order factors has a just-identified higher-order component (higher_order_df=0); identical fit indices do not distinguish it from the correlated model. This does not mean that the full item-level CFA has zero degrees of freedom.

bootEGA provides item stability, dimensionality frequencies and exact composition structural consistency (Christensen & Golino, 2021). bootnet provides nonparametric edge intervals and case-drop centrality stability (Epskamp et al., 2018). Strength sums absolute edge weights. Betweenness and closeness use inverse absolute edge weights as distances, with unnormalized native centrality scaling. Closeness is reported as undefined for disconnected networks; its comparison p and CS are also not evaluable when the empirical graph is disconnected. Expected influence retains signs. Centrality is descriptive, not causal or an intervention recommendation. CS below .25 is inadequate; at least .50 is preferable. Small replication counts are diagnostic only.

NCT compares structure, global strength, edges and centrality (van Borkulo et al., 2023). A shared raw-row estimator recomputes correlations in each permutation. Every observed group participates in all pairwise comparisons. Missing group labels and group sample sizes are reported. Configural support requires equal empirical co-membership and >=.70 bootstrap stability for every retained item in every group, assessed against the pooled structure. No unstable items are silently removed. EGAnet loading tests are explicitly exploratory when configural support is absent (Jamison et al., 2024).

The four BH families include all requested group pairs: both global tests, all edge tests, all node/centrality tests, and all primary loading tests. p_raw and p_BH remain separate. Loading p values are recalculated from all unrounded native permutations with the plus-one Monte Carlo correction, avoiding rounding and first-draw omission in the public EGAnet 2.4.1 table. The minimum p resolution is 1/(n_perm+1). A nonsignificant result does not establish equivalence, and NCT does not establish latent scalar invariance (Benjamini & Hochberg, 1995). For this fixed-partition loading test, repeated community discovery contributes neither to the estimated network nor to the loadings. Native EGAnet permutations therefore use Walktrap and the LE membership check to avoid unused consensus Louvain iterations. Correlation estimation, GLASSO, permutation seeds and revised loadings under the original partition are preserved. These internal membership results are not used as empirical group structures; the reported group networks and configural bootstrap still use the requested consensus Louvain.

All plotting and report exports use cached results, without rerunning analyses. Numerical Excel cells retain full precision. Word and Excel include figures and APA 7 reference strings; participant rows are excluded. Existing files require explicit overwrite=TRUE. Default counts are 1000 per bootstrap stage and 5000 permutation draws; runtime increases with items, groups and consensus iterations. verbose=TRUE prints stage/substage starts, completion and elapsed seconds. n_cores controls bootEGA, bootnet and loading permutations; NCT remains sequential in the supported version. The hierarchical bootstrap respects consensus_iter at both orders. A user interruption in an optional stage is recorded as interrupted, later stages are skipped and completed earlier results are returned as a partial workflow. An incomplete invariance stage supplies no invariance conclusions or partially computed permutation p values.

# Diagnostic run, not publication-level precision:
quick <- PsychoMatic::network_auto(my_data, items=1:12, group="sex", n_boot=20,
  n_perm=19, consensus_iter=10, seed=2026, verbose=TRUE)
quick$results$stages
quick$errors
quick$decision_log
quick$results$invariance$families
# Review optional failed stages before interpreting a partial workflow.

Missingness is handled explicitly via complete cases (default) or pairwise correlations. Assess missing-data assumptions; pairwise matrices may be non-positive-definite. No minimum sample rule guarantees adequate precision.

References used by a fitted result are stored in fit$references (APA 7), and appear in both report languages. Methodological sources include the user’s EGA, UVA, entropy, wording, bifactor, loading and invariance papers, plus bootstrap, community detection and NCT papers. Full implementation evidence and current verification limits are recorded locally in docs/psychometric-network-implementation.md.