Proyectos
Ver en GitHub awesome-causality-algorithms
rguo12/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.
Crecimiento de estrellas medido
- in 24h
- 0
- in 7 days
- +1
- in 15 days
- Recopilando historial
- in 1 month
- Recopilando historial
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
Acerca de
An index of algorithms for learning causality with data
AprendizajeREADME.md
Originalawesome-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 |