有没有办法从pymc3生成变量?

时间:2017-01-18 17:04:49

标签: python pymc3

如果我有一个类似下面的模型,我如何访问theano函数以获得我的模型I' m拟合的值?

这是一个非常基本的模型,因此我可以使用原始function计算我的变量。但是,我打算动态生成pymc3模型,其中一些变量被重用/固定/限制等。

我知道我可以从model.makefn([expected])访问theano函数,但这将依赖于转换的参数,例如sigma_log_而不是sigma

理想情况下,我正在寻找类似model.evalute([expected], alpha=1, beta=2)

的内容

有这样的方法吗?

由于

def function(a, b):
   # do something

basic_model = Model()

with basic_model:

    # Priors for unknown model parameters
    alpha = Normal('alpha', mu=0, sd=10)
    beta = Normal('beta', mu=0, sd=10, shape=2)
    sigma = HalfNormal('sigma', sd=1)

    # Expected value of outcome
    expected = Deterministic('expected', function(alpha,beta))
    # Likelihood (sampling distribution) of observations
    Y_obs = Normal('Y_obs', mu=function, sd=sigma, observed=Y)

1 个答案:

答案 0 :(得分:2)

这里的典型方法是首先从模型的后验分布中采样,如

with model:
    trace = pm.sample(N_SAMPLES)

然后使用样本来近似函数的后验期望值。