StructuralEquationModels v0.5.0
StructuralEquationModels.jl v0.5.0
This is a large, breaking release centered on a modular redesign of the model/type system to unify single models and collections/multigroup models.
Highlights
- a
Semis now a weighted sum of loss terms, each SEM loss bundling its own observed + implied parts. - New inference methods: CFI, p-values (z-test) and confidence intervals, parallel bootstrap.
- Multigroup χ²/RMSEA/estimates now match lavaan.
- Optimization backends (NLopt, Proximal) moved to package extensions.
- Data simulation, FIML mean structures, and efficient re-fitting via
replace_observed.
Breaking changes
- Type-system & evaluation overhaul.
SemOptimizerAPI refactor (#299).- Optimization backends are now extensions — you must
using NLopt/using ProximalAlgorithmsto enableengine = :NLopt/:Proximal(#228, #234). - Renames:
params/param_labels(#253, #257);df→dof(#254). - Multigroup fit statistics now use the per-group Wishart/GLS convention:
χ² = Σ_g (N_g−1)·F_g(new:nsamples_correcteddefault weighting;N−Gχ² multiplier for ML/WLS; matching RMSEA). Multigroup ML/WLS results now match lavaanwishart/GLS; single-group results are unchanged except ML RMSEA. FIML is unchanged.
New features
CFIfit measure (#313).- Inference: z-test p-values and normal-theory confidence intervals (#316).
- Bootstrap standard errors refactored, with optional parallel fitting (#314).
replace_observedfor collections (#266).
Bug fixes
- Multigroup fit-measure corrections (#311), RMSEA correction, and the χ² multiplier/weighting fix.
Merged pull requests:
- No-op code & docs cleanups (#245) (@alyst)
- build(deps): bump julia-actions/julia-format from 3 to 4 (#264) (@dependabot[bot])
- main into devel (#265) (@Maximilian-Stefan-Ernst)
- Replace observed collections (#266) (@Maximilian-Stefan-Ernst)
- build(deps): bump actions/github-script from 7 to 8 (#269) (@dependabot[bot])
- Main to devel (#278) (@Maximilian-Stefan-Ernst)
- build(deps): bump actions/checkout from 4 to 6 (#287) (@dependabot[bot])
- explicitely import types for extensions (#291) (@Maximilian-Stefan-Ernst)
- workaround for StenoGraph import (#294) (@Maximilian-Stefan-Ernst)
- Update partable syntax (#295) (@Maximilian-Stefan-Ernst)
- Update FormatCheck (#296) (@alyst)
- update concept figures (#297) (@Maximilian-Stefan-Ernst)
- Update action (#298) (@Maximilian-Stefan-Ernst)
- Refactor SemOptimizer API (#299) (@alyst)
- .gh/FormatCheck: run on pull_request (#302) (@Maximilian-Stefan-Ernst)
- Cleanup FIML, enhance em_mvn() (#303) (@alyst)
- Fiml meanstructure argument (#304) (@Maximilian-Stefan-Ernst)
- fix printing of Optim solution (#305) (@Maximilian-Stefan-Ernst)
- require StenoGraphs v0.5; closes #289 (#306) (@aaronpeikert)
- Update actions on devel (#307) (@Maximilian-Stefan-Ernst)
- remove unused Stenograph exports (#308) (@Maximilian-Stefan-Ernst)
- Update loss checks (#309) (@alyst)
- Update docstring for fit measures (#310) (@alyst)
- Cleanup fitmeasures mg (#311) (@Maximilian-Stefan-Ernst)
- Add CFI (#313) (@Maximilian-Stefan-Ernst)
- refactor bootstrap se and allow parallel fitting (#314) (@Maximilian-Stefan-Ernst)
- update to PrettyTable v3 (#315) (@Maximilian-Stefan-Ernst)
- Convergence, bootstrap, p-values (#316) (@Maximilian-Stefan-Ernst)
- Refactor Sem multi-group support (#317) (@alyst)
- build(deps): bump julia-actions/cache from 2 to 3 (#318) (@dependabot[bot])
- build(deps): bump codecov/codecov-action from 5 to 6 (#319) (@dependabot[bot])
- build(deps): bump actions/github-script from 8 to 9 (#320) (@dependabot[bot])
- build(deps): bump julia-actions/setup-julia from 2 to 3 (#323) (@dependabot[bot])
- build(deps): bump codecov/codecov-action from 6 to 7 (#325) (@dependabot[bot])
- Documentation and bugfixes for 0.5.0 (#329) (@Maximilian-Stefan-Ernst)
- Release 0.5.0 (#330) (@Maximilian-Stefan-Ernst)
- fix macos CI runs (#331) (@Maximilian-Stefan-Ernst)
Closed issues:
- se for WLS and FIML (#57)
- v0.4.1 (#261)
- v0.4.2 (#263)
sem_fit()was deprecated forfit()? (#267)- (in)equality constraints via StenoGraphs specification (#270)
- Status message for converged models (#273)
- Error (#274)
- Numerical precision of model-implied covariance matrix (#276)
- Simulate data from a model (#282)
StenoGraphshas to be loaded manually (#289)