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.
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