Causal Inference¶
Average Causal Effect¶
Here’s how you may estimate the Average Causal Effect ACE
using Pearl’s do-operator
[Pea88, Pea00, Pea16, Pea18].
In this example, we want to estimate the ACE of drug on recovery where recovery is true.

Z is confounding X and Y.¶
1from pybbn.causality.ace import Ace
2from pybbn.graph.dag import Bbn
3from pybbn.graph.edge import Edge, EdgeType
4from pybbn.graph.node import BbnNode
5from pybbn.graph.variable import Variable
6
7# create a BBN
8gender_probs = [0.49, 0.51]
9drug_probs = [0.23323615160349853, 0.7667638483965015,
10 0.7563025210084033, 0.24369747899159663]
11recovery_probs = [0.31000000000000005, 0.69,
12 0.27, 0.73,
13 0.13, 0.87,
14 0.06999999999999995, 0.93]
15
16X = BbnNode(Variable(1, 'drug', ['false', 'true']), drug_probs)
17Y = BbnNode(Variable(2, 'recovery', ['false', 'true']), recovery_probs)
18Z = BbnNode(Variable(0, 'gender', ['female', 'male']), gender_probs)
19
20bbn = Bbn() \
21 .add_node(X) \
22 .add_node(Y) \
23 .add_node(Z) \
24 .add_edge(Edge(Z, X, EdgeType.DIRECTED)) \
25 .add_edge(Edge(Z, Y, EdgeType.DIRECTED)) \
26 .add_edge(Edge(X, Y, EdgeType.DIRECTED))
27
28# compute the ACE
29ace = Ace(bbn)
30results = ace.get_ace('drug', 'recovery', 'true')
31t = results['true']
32f = results['false']
33average_causal_impact = t - f