https://github.com/structuralequationmodels/structuralequationmodels.jl
A fast and flexible Structural Equation Modelling Framework
https://github.com/structuralequationmodels/structuralequationmodels.jl
psychometrics regularization statistics structural-equation-modelling structural-equation-models
Last synced: 21 days ago
JSON representation
A fast and flexible Structural Equation Modelling Framework
- Host: GitHub
- URL: https://github.com/structuralequationmodels/structuralequationmodels.jl
- Owner: StructuralEquationModels
- License: mit
- Created: 2019-12-17T15:48:20.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2026-02-20T17:50:57.000Z (21 days ago)
- Last Synced: 2026-02-20T22:14:32.564Z (21 days ago)
- Topics: psychometrics, regularization, statistics, structural-equation-modelling, structural-equation-models
- Language: Julia
- Homepage: https://structuralequationmodels.github.io/StructuralEquationModels.jl/dev/
- Size: 3.91 MB
- Stars: 50
- Watchers: 1
- Forks: 6
- Open Issues: 51
-
Metadata Files:
- Readme: README.md
- Contributing: contributing.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Citation: CITATION.cff
Awesome Lists containing this project
README
#
StructuralEquationModels.jl
| **Documentation** | **Build Status** | Citation |
|:-------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------:|
| [](https://structuralequationmodels.github.io/StructuralEquationModels.jl/) [](https://structuralequationmodels.github.io/StructuralEquationModels.jl/dev/) | [](https://www.repostatus.org/#active) [](https://github.com/StructuralEquationModels/StructuralEquationModels.jl/actions/) [](https://codecov.io/gh/StructuralEquationModels/StructuralEquationModels.jl) | [](https://zenodo.org/badge/latestdoi/228649704) |
> [!NOTE]
> Check out our [preprint](https://doi.org/10.31234/osf.io/zwe8g_v1) on the package!
# What is this Package for?
This is a package for Structural Equation Modeling.
It is still *in development*.
Models you can fit include
- Linear SEM that can be specified in RAM (or LISREL) notation
- ML, GLS and FIML estimation
- Regularized SEM (Ridge, Lasso, L0, ...)
- Multigroup SEM
- Sums of arbitrary loss functions (everything the optimizer can handle).
# What are the merits?
We provide fast objective functions, gradients, and for some cases hessians as well as approximations thereof.
As a user, you can easily define custom loss functions.
For those, you can decide to provide analytical gradients or use finite difference approximation / automatic differentiation.
You can choose to mix and match loss functions natively found in this package and those you provide.
In such cases, you optimize over a sum of different objectives (e.g. ML + Ridge).
This mix and match strategy also applies to gradients, where you may supply analytic gradients or opt for automatic differentiation or mix analytical and automatic differentiation.
# You may consider using this package if:
- you want to extend SEM (e.g. add a new objective function) and need an extensible framework
- you want to extend SEM, and your implementation needs to be fast (because you want to do a simulation, for example)
- you want to fit the same model(s) to many datasets (bootstrapping, simulation studies)
- you are planning a study and would like to do power simulations
The package makes use of
- Symbolics.jl for symbolically precomputing parts of the objective and gradients to generate fast, specialized functions.
- SparseArrays.jl to speed up symbolic computations.
- Optim.jl and NLopt.jl to provide a range of different Optimizers/Linesearches.
- ProximalAlgorithms.jl for regularization.
- FiniteDiff.jl and to provide gradient approximations for user-defined loss functions.
# At the moment, we are still working on:
- optimizing performance for big models (with hundreds of parameters)
# Questions?
If you have questions you may ask them here in the [issues](https://github.com/StructuralEquationModels/StructuralEquationModels.jl/issues/new).
Please observe our [code of conduct](/CODE_OF_CONDUCT.md).