Author: Aymen Merrouche and Pierre-Henri Wuillemin.

**Do-caclculus**

#### This notebook follows the examples from "The Book Of Why" (Pearl, 2018) chapter 7 page 213.¶

In [1]:
from IPython.display import display, Math, Latex,HTML

import pyAgrum as gum
import pyAgrum.lib.notebook as gnb
gnb.forDarkTheme()

import pyAgrum.causal as csl
import pyAgrum.causal.notebook as cslnb

import os


### We create the causal diagram:¶

The corresponding causal diagram is the following:

We're facing the following situation and we want to measure the causal effect of $X$ on $Y$:

In [2]:
fd = gum.fastBN("w->z->x->y;w->x;w->y")
fd

Out[2]:

We suspect the presence of some unmeasured confounders, that could explain the correlation between $W$ and $X$ and between $W$ and $Y$:

In [3]:
fdModele = csl.CausalModel(fd, [("u1", ["w","x"]),("u2", ["w","y"])],False) #(<latent variable name>, <list of affected variables’ ids>).
fdModele

Out[3]:

### Even with two umeausred confounders :¶

• We can measure the causal effect of $Z$ on $Y$ using the back-door adjustment:
In [4]:
print(" + Back-door doing Z on Y :"+str(fdModele.backDoor("z","y")))

 + Back-door doing Z on Y :['w']

• We can measure the causal effect of $W$ on $X$ using the front-door formula:
In [5]:
print(" + Front-door doing W on X :"+str(fdModele.frontDoor("w","x")))

 + Front-door doing W on X :['z']

• In order to measure the causal effect of $X$ on $Y$, we can use neither the back-door adjustment nor the front-door formula:
In [6]:
print(" + Backdoor doing X on Y :"+str(fdModele.backDoor("x","y")))
print(" + Frontdoor doing X on Y :"+str(fdModele.frontDoor("x","y")))

 + Backdoor doing X on Y :None
+ Frontdoor doing X on Y :None

• In this case, the only way to measure the causal effect of $X$ on $Y$ is to use the do-calculus:
In [7]:
cslnb.showCausalImpact(fdModele,on="y",doing="x")

$$$$P( y \mid \hookrightarrow\mkern-6.5mux) = \frac {\sum_{w}{P\left(w\right) \cdot P\left(y\mid w,x,z\right) \cdot P\left(x\mid w,z\right)}}{\sum_{w,y'}{P\left(w\right) \cdot P\left(y'\mid w,x,z\right) \cdot P\left(x\mid w,z\right)}}$$$$
y
z
x
0
1
0
0
0.13460.8654
1
0.22730.7727
1
0
0.09170.9083
1
0.24110.7589
Causal Model
Explanation : Do-calculus computations
Impact : $P( y \mid \hookrightarrow\mkern-6.5mux)$
In [ ]: