Menu:

OPTIONS: Download this file, Download all Python files, Go back

from pyx import *
from pyx.deco import earrow
text.set(mode="latex")
text.preamble(r"\usepackage{times}")
from scipy import log, sqrt, pi, linspace, exp

theta = 0.3
alpha = 0.4
c = (log(theta)) * alpha
muinit = -2 
varinit = 0.8
numden = 7

updatemu = lambda m: c + alpha * m
updatevar = lambda v:  alpha**2 * v + 1

def phi(z, mu, var): 
    return exp(- (z - mu)**2 / (2.0 * var)) / sqrt(2 * pi * var)

gridmin, gridmax = -3.2, 1 
g = graph.graphxy(width=10, x=graph.axis.lin(min=gridmin, max=gridmax))

x_grid = linspace(gridmin, gridmax, 100)
mu, var = muinit, varinit
i = 1
gr = 0.7
step = gr / numden
while i <= numden:
    plotpairs = [(x, phi(x, mu, var)) for x in x_grid]
    g.plot(graph.data.points(plotpairs, 
            x=1, y=2),
            [graph.style.line([color.gray(gr)])])
    mu, var = updatemu(mu), updatevar(var)
    gr -= step
    i += 1

x1, y1 = g.pos(-1.3, 0.1)
x2, y2 = g.pos(-0.8, 0.17)
g.stroke(path.line(x1, y1, x2, y2), [earrow.normal])
g.text(x1-0.1, y1-0.3, r"$x_t \sim N(-2, 0.8)$", [text.halign.right])

g.writePDFfile("normaldensities")