Skip to content
Python functions for Algebraic Equivalence of Linear Structural Equation Models
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Python functions for Algebraic Equivalence of Linear Structural Equation Models


  • contains many useful functions for dealing with linear structural equation models, including:

    • maximum likelihood fitting with RICF;
    • model selection;
    • grouping models based on theoretical or empirical results;
    • outputting (sets of) mixed graphs to .tex format.
  • performs a model selection experiment, demonstrating how some of the functions in might be used.

  • ystruct/* generates the data for the above experiment (originally analysed by Joris Mooij and Jerome Cremers (2015)). The files in ystruct/dai/ come from libDAI:


The theoretical results that this software relies on, as well as the graph pattern notation for succinctly representing sets of mixed graphs, are described in the following paper:

Thijs van Ommen and Joris M. Mooij, Algebraic Equivalence of Linear Structural Equation Models, Proceedings of the 33rd Annual Conference on Uncertainty in Artificial Intelligence (UAI-17), 2017.

If you use this software for a scientific publication, we would appreciate it if you could cite our paper.

Example usage

To get a table of all 4-node acyclic algebraic equivalence classes (as in Appendix B of the UAI 2017 paper):

cd tex
pdflatex table.tex

To repeat the experiments from the paper (just for p=10):

  cd ystruct
  cd experiments_uai2015
  ./ 10
  cd ../..
  python p10_final
You can’t perform that action at this time.