-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathpgm.py
66 lines (62 loc) · 2.38 KB
/
pgm.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from matplotlib import rc
import daft
rc("font", family="serif", size=12)
rc("text", usetex=True)
pgm = daft.PGM([3.6, 4.1], observed_style="inner")
pgm.add_node(daft.Node("xy", r"$x,y$", 1.95, 0.4, observed=True))
pgm.add_node(daft.Node("M", r"$M$", 2.9, 0.4, fixed=True))
pgm.add_node(daft.Node("eta", r"$\eta$", 2.9, 1.2))
pgm.add_node(daft.Node("xi", r"$\xi$", 1.95, 1.2))
pgm.add_node(daft.Node("G", r"$G$", 1, 1.2))
pgm.add_node(daft.Node("pi", r"$\pi$", 0.4, 2.1))
pgm.add_node(daft.Node("mu", r"$\mu$", 1, 2.3))
pgm.add_node(daft.Node("Tau", r"$T$", 1.6, 2.3))
pgm.add_node(daft.Node("alphabet", r"$\alpha,\beta$", 2.6, 2.3))
pgm.add_node(daft.Node("Sigma", r"$\Sigma$", 3.2, 2.3))
pgm.add_node(daft.Node("mu0", r"$\mu_0$", 0.7, 3.2))
pgm.add_node(daft.Node("U", r"$U$", 1.3, 3.2))
pgm.add_node(daft.Node("W", r"$W$", 1.8, 3.8))
pgm.add_plate(daft.Plate([0.6, 0.1, 2.7, 1.55], label=r"$i$"))
pgm.add_plate(daft.Plate([0.7, 1.8, 1.2, 1], label=r"$k$"))
pgm.add_edge("xi", "xy")
pgm.add_edge("M", "xy")
pgm.add_edge("eta", "xy")
pgm.add_edge("pi", "G")
pgm.add_edge("G", "xi")
pgm.add_edge("mu", "xi")
pgm.add_edge("Tau", "xi")
pgm.add_edge("mu0", "mu")
pgm.add_edge("U", "mu")
pgm.add_edge("W", "U")
pgm.add_edge("W", "Tau")
pgm.add_edge("alphabet", "eta")
pgm.add_edge("Sigma", "eta")
pgm.add_edge("xi", "eta")
pgm.render()
pgm.figure.savefig("pgm_mix.png", dpi=150)
pgm = daft.PGM([3.6, 4.1], observed_style="inner")
pgm.add_node(daft.Node("xy", r"$x,y$", 1.95, 0.4, observed=True))
pgm.add_node(daft.Node("M", r"$M$", 2.9, 0.4, fixed=True))
pgm.add_node(daft.Node("eta", r"$\eta$", 2.9, 1.2))
pgm.add_node(daft.Node("xi", r"$\xi$", 1, 1.2))
pgm.add_node(daft.Node("P", r"$P(\xi)$", 1, 2.1))
pgm.add_node(daft.Node("alphabet", r"$\alpha,\beta$", 2.6, 2.3))
pgm.add_node(daft.Node("Sigma", r"$\Sigma$", 3.2, 2.3))
pgm.add_node(daft.Node("kappa", r"$\kappa$", 0.7, 2.9))
pgm.add_node(daft.Node("P0", r"$P_0$", 1.3, 2.9))
pgm.add_node(daft.Node("mu", r"$\mu$", 1, 3.7))
pgm.add_node(daft.Node("Tau", r"$T$", 1.6, 3.7))
pgm.add_plate(daft.Plate([0.6, 0.1, 2.7, 1.55], label=r"$i$"))
pgm.add_edge("xi", "xy")
pgm.add_edge("M", "xy")
pgm.add_edge("eta", "xy")
pgm.add_edge("P", "xi")
pgm.add_edge("P0", "P")
pgm.add_edge("kappa", "P")
pgm.add_edge("mu", "P0")
pgm.add_edge("Tau", "P0")
pgm.add_edge("alphabet", "eta")
pgm.add_edge("Sigma", "eta")
pgm.add_edge("xi", "eta")
pgm.render()
pgm.figure.savefig("pgm_dp.png", dpi=150)