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
|
from matplotlib import rc
rc('font', family='serif', size=10)
rc('text', usetex=True)
import daft
first = 1
second = 2.25
third = 3.5
pgm = daft.PGM([5, 4])
pgm.add_node(daft.Node('source', r"$X_0$", 1, first, observed=True))
pgm.add_node(daft.Node('first', r"$X_1$", 2, first, observed=True))
pgm.add_node(daft.Node('second', r"$X_2$", 3, first, observed=True))
pgm.add_node(daft.Node('last', r"$\cdots$", 4, first,
plot_params={"ec": "none"}))
pgm.add_node(daft.Node('theta', r"$\Theta_{ij}$", 3, second))
pgm.add_node(daft.Node('phi', r"$\phi$", 1, second, fixed=True))
pgm.add_node(daft.Node('mu', r"$\mu$", 2.6, third))
pgm.add_node(daft.Node('sigma', r"$\sigma$", 3.4, third))
pgm.add_edge("source", "first")
pgm.add_edge("first", "second")
pgm.add_edge("second", "last")
pgm.add_edge("phi", "source")
pgm.add_edge("theta", "first")
pgm.add_edge("theta", "second")
pgm.add_edge("theta", "last")
pgm.add_edge("mu", "theta")
pgm.add_edge("sigma", "theta")
pgm.add_plate(daft.Plate([.3, .3, 4.3, 1.2], label=r"$c=1, \cdots, C$"))
pgm.add_plate(daft.Plate([2, 1.7, 2, 1.2], label=r"$N \times N$"))
pgm.render()
pgm.figure.savefig("graphical.pdf")
|