PyMC3:如何从转换后的随机变量中采样?

PyMC3: how to sample from transformed random variable?

我有一个超级基本的 PYMC3 问题:如何从改造后的 RV 中采样?我需要它主要用于调试目的。

例如:

import pymc3 as pm

with pm.Model():
   A = pm.Normal('A')

   B = pm.Deterministic('B', A + 1)
   # or
   B = A + 1

我可以使用 A.random() 从 A 生成样本,但未为 B 定义该函数。 + 1 是一个微不足道的变换,但如果涉及更多,我想从变形的 A 中抽取一些样本,即 B,以确保一切正常。

就是这样——PyMC3 要求你首先构建一个你已经完成的模型,然后使用 pm.sample.

您要查找的语法是:

with pm.Model():
    A = pm.Normal('A')
    B = pm.Deterministic('B', A + 1)
    trace = pm.sample(1000)

(trace['B'] == trace['A'] + 1).all()  # True