In [1]:
from causalinfo import *
# You only need this if you want to draw pretty pictures of the Networksa
from nxpd import draw, nxpdParams
nxpdParams['show'] = 'ipynb'

In [2]:
switch = Variable("S", 2)
dial = Variable("D", 10)
audio = Variable("A", 10+1) # 10 + silence

In [3]:
def radio(switch, dial, audio):
    if switch == 0:
        audio[0] = 1.0
    else:
        audio[dial+1] = 1.0

In [4]:
r_eq = Equation('Radio', [switch, dial], [audio], radio)

In [5]:
r_eq


Out[5]:
Radio
Output A
Input 0 1 2 3 4 5 6 7 8 9 10
S D
0 0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
4 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
5 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
6 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
7 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
8 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
9 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0
4 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0
5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0
6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0
8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0
9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0

In [6]:
radio_c = CausalGraph([r_eq])

In [7]:
draw(radio_c.full_network)


Out[7]:

In [8]:
radio_dist = JointDist({switch: [.1, .9], dial: [1.0/10] * 10})

In [9]:
radio_dist


Out[9]:
Pr
S D
0 0 0.01
1 0.01
2 0.01
3 0.01
4 0.01
5 0.01
6 0.01
7 0.01
8 0.01
9 0.01
1 0 0.09
1 0.09
2 0.09
3 0.09
4 0.09
5 0.09
6 0.09
7 0.09
8 0.09
9 0.09

In [10]:
radio_c.generate_joint(radio_dist)#.mutual_info(audio, dial)


Out[10]:
Pr
D A S
0 0 0 0.01
1 1 0.09
1 0 0 0.01
2 1 0.09
2 0 0 0.01
3 1 0.09
3 0 0 0.01
4 1 0.09
4 0 0 0.01
5 1 0.09
5 0 0 0.01
6 1 0.09
6 0 0 0.01
7 1 0.09
7 0 0 0.01
8 1 0.09
8 0 0 0.01
9 1 0.09
9 0 0 0.01
10 1 0.09

In [ ]:


In [ ]: