pymc.model.transform.conditioning.do#

pymc.model.transform.conditioning.do(model, vars_to_interventions, prune_vars=False)[源代码]#

用干预变量替换模型变量。

干预变量在新模型中将显示为 DataDeterministics,这取决于它们是否依赖于其他随机变量。

参数:
模型: PyMC 模型
vars_to_interventions: 变量或名称到 TensorLike 的字典

将模型变量(或名称)映射到干预表达式的字典。干预表达式必须具有与原始模型变量兼容的形状和数据类型。

prune_vars: bool, 默认为 False

是否在干预后修剪未连接到任何观测变量的模型变量。

返回:
new_model: PyMC model

一个独立的 PyMC 模型,其中相关变量被干预表达式替换。所有剩余的变量都被克隆,并且可以通过 new_model[“var_name”] 获取。

示例

import pymc as pm

with pm.Model() as m:
    x = pm.Normal("x", 0, 1)
    y = pm.Normal("y", x, 1)
    z = pm.Normal("z", y + x, 1)

# Dummy posterior, same as calling `pm.sample`
idata_m = az.from_dict({rv.name: [pm.draw(rv, draws=500)] for rv in [x, y, z]})

# Replace `y` by a constant `100.0`
with pm.do(m, {y: 100.0}) as m_do:
    idata_do = pm.sample_posterior_predictive(idata_m, var_names="z")