DiscreteMarkovChain#
- class pymc_extras.distributions.DiscreteMarkovChain(*args, steps=None, n_lags=1, **kwargs)[source]#
离散马尔可夫链是一个随机变量序列
\[\{x_t\}_{t=0}^T\]其中转移概率 \(P(x_t | x_{t-1})\) 仅取决于系统在 \(x_{t-1}\) 的状态。
- 参数:
P (tensor) – 状态之间转移概率矩阵。行必须总和为 1。必须提供 P 或 P_logits 之一。
P_logit (tensor, optional) – 转移 logits 矩阵。通过 Softmax 激活转换为概率。必须提供 P 或 P_logits 之一。
steps (tensor, optional) – 马尔可夫链的长度。仅当未提供 state 时才需要。
init_dist (unnamed distribution, optional) –
初始值的向量分布。Unnamed 指的是使用
.dist()
API 创建的分布。分布应具有形状 n_states。如果不是,它将自动调整大小。警告
init_dist 将被克隆,使其独立于作为输入传递的那个。
注释
初始分布将被克隆,使其与作为输入传递的分布不同。
示例
创建一个长度为 100,具有 3 个状态的马尔可夫链。状态数由 P 的形状给出,在本例中为 3。
import pymc as pm import pymc_extras as pmx with pm.Model() as markov_chain: P = pm.Dirichlet("P", a=[1, 1, 1], size=(3,)) init_dist = pm.Categorical.dist(p = np.full(3, 1 / 3)) markov_chain = pmx.DiscreteMarkovChain("markov_chain", P=P, init_dist=init_dist, shape=(100,))
- __init__()#
方法
__init__
()dist
([P, logit_P, steps, init_dist, n_lags])创建一个与 cls 分布对应的张量变量。
rv_op
(P, steps, init_dist, n_lags[, size])