pymc.model.core.Model#

class pymc.model.core.Model(*args, **kwargs)[源代码]#

封装模型的变量和似然因子。

模型类可用于创建基于类的模型。要创建基于类的模型,您应该继承自 Model 并在 __init__ 方法中覆盖任意定义(不要忘记首先调用基类 pymc.Model.__init__())。

参数:
名称: str

将用作模型内定义的所有随机变量名称前缀的名称

check_bounds: bool

确保分布的输入参数在有效范围内。如果你的模型是以一种你知道参数只能取有效值的方式构建的,你可以将此设置为 False 以提高速度。如果你的模型包含离散变量,则不应使用此设置。

示例

如何定义一个自定义模型

class CustomModel(Model):
    # 1) override init
    def __init__(self, mean=0, sigma=1, name=''):
        # 2) call super's init first, passing model and name
        # to it name will be prefix for all variables here if
        # no name specified for model there will be no prefix
        super().__init__(name, model)
        # now you are in the context of instance,
        # `modelcontext` will return self you can define
        # variables in several ways note, that all variables
        # will get model's name prefix

        # 3) you can create variables with the register_rv method
        self.register_rv(Normal.dist(mu=mean, sigma=sigma), 'v1', initval=1)
        # this will create variable named like '{name::}v1'
        # and assign attribute 'v1' to instance created
        # variable can be accessed with self.v1 or self['v1']

        # 4) this syntax will also work as we are in the
        # context of instance itself, names are given as usual
        Normal('v2', mu=mean, sigma=sigma)

        # something more complex is allowed, too
        half_cauchy = HalfCauchy('sigma', beta=10, initval=1.)
        Normal('v3', mu=mean, sigma=half_cauchy)

        # Deterministic variables can be used in usual way
        Deterministic('v3_sq', self.v3 ** 2)

        # Potentials too
        Potential('p1', pt.constant(1))

# After defining a class CustomModel you can use it in several
# ways

# I:
#   state the model within a context
with Model() as model:
    CustomModel()
    # arbitrary actions

# II:
#   use new class as entering point in context
with CustomModel() as model:
    Normal('new_normal_var', mu=1, sigma=0)

# III:
#   just get model instance with all that was defined in it
model = CustomModel()

# IV:
#   use many custom models within one context
with Model() as model:
    CustomModel(mean=1, name='first')
    CustomModel(mean=2, name='second')

# variables inside both scopes will be named like `first::*`, `second::*`

方法

Model.__init__([name, coords, check_bounds, ...])

Model.add_coord(name[, values, mutable, length])

在模型中注册一个维度坐标。

Model.add_coords(coords, *[, lengths])

向量化版本的 Model.add_coord

Model.add_named_variable(var[, dims])

将一个随机图变量添加到模型的命名变量中。

Model.check_start_vals(start)

检查MCMC的起始值不会导致相关的对数概率评估为无效值(例如,

Model.compile_d2logp([vars, jacobian])

编译后的对数概率密度海森函数。

Model.compile_dlogp([vars, jacobian])

编译后的对数概率密度梯度函数。

Model.compile_fn(outs, *[, inputs, mode, ...])

编译一个 PyTensor 函数

Model.compile_logp([vars, jacobian, sum])

编译后的对数概率密度函数。

Model.create_value_var(rv_var, transform[, ...])

创建一个 TensorVariable ,它将作为对数似然图中随机变量的“值”使用。

Model.d2logp([vars, jacobian])

模型对数概率的Hessian w.r.t.

Model.debug([point, fn, verbose])

在指定位置调试模型函数。

Model.dlogp([vars, jacobian])

模型对数概率的梯度 w.r.t.

Model.eval_rv_shapes()

评估未转换和已转换的自由变量的形状。

Model.initial_point([random_seed])

计算模型的初始点。

Model.logp([vars, jacobian, sum])

模型的逐元素对数概率。

Model.logp_dlogp_function([grad_vars, tempered])

编译一个计算 logp 和梯度的 PyTensor 函数。

Model.make_obs_var(rv_var, data, dims, ...)

为观察到的随机变量创建一个 TensorVariable

Model.name_for(name)

检查名称是否有前缀,并在需要时添加

Model.name_of(name)

检查名称是否具有前缀并在需要时删除

Model.point_logps([point, round_vals])

计算模型中所有随机变量对 point 的对数概率。

Model.profile(outs, *[, n, point, profile])

编译并分析一个返回 outs 的 PyTensor 函数,该函数以模型变量的值作为字典参数。

Model.register_rv(rv_var, name[, observed, ...])

在模型中注册一个(未)观察到的随机变量。

Model.replace_rvs_by_values(graphs, **kwargs)

在图中克隆并替换随机变量为它们的值变量。

Model.set_data(name, values[, coords])

更改模型中数据变量的值。

Model.set_dim(name, new_length[, coord_values])

更新一个可变维度。

Model.set_initval(rv_var, initval)

为随机变量设置一个初始值(策略)。

Model.shape_from_dims(dims)

Model.to_graphviz(*[, var_names, formatting])

从 PyMC 模型生成一个 graphviz 有向图。

Model.update_start_vals(a, b)

使用 b 更新点 a,而不覆盖现有键。

属性

RV_dims

特定模型变量的维度名称元组。

basic_RVs

模型所依据的随机变量列表(不包括确定性变量)。

cont_vars

continuous_value_vars

模型中的所有连续值变量

coords

模型维度的坐标值。

datalogp

PyTensor 观测变量和潜在项的对数概率标量

dim_lengths

模型中尺寸的符号长度。

disc_vars

discrete_value_vars

模型中的所有离散值变量

initial_values

将变换后的变量映射到初始值占位符。

isroot

model

observedlogp

观察变量的对数概率的 PyTensor 标量

parent

potentiallogp

PyTensor 标量,表示潜在项的对数概率

prefix

root

unobserved_RVs

所有随机变量的列表,包括确定性的变量。

unobserved_value_vars

所有随机变量(包括未转换的投影)的列表,以及作为模型对数似然图输入和输出的确定性变量

value_vars

用作模型对数似然输入的未观测随机变量列表(不包括确定性变量)。

varlogp

PyTensor 未观测随机变量(不包括确定性变量)的对数概率标量。

varlogp_nojac

PyTensor 标量,表示未观察到的随机变量(不包括确定性变量)的对数概率,不包括雅可比项。