pymc.logprob.conditional_logp#

pymc.logprob.conditional_logp(rv_values, warn_rvs=None, ir_rewriter=None, extra_rewrites=None, **kwargs)[源代码]#

创建一个变量与条件对数概率之间的映射,使得它们的和为其联合对数概率。

rv_values 字典指定了一个由随机变量对及其相应的测度空间输入参数定义的联合概率图

例如,考虑以下内容

import pytensor.tensor as pt

sigma2_rv = pt.random.invgamma(0.5, 0.5)
Y_rv = pt.random.normal(0, pt.sqrt(sigma2_rv))

Y_rv 的这个图等价于以下层次模型:

\[\begin{split}\sigma^2 \sim& \operatorname{InvGamma}(0.5, 0.5) \\ Y \sim& \operatorname{N}(0, \sigma^2)\end{split}\]

如果我们为 Y_rv 创建一个值变量,即 y_vv = pt.scalar("y"),那么 conditional_logp({Y_rv: y_vv}) 的图等价于条件对数概率 \(\log p_{Y \mid \sigma^2}(y \mid s^2)\),其中 sigma2_rv 是随机的。

如果我们为 sigma2_rv 指定一个值变量,即 s2_vv = pt.scalar("s2"),那么 conditional_logp({Y_rv: y_vv, sigma2_rv: s2_vv}) 将产生这两个变量的条件对数概率。这两个项的和给出了它们的联合对数概率。

\[\log p_{Y, \sigma^2}(y, s^2) = \log p_{Y \mid \sigma^2}(y \mid s^2) + \log p_{\sigma^2}(s^2)\]
参数:
rv_values: dict

一个变量字典,将随机元素(例如 RandomVariable)映射到表示其在对数概率中值的符号 Variable

warn_rvs : 布尔值,默认值 Truebool, 默认 python:True

True 时,如果在 logp 图中发现 RandomVariable 且在 rv_values 中未指定相应的值变量,则会发出警告。

ir_rewriter

重写器,生成可测量变量的中间表示。

extra_rewrites

要应用的额外重写(例如,重新参数化、变换等)

返回:
values_to_logps: dict

一个 dict ,它将每个值变量映射到从相应 RandomVariable 派生的条件对数概率项。