MLResearchAtOSRAM / cause2e

The cause2e package provides tools for performing an end-to-end causal analysis of your data. Developed by Daniel Grünbaum (@dg46).
https://gitlab.com/causal-inference/working-group/-/wikis/home
MIT License
56 stars 4 forks source link
causal-analysis causal-inference causal-models causal-reasoning causality domain-knowledge dowhy python tetrad

Build Status Coverage License: MIT Linux Windows PyPI - Python Version

Getting started:

The easiest way of learning about cause2e's functionality and starting your own causal analyses is to check out this example notebook, which can be easily adapted to fit the needs of your custom analysis, and its resulting report file. Additional notebooks with examples of more specific functionality are also provided. If you are new to graph-based causal inference, this presentation from CDSM21 might help you out.

Contributing:

Your contributions are more than welcome! If you have an idea for a feature, please open an issue or (even better) implement it and make a pull request.

Overview:

The cause2e package provides tools for performing an end-to-end causal analysis of your data. If you have data and domain knowledge about the data generating process, it allows you to:

For analyzing the whole system at once after learning the causal graph, you can use a single command to

The main contribution of cause2e is the integration of two established causal packages that have currently been separated and cumbersome to combine:

Structured API:

cause2e provides an easy to use API for performing an end-to-end causal analysis without having to worry about fitting together different libraries and data structures for causal discovery and causal reasoning:

Additonally, cause2e offers helper classes for handling all paths to your data and output, representing domain knowledge, as well as bookkeeping, ranking, visualization and validation of the results of a multi-effect analysis.

Documentation:

For a detailed documentation of the package, please refer to mlresearchatosram.github.io/cause2e. The documentation has been generated from Python docstrings via Sphinx.

Outlook:

We are planning to integrate the causal discovery toolbox [3] as a second collection of causal discovery algorithms. In the spirit of end-to-end causal analysis, it would also be desirable to include causal representation learning before the discovery step (e.g. for image data), or causal reinforcement learning after having distilled a valid causal model that delivers interventional distributions.

Installation:

First, install py-causal by following these instructions. If you run into troubles with Java on Windows, check out this comment.

You can then install cause2e from pypi:

pip install cause2e

You can also install it directly from this Github repository to receive the newest version:

pip install dowhy -U
pip install ipython -U
pip install jinja2 -U
pip install pillow -U
pip install pyarrow -U
pip install seaborn -U

pip install git+git://github.com/MLResearchAtOSRAM/cause2e

Afterwards, try to run the minimal example notebook to check that everything works.

If you want to clone the repository into a folder for development on your local machine, please navigate to the folder and run:

git clone https://github.com/MLResearchAtOSRAM/cause2e

Disclaimer:

cause2e is not meant to replace either py-causal or DoWhy, our goal is to make it easier for researchers to string together causal discovery and causal reasoning with these libraries. If you are only interested in causal discovery, it is preferable to directly use py-causal or the TETRAD GUI. If you are only interested in causal reasoning, it is preferable to directly use DoWhy.

Citation:

If you are using cause2e in your work, please cite:

Daniel Grünbaum (2021). cause2e: A Python package for end-to-end causal analysis. https://github.com/MLResearchAtOSRAM/cause2e

References:

[1] Chirayu (Kong) Wongchokprasitti, Harry Hochheiser, Jeremy Espino, Eamonn Maguire, Bryan Andrews, Michael Davis, & Chris Inskip. (2019, December 26). bd2kccd/py-causal v1.2.1 (Version v1.2.1). Zenodo. http://doi.org/10.5281/zenodo.3592985

[2] Amit Sharma, Emre Kiciman, et al. DoWhy: A Python package for causal inference. 2019. https://github.com/microsoft/dowhy

[3] Kalainathan, D., & Goudet, O. (2019). Causal Discovery Toolbox: Uncover causal relationships in Python. arXiv:1903.02278. https://github.com/FenTechSolutions/CausalDiscoveryToolbox