bayespy.nodes.CategoricalMarkovChain

class bayespy.nodes.CategoricalMarkovChain(pi, A, states=None, **kwargs)[source]

Node for categorical Markov chain random variables.

The node models a Markov chain which has a discrete set of K possible states and the next state depends only on the previous state and the state transition probabilities. The graphical model is shown below:

Figure made with TikZ

where \boldsymbol{\pi} contains the probabilities for the initial state and \mathbf{A} is the state transition probability matrix. It is possible to have \mathbf{A} varying in time.

p(x_0, \ldots, x_{N-1}) &= p(x_0) \prod^{N-1}_{n=1} p(x_n|x_{n-1}),

where

p(x_0=k) &= \pi_k, \quad \text{for } k \in \{0,\ldots,K-1\},
\\
p(x_n=j|x_{n-1}=i) &= a_{ij}^{(n-1)} \quad \text{for } n=1,\ldots,N-1,\,
i\in\{1,\ldots,K-1\},\, j\in\{1,\ldots,K-1\}
\\
a_{ij}^{(n)} &= [\mathbf{A}_n]_{ij}

This node can be used to construct hidden Markov models by using Mixture for the emission distribution.

Parameters
piDirichlet-like node or (…,K)-array

\boldsymbol{\pi}, probabilities for the first state. K-dimensional Dirichlet.

ADirichlet-like node or (K,K)-array or (…,1,K,K)-array or (…,N-1,K,K)-array

\mathbf{A}, probabilities for state transitions. K-dimensional Dirichlet with plates (K,) or (…,1,K) or (…,N-1,K).

statesint, optional

N, the length of the chain.

__init__(pi, A, states=None, **kwargs)[source]

Create categorical Markov chain

Methods

__init__(pi, A[, states])

Create categorical Markov chain

add_plate_axis(to_plate)

broadcasting_multiplier(plates, *args)

delete()

Delete this node and the children

get_gradient(rg)

Computes gradient with respect to the natural parameters.

get_mask()

get_moments()

get_parameters()

Return parameters of the VB distribution.

get_pdf_nodes()

get_riemannian_gradient()

Computes the Riemannian/natural gradient.

get_shape(ind)

has_plotter()

Return True if the node has a plotter

initialize_from_parameters(*args)

initialize_from_prior()

initialize_from_random()

Set the variable to a random sample from the current distribution.

initialize_from_value(x, *args)

load(filename)

logpdf(X[, mask])

Compute the log probability density function Q(X) of this node.

lower_bound_contribution([gradient, …])

Compute E[ log p(X|parents) - log q(X) ]

lowerbound()

move_plates(from_plate, to_plate)

observe(x, *args[, mask])

Fix moments, compute f and propagate mask.

pdf(X[, mask])

Compute the probability density function of this node.

plot([fig])

Plot the node distribution using the plotter of the node

random()

Draw a random sample from the distribution.

save(filename)

set_parameters(x)

Set the parameters of the VB distribution.

set_plotter(plotter)

show()

Print the distribution using standard parameterization.

unobserve()

update([annealing])

Attributes

dims

plates

plates_multiplier

Plate multiplier is applied to messages to parents