Now pick one or two intercepts that are plausible (compare with parameterTable()) to free (content/method reasons), and refit as partial scalar using group.partial.
Show code
fit_scalar_partial <-cfa( model_cfa,data = dat,group ="group",meanstructure =TRUE,std.lv =TRUE,missing ="fiml",group.equal =c("loadings", "intercepts"),# TODO: replace the two lines below with your choice(s)group.partial =c("x2~1", "x6~1"))anova(fit_metric, fit_scalar_partial)
Compare latent means → scalar (often partial scalar)
Compare observed means directly → not recommended without strong evidence
Show code
claims_tbl <-data.frame(claim =c("Compare factor structure (same pattern of loadings)","Compare relationships across groups (paths/correlations among factors)","Compare latent means across groups","Compare observed means across groups" ),needed_invariance =c("Configural","Metric (often sufficient)","Scalar (often partial scalar)","Not recommended without strong invariance evidence" ))
Common mistakes checklist
Treating the invariance ladder as purely mechanical (it’s a theory + measurement argument)
Freeing parameters “because MI is large” (modification ≠ justification)
Forgetting meanstructure / identification details when comparing latent means
Concluding “no invariance” instead of trying minimal partial invariance
Reproducibility
Show code
sessionInfo()
R version 4.5.1 (2025-06-13 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 26100)
Matrix products: default
LAPACK version 3.12.1
locale:
[1] LC_COLLATE=Italian_Italy.utf8 LC_CTYPE=Italian_Italy.utf8
[3] LC_MONETARY=Italian_Italy.utf8 LC_NUMERIC=C
[5] LC_TIME=Italian_Italy.utf8
time zone: Europe/Rome
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lavaan_0.6-19
loaded via a namespace (and not attached):
[1] digest_0.6.37 fastmap_1.2.0 xfun_0.52 parallel_4.5.1
[5] knitr_1.50 htmltools_0.5.8.1 pbivnorm_0.6.0 rmarkdown_2.29
[9] stats4_4.5.1 cli_3.6.5 mnormt_2.1.1 compiler_4.5.1
[13] rstudioapi_0.17.1 tools_4.5.1 evaluate_1.0.4 yaml_2.3.10
[17] quadprog_1.5-8 rlang_1.1.6 jsonlite_2.0.0 htmlwidgets_1.6.4
[21] MASS_7.3-65