Skip to main content

LiNGAM Python Package

Project description

LiNGAM - Discovery of non-gaussian linear causal models

License Read the Docs

LiNGAM is a new method for estimating structural equation models or linear Bayesian networks. It is based on using the non-Gaussianity of the data.

Requirements

  • Python3

  • numpy

  • scipy

  • scikit-learn

  • graphviz

  • statsmodels

  • python-igraph

    Note: If any problems when installing the packages, please refer to this tutorial for the igraph package and to this tutorial for the factor_analyzer package.

  • networkx

  • pandas

  • itertools

  • factor_analyzer

    For LiNA and MDLiNA methods, please make sure that the factor_analyzer package is installed successfully. When employing Confirmatory Factor Analysis to estimate the factor loading matrix $\bar{G}$, for better estimation, we input $G_{sign}$ as well to help initialization. That is, in confirmatory_factor_analyzer.py , we set

loading_init = self.model.loadings * G_sign

​ instead of

loading_init = self.model.loadings

​ Then you may run the code successfully.

Installation

To install lingam package, use pip as follows:

pip install lingam

Usage

import numpy as np
import pandas as pd
import lingam

# To run causal discovery, we create a DirectLiNGAM object and call the fit method.
model = lingam.DirectLiNGAM()
model.fit(X)

# Using the causal_order_ properties, 
# we can see the causal ordering as a result of the causal discovery.
print(model.causal_order_)

# Also, using the adjacency_matrix_ properties, 
# we can see the adjacency matrix as a result of the causal discovery.
print(model.adjacency_matrix_)

Documentation

Tutorial and API reference

Tutorial slides

Examples

We provide several examples of running the LiNGAM algorithm in Jupyter Notebook. lingam/examples

License

This project is licensed under the terms of the MIT license.

Contribution

For guidelines how to contribute to lingam package, take a look at CONTRIBUTING.md.

References

Package

If you find our package useful, please cite the following paper:

  • T. Ikeuchi, M. Ide, Y. Zeng, T. N. Maeda, and S. Shimizu. Python package for causal discovery based on LiNGAM. Journal of Machine Learning Research, 24(14): 1−8, 2023. [PDF]

Basic DAG model

Should you use this package for performing ICA-based LiNGAM algorithm, we kindly request you to cite the following paper:

  • S. Shimizu, P. O. Hoyer, A. Hyvärinen, and A. Kerminen. A linear non-gaussian acyclic model for causal discovery. Journal of Machine Learning Research, 7: 2003--2030, 2006. [PDF]

Should you use this package for performing DirectLiNGAM algorithm, we kindly request you to cite the following two papers:

  • S. Shimizu, T. Inazumi, Y. Sogawa, A. Hyvärinen, Y. Kawahara, T. Washio, P. O. Hoyer and K. Bollen. DirectLiNGAM: A direct method for learning a linear non-Gaussian structural equation model. Journal of Machine Learning Research, 12(Apr): 1225--1248, 2011. [PDF]
  • A. Hyvärinen and S. M. Smith. Pairwise likelihood ratios for estimation of non-Gaussian structural equation models. Journal of Machine Learning Research, 14(Jan): 111--152, 2013. [PDF]

Should you use this package for performing RESIT algorithm, we kindly request you to cite the following paper:

  • J. Peters, J. M. Mooij, D. Janzing, and B. Schölkopf. Causal Discovery with Continuous Additive Noise Models. Journal of Machine Learning Research, 15(58): 2009--2053, 2014. [PDF]

Time series

Should you use this package for performing VAR-LiNGAM, we kindly request you to cite the following paper:

  • A. Hyvärinen, K. Zhang, S. Shimizu, and P. O. Hoyer. Estimation of a structural vector autoregression model using non-Gaussianity. Journal of Machine Learning Research, 11: 1709-1731, 2010. [PDF]

Should you use this package for performing VARMA-LiNGAM, we kindly request you to cite the following paper:

  • Y. Kawahara, S. Shimizu and T. Washio. Analyzing relationships among ARMA processes based on non-Gaussianity of external influences. Neurocomputing, 74(12-13): 2212-2221, 2011. [PDF]

Multiple datasets

