|
| 1 | ++++ |
| 2 | +title = "Causal Inference" |
| 3 | ++++ |
| 4 | + |
| 5 | +# Causal Inference |
| 6 | + |
| 7 | +[Casual Inference](https://thedecisionlab.com/reference-guide/statistics/casual-inference) refers to the theory and practice of quantifying how stochastic variables influence each other. |
| 8 | + |
| 9 | +## Literature |
| 10 | + |
| 11 | +* [Hernán & Robins. Causal Inference: What If](https://miguelhernan.org/whatifbook) with [examples in Julia](https://github.com/jrfiedler/causal_inference_julia_code). |
| 12 | +* [Scott Cunningham. Causal Inference: The Mixtape](https://mixtape.scunning.com/) with [github repo](https://github.com/Mixtape-Sessions). |
| 13 | +* [Nick Huntington-Klein. The Effect](https://theeffectbook.net/) with [homework](https://github.com/NickCH-K/TheEffectAssignments) and [code](https://github.com/NickCH-K/causalbook) in R and python. |
| 14 | +* [Peter Spirtes, Clark Glymour, and Richard Scheines. Causation, Prediction, and Search](https://philarchive.org/archive/SPICPA-2) |
| 15 | + |
| 16 | +## Tutorials |
| 17 | +* [Causal discovery using Julia: A brief introduction, a simulation, and a possible use case](https://towardsdev.com/causal-discovery-using-julia-a-brief-introduction-a-simulation-and-a-possible-use-case-d2f2be2bfc02) |
| 18 | + |
| 19 | +## Discussions |
| 20 | + |
| 21 | +* [Causal inference in Julia 2025?](https://discourse.julialang.org/t/causal-inference-in-julia-2025/126001) |
| 22 | + |
| 23 | +# Packages |
| 24 | + |
| 25 | +## CausalInference.jl |
| 26 | +{{badge CausalInference}} |
| 27 | +> Causal inference, graphical models and structure learning in Julia |
| 28 | +[CausalInference.jl](https://github.com/mschauer/CausalInference.jl) is the oldest and probably the most comprehensive package in Causal Inference. |
| 29 | + |
| 30 | +[Announcement thread](https://discourse.julialang.org/t/ann-causalinference-jl-causal-inference-in-julia/6154) |
| 31 | + |
| 32 | +From the package README: |
| 33 | + |
| 34 | +Julia package for causal inference and analysis, graphical models and structure learning. |
| 35 | + |
| 36 | +This package contains code for the PC algorithm and the extended FCI algorithm, the score based greedy equivalence search (GES) algorithm, the Bayesian Causal Zig-Zag sampler and a function suite for adjustment set search. |
| 37 | + |
| 38 | + |
| 39 | +## CausalTables.jl |
| 40 | +{{badge CausalTables}} |
| 41 | +> A new type of Table to store and simulate data for causal inference in Julia. |
| 42 | +
|
| 43 | +Paper: [CausalTables.jl: Simulating and storing data for statistical causal inference in Julia](https://joss.theoj.org/papers/10.21105/joss.07580) |
| 44 | + |
| 45 | +From the package README: |
| 46 | + |
| 47 | + [CausalTables.jl](https://github.com/salbalkus/CausalTables.jl) provides a common interface for manipulating tabular data for causal inference. While packages like [CausalInference.jl](https://mschauer.github.io/CausalInference.jl/latest/) only focus on causal graphs and discovery algorithms, the `CausalTable` interface provides utility functions to clean and manipulate practical datasets for input into statistical estimators. The simulation capabilities of `CausalTables.jl` are similar to those of probabilistic programming languages like [Turing.jl](https://turing.ml/dev/) or [Gen.jl](https://www.gen.dev/); however, unlike these packages, with `CausalTables.jl` users can extract the true conditional distributions of relevant variables from a dataset in closed-form *after* data has been generated. This makes it easy to extract parameters like ground-truth ("oracle") conditional means or propensity scores, which are often helpful for testing whether an estimator is behaving as intended. |
| 48 | + |
| 49 | +## CausalELM.jl |
| 50 | +{{badge CausalELM}} |
| 51 | +> Taking causal inference to the extreme! |
| 52 | +
|
| 53 | +From the Package README: |
| 54 | + |
| 55 | +CausalELM provides easy-to-use implementations of modern causal inference methods in a lightweight package. While CausalELM implements a variety of estimators, they all have one thing in common—the use of machine learning models to flexibly estimate causal effects. This is where the ELM in CausalELM comes from—the machine learning model underlying all the estimators is an extreme learning machine (ELM). ELMs are a simple neural network that use randomized weights and offer a good tradeoff between learning non-linear dependencies and simplicity. Furthermore, CausalELM implements bagged ensembles of ELMs to reduce the variance resulting from randomized weights. |
| 56 | + |
| 57 | +JuliaCon 2024 presentation: [Causal Machine Learning with CausalELM ](https://www.youtube.com/watch?v=hh_cyj8feu8&t=26s) |
| 58 | + |
| 59 | +## TMLE.jl |
| 60 | +{{badge TMLE}} |
| 61 | +> A Julia implementation of the Targeted Minimum Loss-based Estimation |
| 62 | +
|
| 63 | +From the package README: |
| 64 | + |
| 65 | +[TMLE.jl](https://github.com/TARGENE/TMLE.jl) is a Julia package that implements [Targeted Maximum Likelihood Estimation](https://link.springer.com/book/10.1007/978-1-4419-9782-1) (TMLE), a general framework for causal effect estimation that combines machine learning with principles from semiparametric statistics. TMLE provides doubly robust, efficient, and flexible estimation of causal parameters in observational and experimental studies. |
| 66 | + |
| 67 | +## Turing.jl |
| 68 | +{{badge Turing}} |
| 69 | + |
| 70 | +[Turing.jl](https://github.com/TuringLang/Turing.jl) is a DSL for Bayesian inference. |
| 71 | +It is probably the most complete package for Bayesian inference in Julia. |
| 72 | + |
| 73 | +## Associations.jl |
| 74 | +{{badge Associations}} |
| 75 | +> Algorithms for quantifying associations, independence testing and causal inference from data. |
| 76 | +
|
| 77 | +From the package README: |
| 78 | + |
| 79 | +[Associations.jl]() is a package for quantifying associations, independence testing and causal inference. |
| 80 | + |
| 81 | +**Key features** |
| 82 | + |
| 83 | +- **Association API**: includes measures and their estimators for pairwise, conditional and other forms of |
| 84 | + association from conventional statistics, from dynamical systems theory, and from information theory: partial correlation, distance correlation, (conditional) mutual information, transfer entropy, convergent cross mapping and a lot more! |
| 85 | +- **Independence testing API**, which is automatically compatible with |
| 86 | + every association measure estimator implemented in the package. |
| 87 | +- **Causal (network) inference API** integrating the association measures and independence testing framework. |
| 88 | + |
| 89 | +**Additional features** |
| 90 | + |
| 91 | +Extending on features from [ComplexityMeasures.jl](https://github.com/JuliaDynamics/ComplexityMeasures.jl), |
| 92 | +we also offer |
| 93 | + |
| 94 | +- Discretization API for multiple (multivariate) input datasets. |
| 95 | +- Multivariate counting and probability estimation API. |
| 96 | +- Multivariate information measure API |
| 97 | + |
| 98 | +*Previously, this package was called CausalityTools.jl*. |
| 99 | + |
| 100 | +## RxInfer.jl |
| 101 | +{{badge RxInfer}} |
| 102 | +> Julia package for automated Bayesian inference on a factor graph with reactive message passing |
| 103 | +
|
| 104 | +[RxInfer.jl main page](https://rxinfer.com/) contains lots of examples. |
| 105 | + |
| 106 | + |
| 107 | +# Star History |
| 108 | + |
| 109 | +{{star_history CausalInference CausalTables CausalELM TMLE Turing Associations RxInfer}} |
| 110 | + |
| 111 | +[Turing.jl](https://github.com/TuringLang/Turing.jl) is dominating the graph, so here it is without Turing.jl |
| 112 | + |
| 113 | +{{star_history CausalInference CausalTables CausalELM TMLE Associations RxInfer}} |
| 114 | + |
0 commit comments