Intercausal Reasoning in Bayesian Networks

The work for this post is contained in the following Jupyter notebook. Below is a brief introduction of what’s inside.

I’m currently taking a course on probabilistic graphical models in which we algebraically compute conditional probability estimates for simple Bayesian networks given ground-truth probabilities of the component parts. Since this is rather unrealistic in the real world, I sought to explore the same question with observational data instead.

This work contains an example of intercausal reasoning in Bayesian networks. Given the following toy network, where both the “president being in town” and a “car accident on the highway” exert influence over whether a traffic jam occurs, we’d like to compute the following probabilities: 

    \[P(\text{Accident = 1}\ |\ \text{Traffic = 1})\]

    \[P(\text{Accident = 1}\ |\ \text{Traffic = 1}, \text{President = 1})\]

Answering these questions with given, ground-truth probabilities is an exercise in the factorization of graphical models. Conversely, using observational data asks us to first estimate these probabilities themselves – as distributions, ideally – before pressing forward with the final plug-and-play.

Once more, this work can be found in the notebook linked above. The accompanying repository can be found here.

Your thoughts are welcome. Many thanks for reading.


Will Wolf

I'm a Data Scientist passionate about machine learning, Bayesian statistics, Python and Scala. Ultimately, I want to use mathematics to solve human-scale problems that positively impact the lives of others.


Leave a Reply

Your email address will not be published. Required fields are marked *