什么是pymc

时间:2016-10-29 14:34:28

标签: python pymc

我在pymc中有一个模型,简化

import pymc as pm
a = pm.Normal('a', 0,5)
b = pm.Normal('b', 0,5)
cnt = 0

@pm.deterministic
def mu(a=a, b=b):
    global cnt
    cnt += 1
    return a + b*x # x and y were loaded from csv
y_hat = pm.Normal('y', mu, 1, observed=True, value=y)

mc = pm.MCMC([a,b,mu,y_hat])
mc.sample(100)
print (cnt)

结果:

240

模型运行后,我希望cnt为100,但是打印它会产生大约240(不是每个采样返回相同,但它是关于那个数字)。我认为pymc可能在前几个中做了一些调整,但是运行了几千次迭代,cnt总是比mcmc迭代多2倍。

  • 这是什么原因?
  • 我可以使用手动调整来控制它吗?

1 个答案:

答案 0 :(得分:0)

评估mu的次数与任何MCMC运行中的迭代次数无关。我不指望它们是等价的。你想做什么?