Should you use this package for performing DirectLiNGAM for multiple groups, we kindly request you to cite the following paper:

  • S. Shimizu. Joint estimation of linear non-Gaussian acyclic models. Neurocomputing, 81: 104-107, 2012. [PDF]

Should you use this package for performing LiNGAM for longitudinal data, we kindly request you to cite the following paper:

  • K. Kadowaki, S. Shimizu, and T. Washio. Estimation of causal structures in longitudinal data using non-Gaussianity. In Proc. 23rd IEEE International Workshop on Machine Learning for Signal Processing (MLSP2013), pp. 1--6, Southampton, United Kingdom, 2013. [PDF]

Latent confounders and latent factors

Should you use this package for performing BottomUpParceLiNGAM with Algorithm 1 of the paper below except Step 2 for estimating causal orders, we kindly request you to cite the following paper:

  • T. Tashiro, S. Shimizu, A. Hyvärinen, T. Washio. ParceLiNGAM: a causal ordering method robust against latent confounders. Neural computation, 26(1): 57-83, 2014. [PDF]

Should you use this package for performing RCD algorithm, we kindly request you to cite the following paper:

  • T. N. Maeda and S. Shimizu. RCD: Repetitive causal discovery of linear non-Gaussian acyclic models with latent confounders. In Proc. 23rd International Conference on Artificial Intelligence and Statistics (AISTATS2020), Palermo, Sicily, Italy. PMLR 108:735-745, 2020. [PDF]

Should you use this package for performing LiNA algorithm, we kindly request you to cite the following paper:

  • Y. Zeng, S. Shimizu, R. Cai, F. Xie, M. Yamamoto and Z. Hao. Causal Discovery with Multi-Domain LiNGAM for Latent Factors. In Proc. of the Thirtieth International Joint Conference on Artificial Intelligence (IJCAI-21), 2021: 2097--2103. [PDF]

Should you use this package for performing CAM-UV algorithm, we kindly request you to cite the following paper:

  • T. N. Maeda and S. Shimizu. Causal additive models with unobserved variables. In Proc. 37th Conference on Uncertainty in Artificial Intelligence (UAI). PMLR 161:97-106, 2021. [PDF]

Causality and prediction

Should you use this package for performing estimation of intervention effects on prediction, we kindly request you to cite the following paper:

  • P. Blöbaum and S. Shimizu. Estimation of interventional effects of features on prediction. In Proc. 2017 IEEE International Workshop on Machine Learning for Signal Processing (MLSP2017), pp. 1--6, Tokyo, Japan, 2017. [PDF]

Mixed data

Should you use this package for performing LiM algorithm, we kindly request you to cite the following paper:

  • Y. Zeng, S. Shimizu, H. Matsui, F. Sun. Causal discovery for linear mixed data. In Proc. First Conference on Causal Learning and Reasoning (CLeaR2022). PMLR 177, pp. 994-1009, 2022. [PDF]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lingam-1.7.1.tar.gz (75.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lingam-1.7.1-py3-none-any.whl (72.9 kB view details)

Uploaded Python 3

File details

Details for the file lingam-1.7.1.tar.gz.

File metadata

  • Download URL: lingam-1.7.1.tar.gz
  • Upload date:
  • Size: 75.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.12

File hashes

Hashes for lingam-1.7.1.tar.gz
Algorithm Hash digest
SHA256 e751204d940f57a39ec90d0109f669a678532b029b35cd7085636b9d8794c69e
MD5 44b44f2cf535a92a88c13582fdaac24d
BLAKE2b-256 19bf5290df86102e37648e3e8622aeb363ba66572e4de0cb017f2a2bdfb78656

See more details on using hashes here.

File details

Details for the file lingam-1.7.1-py3-none-any.whl.

File metadata

  • Download URL: lingam-1.7.1-py3-none-any.whl
  • Upload date:
  • Size: 72.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.12

File hashes

Hashes for lingam-1.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d2aed4125e362fb046b0729ea35fac73891d5d9abc7a8e3e9ab90f7eb88aef76
MD5 0e0351c0be99615f6c22c7b5b29b04ae
BLAKE2b-256 5992a03ca8867ae3d82033f4343fb709e7e6a9a7252843c6ec322ca542b62d43

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page