Example #1
0
x = np.empty((N, 4))
f = np.empty((M, N))
y = np.empty((M, N))
x[0] = 10 * np.random.randn(4)
f[:, 0] = np.dot(c, x[0])
y[:, 0] = f[:, 0] + 3 * np.random.randn(M)
for n in range(N - 1):
    x[n + 1] = np.dot(a, x[n]) + [1, 1, 10, 10] * np.random.randn(4)
    f[:, n + 1] = np.dot(c, x[n + 1])
    y[:, n + 1] = f[:, n + 1] + 3 * np.random.randn(M)
from bayespy.utils import random

mask = random.mask(M, N, p=0.2)
Y.observe(y, mask=mask)
import bayespy.plot as bpplt

X.set_plotter(bpplt.FunctionPlotter(center=True, axis=-2))
A.set_plotter(bpplt.HintonPlotter())
C.set_plotter(bpplt.HintonPlotter())
tau.set_plotter(bpplt.PDFPlotter(np.linspace(0.02, 0.5, num=1000)))
Q.update(repeat=10)
from bayespy.inference.vmp import transformations

rotC = transformations.RotateGaussianARD(C, gamma)
rotA = transformations.RotateGaussianARD(A, alpha)
rotX = transformations.RotateGaussianMarkovChain(X, rotA)
R = transformations.RotationOptimizer(rotX, rotC, D)
Q.callback = R.rotate
Q.update(repeat=1000)
Q.plot(X, A, C, tau)
bpplt.pyplot.show()