awesome-causality-algorithms
An index of algorithms for learning causality with data.
Please cite our survey paper if this index is helpful.
@article{guo2020survey,
title={A survey of learning causality with data: Problems and methods},
author={Guo, Ruocheng and Cheng, Lu and Li, Jundong and Hahn, P Richard and Liu, Huan},
journal={ACM Computing Surveys (CSUR)},
volume={53},
number={4},
pages={1--37},
year={2020},
publisher={ACM New York, NY, USA}
}
Table of Contents
Toolboxes
Name | Paper | Code |
---|---|---|
DoWhy | Amit Sharma and Emre Kiciman. "Tutorial on Causal Inference and Counterfactual Reasoning." In ACM SIGKDD 2018 | Python |
TETRAD toolbox | Ramsey, Joseph D., Kun Zhang, Madelyn Glymour, Ruben Sanchez Romero, Biwei Huang, Imme Ebert-Uphoff, Savini Samarasinghe, Elizabeth A. Barnes, and Clark Glymour. "TETRAD-AToolbox FOR CAUSAL DISCOVERY." | R |
CausalDiscoveryToolbox | Kalainathan, Diviyan, and Olivier Goudet. "Causal Discovery Toolbox: Uncover causal relationships in Python." arXiv preprint arXiv:1903.02278 (2019). | Python |
Uber CausalML | Chen, Huigang, et al. "Causalml: Python package for causal machine learning." arXiv preprint arXiv:2002.11631 (2020). | Python |
JustCause | For evaluation of heterogeneous treatment effect estimators on common reference as well as synthetic data. Underlying thesis | Python |
WhyNot | An experimental sandbox for causal inference and decision making in dynamics. Documentation | Python |
CausalNex | A toolkit for causal reasoning with Bayesian Networks. | Python |
Trustworthy AI | This repository aims to include trustworthy AI related projects from Huawei Noah's Ark Lab. Current projects include:Causal Structure Learning, Causal Disentangled Representation Learning, gCastle (or pyCastle, pCastle). | Python |
Tetrad | Tetrad is a modular, object-oriented program for causal inference. | java |
causal-learn | Causal Discovery for Python. A translation and extension of TETRAD. | Python |
Learning Causal Effects
With i.i.d Data
For Individual-level Treatment Effects (ITEs)
For Average-level Treatment Effects: ATE, ATT or ATC
For Continuous Treatment Effects
Name | Paper | Code |
---|---|---|
Causal Dose-Response Curves / Causal Curves | Kobrosly, R. W., (2020). causal-curve: A Python Causal Inference Package to Estimate Causal Dose-Response Curves. Journal of Open Source Software, 5(52), 2523, https://doi.org/10.21105/joss.02523 | Python |
Vectorized Treatments
Name | Paper | Code |
---|---|---|
Graph Intervention Networks for Causal Effect Estimation | Jean Kaddour, Qi Liu, Yuchen Zhu, Matt J. Kusner, Ricardo Silva. "Graph Intervention Networks for Causal Effect Estimation", arXiv preprint arXiv:2106.01939 (2021). | Python |
Treatment Responder Classification
Name | Paper | Code |
---|---|---|
RespSVM | Kallus, Nathan. "Classifying Treatment Responders Under Causal Effect Monotonicity." arXiv preprint arXiv:1902.05482 (2019) | NA |
Learning Causal Effects as Response Curves
Learning Causal Effects with Multi-cause Data
Transfer Learning for Learning Causal Effects
Variable Selection/Importance for Learning Causal Effects
Name | Paper | Code |
---|---|---|
Variable importance through targeted causal inference | The Github Repo "varimpact" by Alan E. Hubbard and Chris J. Kennedy, University of California, Berkeley | R |
Instrumental Variables
Non-i.i.d Data
Learning Causal Effects from Networked Observational Data
Name | Paper | Code |
---|---|---|
Network Deconfounder | Guo, Ruocheng, Jundong Li, and Huan Liu. "Learning Individual Causal Effects from Networked Observational Data." WSDM 2020. | Python |
Causal Inference with Network Embeddings | Veitch, Victor, Yixin Wang, and David M. Blei. "Using embeddings to correct for unobserved confounding." arXiv preprint arXiv:1902.04114 (2019). | Python |
Learning Causal Effects under Spillover Effect/Interference
Name | Paper | Code |
---|---|---|
Linked Causal Variational Autoencoder (LCVA) | Rakesh, Vineeth, Ruocheng Guo, Raha Moraffah, Nitin Agarwal, and Huan Liu. "Linked Causal Variational Autoencoder for Inferring Paired Spillover Effects." CIKM 2018. | Python |
GNN-based Causal Effect Estimators | Ma, Yunpu, Yuyi Wang, and Volker Tresp. "Causal Inference under Networked Interference." arXiv preprint arXiv:2002.08506 (2020). | NA |
Learning Time Varying/Dependent Causal Effects
Connections to Machine Learning
Recommendation
Learning to Rank
Off-line Policy Evaluation/Optimization
Natural Language Processing
Counterfactual Explanations
Counterfactual Fairness
Reinforcement Learning
Name | Paper | Code |
---|---|---|
Deconfounded RL | Lu, Chaochao, Bernhard Schölkopf, and José Miguel Hernández-Lobato. "Deconfounding reinforcement learning in observational settings." arXiv preprint arXiv:1812.10576 (2018). | Python |
Vansteelandt, Stijn, and Marshall Joffe. "Structural nested models and G-estimation: the partially realized promise." Statistical Science 29, no. 4 (2014): 707-731. | NA | |
Counterfactual-Guided Policy Search (CF-GPS) | Buesing, Lars, Theophane Weber, Yori Zwols, Sebastien Racaniere, Arthur Guez, Jean-Baptiste Lespiau, and Nicolas Heess. "Woulda, Coulda, Shoulda: Counterfactually-Guided Policy Search." arXiv preprint arXiv:1811.06272 (2018). | NA |
Multi-Armed Bandit/Causal Bandit
Invariant Prediction
Name | Paper | Code |
---|---|---|
Deep Global Balancing Regression | Kuang, Kun, Peng Cui, Susan Athey, Ruoxuan Xiong, and Bo Li. "Stable Prediction across Unknown Environments." In Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, pp. 1617-1626. ACM, 2018. | NA |
A Simple Algorithm for Invariant Prediction | Julia |
Causality and GAN
Name | Paper | Code |
---|---|---|
Odena, Augustus, Jacob Buckman, Catherine Olsson, Tom B. Brown, Christopher Olah, Colin Raffel, and Ian Goodfellow. "Is Generator Conditioning Causally Related to GAN Performance?." arXiv preprint arXiv:1802.08768 (2018). | NA | |
Causal GAN | Kocaoglu, Murat, Christopher Snyder, Alexandros G. Dimakis, and Sriram Vishwanath. "CausalGAN: Learning Causal Implicit Generative Models with Adversarial Training." arXiv preprint arXiv:1709.02023 (2017). | Python |
Learning Causal Relations
With i.i.d. Data
Name | Paper | Code |
---|---|---|
IC algorithm | Python | |
PC algorithm | P. Spirtes, C. Glymour, and R. Scheines. Causation, Prediction, and Search. The MIT Press, 2nd edition, 2000. | Python R Julia |
FCI algorithm | P. Spirtes, C. Glymour, and R. Scheines. Causation, Prediction, and Search. The MIT Press, 2nd edition, 2000. | R Julia |
DAGs with NO TEARS | Zheng, Xun, Bryon Aragam, Pradeep K. Ravikumar, and Eric P. Xing. "DAGs with NO TEARS: Continuous optimization for structure learning." NeurIPS 2018. | Numpy, Pytorch |
DAG-GNN | {Yue Yu, Jie Chen, Tian Gao, and Mo Yu. "DAG-GNN: DAG Structure Learning with Graph Neural Networks." ICML 2019. | Pytorch |
Learning IV
Distinguishing Cause from Effect (Bivariate)
Name | Paper | Code |
---|---|---|
BMLiNGAM | S. Shimizu and K. Bollen. Bayesian estimation of causal direction in acyclic structural equation models with individual-specific confounder variables and non-Gaussian distributions. Journal of Machine Learning Research, 15: 2629-2652, 2014. | Python |
Conditional Independence Tests (for Constraint-based Algorithms)
Name | Paper | Code |
---|---|---|
RCIT | R |
Causal Discovery Meets Probabilistic Logic Programming
Name | Paper | Code |
---|---|---|
Causal PSL | Sridhar, Dhanya, Jay Pujara, and Lise Getoor. "Scalable Probabilistic Causal Structure Discovery." In IJCAI, pp. 5112-5118. 2018. | Java |
Learning Causal Relationships with non-i.i.d. Data
Name | Paper | Code |
---|---|---|
TCDF: Temporal Causal Discovery Framework | Nauta, Meike, Doina Bucur, and Christin Seifert. "Causal discovery with attention-based convolutional neural networks." Machine Learning and Knowledge Extraction. | Pytorch |
Scalable Ensemble Causality Discovery
Name | Paper | Code |
---|---|---|
Scalable and Hybrid Ensemble-Based Causality Discovery | Pei Guo, Achuna Ofonedu, Jianwu Wang. "Scalable and Hybrid Ensemble-Based Causality Discovery." In Proceedings of the 2020 IEEE International Conference on Smart Data Services (SMDS), pp. 72-80. | Python |