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

时间:2017-09-29 14:00:13

标签: python data-science pymc3

我有一个超级基本的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,以确保一切都健康。

1 个答案:

答案 0 :(得分:1)

就是这样 - 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