プロジェクトawesome-causality-algorithms
rguo12/awesome-causality-algorithms has 3,302 GitHub stars and 477 forks. GitHot measured 0 stars in 24 hours and +1 in 7 days. Last checked 2026-11-14 13:23 UTC. Last push 2026-10-28.
計測したスター増加
- 24時間
- 0
- 7日間
- +1
- 15日間
- 履歴を収集中
- 1か月
- 履歴を収集中
期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。
概要
An index of algorithms for learning causality with data
学習README.md
オリジナルawesome-causality-algorithms 
An index of algorithms in
- machine learning for causal inference: solves causal inference problems
- causal machine learning: solves ML problems
Reproducibility is important! We will remove those methods without open-source code unless it is a survey/review paper.
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
Contributions are welcome, see CONTRIBUTING.md.
Toolboxes
Comprehensive
| Name | Code | Comment |
|---|---|---|
| causal-learn | Python | Causal Discovery, Causal Representation Learning, Statistical Tests. |
| Trustworthy AI | Python | Causal Structure Learning, Causal Disentangled Representation Learning, gCastle (or pyCastle, pCastle). |
| YLearn | Python | Python package for causal discovery, causal effect identification/estimation, counterfactual inference, policy learning, etc. |
Treatment Effect Estimation / Uplift Modeling
| Name | Paper/Documentation | Venue | Code | Comment |
|---|---|---|---|---|
| DoWhy | Tutorial on Causal Inference and Counterfactual Reasoning | KDD 2018 | Python | Python library for causal inference that supports explicit modeling and testing of causal assumptions. |
| EconML | Causal Inference and Machine Learning in Practice with EconML and CausalML | KDD 2021 | Python | Python package that applies the power of machine learning techniques to estimate individualized causal responses from observational or experimental data. |
| CausalML | Causalml: Python package for causal machine learning | arXiv | Python | Uplift modeling and causal inference with machine learning algorithms |
| JustCause | Underlying thesis | NA | Python | For evaluation of heterogeneous treatment effect estimators on common reference as well as synthetic data. |
| WhyNot | Documentation | NA | Python | An experimental sandbox for causal inference and decision making in dynamics. |
| scikit-uplift | Documentation and User guide for uplift modeling | NA | Python | Uplift modeling in scikit-learn style in python. |
| DoubleML | Double/debiased machine learning for treatment and structural parameters | Econometrics Journal 2018 | Python | Double machine learning framework for causal parameters; also available in R. |
| CausalPy | NA | NA | Python | Bayesian and quasi-experimental causal inference (synthetic control, DiD, RDD, IV) built on PyMC. |
Causal Discovery
| Name | Paper | Venue | Code | Comment |
|---|---|---|---|---|
| Bench Press | Benchpress: a scalable and versatile workflow for benchmarking structure learning algorithms for graphical models — Rios et al. | arXiv 2021 | Code | Reproducible and scalable execution and benchmarks of 41 structure learning algorithms supporting multiple language |
| causal-learn | Causal-learn: Causal Discovery in Python — Zheng et al. | JMLR 2024 | Python | Causal Discovery, Causal Representation Learning, Statistical Tests. |
| TETRAD R/Java | TETRAD: A Toolbox for Causal Discovery — Ramsey et al. | CI 2018 | R/Java | Causal Discovery Toolbox from CMU |
| Causaldag | NA | NA | Code | Python package for the creation, manipulation, and learning of Causal DAGs |
| CausalNex | NA | NA | Python | A toolkit for causal reasoning with Bayesian Networks. |
| CausalDiscoveryToolbox | Causal Discovery Toolbox: Uncover causal relationships in Python — Kalainathan and Goudet | arXiv 2019 | Python | |
| pgmpy | NA | NA | Python | Probabilistic graphical models, structure learning and causal inference. |
| Tigramite | NA | NA | Python | Causal discovery and inference for time series (PCMCI and variants). |
| DoDiscover | NA | NA | Python | PyWhy library for causal discovery, including with latent confounders. |
| Causica | NA | NA | Python | Deep end-to-end causal inference (DECI) and related models from Microsoft. |
| LiNGAM | NA | NA | Python | Implementations of the LiNGAM family of non-Gaussian causal discovery methods. |
| Causal Chambers | Causal chambers as a real-world physical testbed for AI methodology — Gamella et al. | Nature Machine Intelligence 2025 | Python | Real-world datasets with interventions and validated ground-truth graphs from two physical devices; the Python package loads the data and graphs and includes simulators. |
| causal-automata | NA | NA | Python | A relatively fast, GPU-native causal discovery and DAG structure learning package in JAX/NumPy via synchronous cellular automata and a 1D topological elevation field. |
Root Cause Analysis
| Name | Paper | Venue | Code | Comments |
|---|---|---|---|---|
| Chaos Genius | NA | NA | Python | ML powered analytics engine for outlier/anomaly detection and root cause analysis. |
Causal Effect Estimation
Survey Papers
| Name | Paper | Venue |
|---|---|---|
| Yao et al. | A survey on causal inference — Yao et al. | TKDD |
With i.i.d Data
Individual Treatment Effect (ITE) / Conditional Average Treatment Effect (CATE)
Deep Learning based methods
Classic Methods
| Name | Paper | Venue | Code |
|---|
Tree based Methods
| Name | Paper | Venue | Code |
|---|---|---|---|
| Causal Forest | Estimation and inference of heterogeneous treatment effects using random forests — Wager and Athey | JASA 2017 | R, Python |
| Causal MARS, Causal Boosting, Pollinated Transformed Outcome Forests | Some methods for heterogeneous treatment effect estimation in high-dimensions — Powers et al. | arXiv 2017 | R, R |
| Bayesian Additive Regression Trees (BART) | Bayesian nonparametric modeling for causal inference — Hill | JCGS 2011 | Python |
Meta Learner
| Name | Paper | Venue | Code |
|---|---|---|---|
| X-learner | Metalearners for estimating heterogeneous treatment effects using machine learning — Künzel et al. | PNAS 2019 | R, R |
| R-learner | Quasi-oracle estimation of heterogeneous treatment effects — Nie and Wager | Biometrika 2021 | R |
Average Treatment Effect (including ATT and ATC)
Instrumental Variable (IV)
| Name | Paper | Venue | Code |
|---|---|---|---|
| DeepIV | Deep iv: A flexible approach for counterfactual prediction — Hartford et al. | ICML 2017 | Python |
| PDSLasso | PDSLASSO: Stata module for post-selection and post-regularization OLS or IV estimation and inference — Ahrens et al. | SSC 2018 | STATA |
Dose-Response Curve (Continuous Treatment)
| Name | Paper | Venue | Code |
|---|---|---|---|
| Causal Dose-Response Curves / Causal Curves | causal-curve: A Python Causal Inference Package to Estimate Causal Dose-Response Curves — Kobrosly | JOSS 2020 | Python |
| Dose response networks (DRNets) | Learning Counterfactual Representations for Estimating Individual Dose-Response Curves — Schwab et al. | arXiv 2019 | Python |
Vectorized Treatments
| Name | Paper | Venue | Code |
|---|---|---|---|
| Causal Effect Inference for Structured Treatments | Causal Effect Inference for Structured Treatments — Kaddour et al. | NeurIPS 2021 | Python |
Multiple Causes
| Name | Paper | Venue | Code |
|---|---|---|---|
| Deconfounder | The blessings of multiple causes — Wang and Blei | arXiv 2018 | Python |
Multiple Outcomes
| Name | Paper | Venue | Code |
|---|---|---|---|
| Multiple Responses in Uplift Models | Estimating and Visualizing Business Tradeoffs in Uplift Models — Weiss | Blog | Python |
Difference-in-Differences / Regression Discontinuity
| Name | Paper | Venue | Code |
|---|---|---|---|
| Staggered Difference-in-Differences | Difference-in-differences with multiple time periods — Callaway and Sant'Anna | J. Econometrics 2021 | R |
| Regression Discontinuity (rdrobust) | Robust nonparametric confidence intervals for regression-discontinuity designs — Calonico et al. | Econometrica 2014 | R/Python/Stata |
Mediation Analysis
| Name | Paper | Venue | Code |
|---|---|---|---|
| mediation | A general approach to causal mediation analysis — Imai et al. | Psychological Methods 2010 | R |
Sensitivity Analysis
| Name | Paper | Venue | Code |
|---|---|---|---|
| sensemakr | Making sense of sensitivity: extending omitted variable bias — Cinelli and Hazlett | JRSS-B 2020 | R |
Non-i.i.d Data
Panel Data / Time Series
Network Data (with or without Interference)
| Name | Paper | Venue | Code |
|---|---|---|---|
| Network Deconfounder | Learning Individual Causal Effects from Networked Observational Data — Guo et al. | WSDM 2020 | Python |
| Causal Inference with Network Embeddings | Using embeddings to correct for unobserved confounding — Veitch et al. | arXiv 2019 | Python |
| Linked Causal Variational Autoencoder (LCVA) | Linked Causal Variational Autoencoder for Inferring Paired Spillover Effects — Rakesh et al. | CIKM 2018 | Python |
| Method-of-moments Estimators | Causal Inference under Network Interference with Noise — Li et al. | arXiv 2021 | Code |
Causal Machine Learning
Surveys
| Name | Paper | Venue | Code |
|---|---|---|---|
| Causal ML Survey | Causal Machine Learning: A Survey and Open Problems — Kaddour et al. | arXiv 2022 | NA |
OoD Generalization
| Name | Paper | Venue | Code |
|---|---|---|---|
| DomainBed | In Search of Lost Domain Generalization — Gulrajani and Lopez-Paz | ICLR 2020 | Code |
| WILDS | Wilds: A benchmark of in-the-wild distribution shifts — Koh et al. | ICML 2021 | Code |
| IBM OoD | Repository for theory and methods for Out-of-Distribution (OoD) generalization by IBM Research | NA | Code |
| OoD Bench | Ood-bench: Benchmarking and understanding out-of-distribution generalization datasets and algorithms — Ye et al. | arXiv 2021 | Code |
| BEDS-Bench | BEDS-Bench: Behavior of EHR-models under Distributional Shift--A Benchmark — Avati et al. | arXiv 2021 | Code |
| Survey THU | Towards out-of-distribution generalization: A survey — Shen et al. | arXiv 2021 | NA |
Graph OoD Generalization
| Name | Paper | Venue | Code |
|---|---|---|---|
| CIGA | Learning Causally Invariant Representations for Out-of-Distribution Generalization on Graphs — Chen et al. | NeurIPS 2022 | Code |
| Survey THU | Out-of-distribution generalization on graphs: A survey — Li et al. | arXiv 2022 | NA |
Recommendation Systems
Inverse Propensity Scoring / Doubly Robust
| Name | Paper | Venue | Code |
|---|---|---|---|
| Top-K Off-policy Correction | Top-k off-policy correction for a REINFORCE recommender system — Chen et al. | WSDM 2019 | Python |
| Unbiased Offline Recommender Learning | Unbiased Recommender Learning from Missing-Not-At-Random Implicit Feedback — Saito et al. | WSDM 2020 | Python |
| Unbiased Offline Recommender Evaluation | Unbiased offline recommender evaluation for missing-not-at-random implicit feedback — Yang et al. | RecSys 2018 | Python |
| IPS Estimator | Recommendations as treatments: Debiasing learning and evaluation — Schnabel et al. | ICML 2016 | Python |
Hidden Confounding
| Name | Paper | Venue | Code |
|---|---|---|---|
| Deconfounded Recsys | Causal Inference for Recommender Systems — Wang et al. | RecSys 2020 | Python |
Domain Adaptation
| Name | Paper | Venue | Code |
|---|---|---|---|
| Causal Embedding for Recommendation | Causal embeddings for recommendation — Bonner and Vasile | RecSys 2018 | Python |
| Domain Adversarial Matrix Factorization | Towards Resolving Propensity Contradiction in Offline Recommender Learning — Saito and Nomura | IJCAI 2022 | Code |
Disentanglement
| Name | Paper | Venue | Code |
|---|---|---|---|
| Causal Embedding for User Interest and Conformity | Disentangling User Interest and Conformity for Recommendation with Causal Embedding — Zheng et al. | WWW 2021 | Python |
Learning to Rank
| Name | Paper | Venue | Code |
|---|---|---|---|
| Policy-aware Estimator | Policy-aware unbiased learning to rank for top-k rankings — Oosterhuis and de Rijke | SIGIR 2020 | Python |
| Heckman^{rank} | Correcting for Selection Bias in Learning-to-rank Systems — Ovaisi et al. | arXiv 2020 | Code |
| Unbiased LambdaMart | Unbiased LambdaMART: An Unbiased Pairwise Learning-to-Rank Algorithm — Hu et al. | WWW 2019 | Code |
| IPW_rank and the Dual Learning Algorithm | Unbiased Learning to Rank with Unbiased Propensity Estimation — Ai et al. | SIGIR 2018 | Python |
| Propensity SVM-rank | Unbiased learning-to-rank with biased feedback — Joachims et al. | WSDM 2017 | Python |
Off-line Policy Evaluation/Optimization (for Contextual Bandit or RL)
| Name | Paper | Venue | Code |
|---|---|---|---|
| Optimal Kernel Balancing | Policy Evaluation with Latent Confounders via Optimal Balance — Bennett and Kallus | arXiv 2019 | Python |
| BanditNet | Deep learning with logged bandit feedback — Joachims et al. | ICLR 2018 | Python |
| Counterfactual Risk Minimization (POEM) | Counterfactual risk minimization: Learning from logged bandit feedback — Swaminathan and Joachims | ICML 2015 | Python |
| Self Normalized Estimator | The self-normalized estimator for counterfactual learning — Swaminathan and Joachims | NeurIPS 2015 | Python |
| Open Bandit Pipeline | Open Bandit Dataset and Pipeline: Towards Realistic and Reproducible Off-Policy Evaluation — Saito et al. | NeurIPS 2021 | Python |
Natural Language Processing
| Name | Paper | Venue | Code |
|---|---|---|---|
| A Review of Using Text to Remove Confounding from Causal Estimates | Text and Causal Inference: A Review of Using Text to Remove Confounding from Causal Estimates — Keith et al. | ACL 2020 | NA |
| Causal Analysis with Lexicons | Deconfounded lexicon induction for interpretable social science — Pryzant et al. | NAACL 2018 | Python |
| Causal Text Embeddings | Using Text Embeddings for Causal Inference — Veitch et al. | arXiv 2019 | Python |
| Handling Missing/Noisy Treatment | Challenges of Using Text Classifiers for Causal Inference — Wood-Doughty et al. | EMNLP 2018 | Python |
| Causal Inferences Using Texts | How to make causal inferences using texts — Egami et al. | arXiv 2018 | NA |
Counterfactual Explanations
| Paper | Venue | Code |
|---|---|---|
| Explaining machine learning classifiers through diverse counterfactual explanations — Mothilal et al. | arXiv 2019 | Python |
| Efficient search for diverse coherent explanations — Russell | FAccT 2019 | Python |
| Counterfactual explanations without opening the black box: Automated decisions and the GDPR — Wachter et al. | Harvard JL&T 2017 |
Counterfactual Fairness
| Paper | Venue | Code |
|---|---|---|
| Counterfactual fairness — Kusner et al. | NeurIPS 2017 | Python |
| Pc-fairness: A unified framework for measuring causality-based fairness — Wu et al. | NeurIPS 2019 | Code |
| Path-specific counterfactual fairness — Chiappa | AAAI 2019 | Code |
| Counterfactual fairness in text classification through robustness — Garg et al. | AIES 2019 | Code |
Reinforcement Learning
| Name | Paper | Venue | Code |
|---|---|---|---|
| Deconfounded RL | Deconfounding reinforcement learning in observational settings — Lu et al. | arXiv 2018 | Python |
| Structural Nested Models / G-estimation | Structural nested models and G-estimation: the partially realized promise — Vansteelandt and Joffe | Statistical Science 2014 | NA |
| Counterfactual-Guided Policy Search (CF-GPS) | Woulda, Coulda, Shoulda: Counterfactually-Guided Policy Search — Buesing et al. | arXiv 2018 | NA |
Multi-Armed Bandit/Causal Bandit
| Name | Paper | Venue | Code |
|---|---|---|---|
| Causal Bandits | Causal bandits: Learning good interventions via causal inference — Lattimore et al. | NeurIPS 2016 | NA |
| Offline+MAB | Combining Offline Causal Inference and Online Bandit Learning for Data Driven Decisions — Ye et al. | arXiv 2020 | NA |
| B-kl-UCB, B-TS | Transfer learning in multi-armed bandit: a causal approach — Zhang and Bareinboim | AAMAS 2017 | NA |
| Incremental Model | Contextual Multi-Armed Bandits for Causal Marketing — Sawant et al. | arXiv 2018 | NA |
Large Language Models
| Name | Paper | Venue | Code |
|---|---|---|---|
| PyWhy-LLM | Causal reasoning and large language models: Opening a new frontier for causality — Kıcıman et al. | arXiv 2023 | Python |
Causal Discovery
for i.i.d. Data
Classic Methods
| Name | Paper | Venue | Code |
|---|---|---|---|
| IC algorithm | A theory of inferred causation — Pearl and Verma | KR 1991 | Python |
| PC algorithm | Causation, Prediction, and Search — Spirtes et al. | Book 2000 | Python R Julia |
| FCI algorithm | Causation, Prediction, and Search — Spirtes et al. | Book 2000 | R Julia |
Continuous Optimization
| Paper | Venue | Code |
|---|---|---|
| DAGs with NO TEARS: Continuous optimization for structure learning — Zheng et al. | NeurIPS 2018 | Code |
| DAG-GNN: DAG Structure Learning with Graph Neural Networks — Yu et al. | ICML 2019 | Code |
| Learning Sparse Nonparametric DAGs — Zheng et al. | AISTATS 2020 | Code |
| Amortized Inference for Causal Structure Learning — Lorch et al. | NeurIPS 2022 | Code |
| DAGMA: Learning DAGs via M-matrices and a Log-Determinant Acyclicity Characterization — Bello et al. | NeurIPS 2022 | Code |
| Deep End-to-end Causal Inference (DECI) — Geffner et al. | arXiv 2022 | Code |
Learning IV
| Name | Paper | Venue | Code |
|---|---|---|---|
| Learning IV | Learning instrumental variables with structural and non-gaussianity assumptions — Silva and Shimizu | JMLR 2017 | Code |
Distinguishing Cause from Effect (Bivariate)
| Name | Paper | Venue | Code |
|---|---|---|---|
| BMLiNGAM | Bayesian estimation of causal direction in acyclic structural equation models with individual-specific confounder variables and non-Gaussian distributions — Shimizu and Bollen | JMLR 2014 | Python |
| Sloppy | Identifiability of Cause and Effect using Regularized Regression — Marx and Vreeken | KDD 2019 | R |
| RECI | Cause-effect inference by comparing regression errors — Blöbaum et al. | AISTATS 2018 | in CausalDiscoveryToolbox |
| bQCD | Distinguishing cause from effect using quantiles: Bivariate quantile causal discovery — Tagasovska et al. | ICML 2020 | Code |
| CGNN | Learning functional causal models with generative neural networks — Goudet et al. | Springer 2018 | Code |
Conditional Independence Tests (for Constraint-based Algorithms)
| Name | Paper | Venue | Code |
|---|---|---|---|
| RCIT | Approximate kernel-based conditional independence tests for fast non-parametric causal discovery — Strobl et al. | J. Causal Inference 2019 | R |
Causal Discovery with Probabilistic Logic Programming
| Name | Paper | Venue | Code |
|---|---|---|---|
| Causal PSL | Scalable Probabilistic Causal Structure Discovery — Sridhar et al. | IJCAI 2018 | Java |
Scalable Ensemble Causal Discovery
| Name | Paper | Venue | Code |
|---|---|---|---|
| Scalable and Hybrid Ensemble-Based Causality Discovery | Scalable and Hybrid Ensemble-Based Causality Discovery — Guo et al. | SMDS 2020 | Python |
with Temporal Data
| Name | Paper | Venue | Code |
|---|---|---|---|
| TCDF: Temporal Causal Discovery Framework | Causal discovery with attention-based convolutional neural networks — Nauta et al. | MAKE 2019 | Pytorch |
| PCMCI | Detecting and quantifying causal associations in large nonlinear time series datasets — Runge et al. | Science Advances 2019 | Python |