pymc.ICAR#

class pymc.ICAR(name, *args, rng=None, dims=None, initval=None, observed=None, total_size=None, transform=UNSET, **kwargs)[源代码]#

内在的条件自回归先验。它主要用于建模相邻区域之间的协方差。这是 CAR 分布的一个特例,其中 alpha 设置为 1。

对数概率密度函数是

\[f(\phi| W,\sigma) = - \frac{1}{2\sigma^{2}} \sum_{i\sim j} (\phi_{i} - \phi_{j})^2 - \frac{1}{2}*\frac{\sum_{i}{\phi_{i}}}{0.001N}^{2} - \ln{\sqrt{2\pi}} - \ln{0.001N}\]

第一个项表示空间协方差分量。每个 $phi_{i}$ 根据其与每个邻居的平方距离进行惩罚。符号 $isim j$ 表示对 $phi_{i}$ 的所有邻居求和。最后三项是正态对数密度函数,其中均值为零,标准差为 $N * 0.001$(其中 N 是向量 $phi$ 的长度)。这一部分通过求和向量 $phi$ 并根据其与零的距离进行惩罚,施加了零和约束。

参数:
W : ndarrayintndarray of int

表示元素之间邻接关系的对称邻接矩阵,由1和0组成。

sigma : 标量,默认值为1标量,默认值为 1

phi 向量的标准差。在 sigma 上放置先验将导致中心化参数化。在大多数情况下,通过使用默认值并将结果的 phi 乘以 sigma,使用非中心化参数化是更可取的。请参见下面的示例。

zero_sum_stdev : 标量,默认值为 0.001标量,默认值为 0.001

控制零和约束的强度。phi 的总和通常以零为均值,具有较小的标准差。此参数设置均值为零的正态密度函数的标准差。

参考文献

示例

此示例展示了如何在中置和非中置参数化之间切换。

import numpy as np
import pymc as pm

# 4x4 adjacency matrix
# arranged in a square lattice

W = np.array([
    [0,1,0,1],
    [1,0,1,0],
    [0,1,0,1],
    [1,0,1,0]
])

# centered parameterization
with pm.Model():
    sigma = pm.Exponential('sigma', 1)
    phi = pm.ICAR('phi', W=W, sigma=sigma)
    mu = phi

# non-centered parameterization
with pm.Model():
    sigma = pm.Exponential('sigma', 1)
    phi = pm.ICAR('phi', W=W)
    mu = sigma * phi

方法

ICAR.dist(W[, sigma, zero_sum_stdev])

创建一个与 cls 分布相对应的张量变量。