国家在PyMC模型中的位置在哪里?

时间:2015-02-25 19:16:58

标签: python pymc mcmc

鉴于以下模型,我的问题是S如何了解alphabetatheta的所有内容?我已经看到了MCMC给出了在单独文件中指定的模型(即作为Python模块)的示例,这对我来说是有意义的。但是我没有明确地将任何数据传递给S。只是想了解它是如何工作的。

import pymc as pm
import numpy as np

n = 5 * np.ones(4, dtype=int)
x = np.array([-0.86, -0.3, -0.05, 0.73])

alpha = pm.Normal('alpha', mu=0, tau=0.01)
beta = pm.Normal('beta', mu=0, tau=0.01)

@pm.deterministic
def theta(a=alpha, b=beta):
    """theta = logit^{-1}(a+b)"""
    return pm.invlogit(a + b * x)

d = pm.Binomial('d',n=n,p=theta,value=np.array([0.,1.,3.,5.]),observed=True)

S = pm.MCMC(db='pickle')
S.sample(iter=10000, burn=5000, thin=2)
pm.Matplot.plot(S)

enter image description here

1 个答案:

答案 0 :(得分:0)

如果input或派生类的pymc.Model参数为None,则会从__main__中删除所有变量。 See here for the gory details。似乎我们不应该再使用这种魔法......当我运行你的代码时,我得到以下内容:

/homes/abie/anaconda/lib/python2.7/site-packages/pymc/Model.py:93: UserWarning: The MCMC() syntax is deprecated. Please pass in nodes explicitly via M = MCMC(input).
  'The MCMC() syntax is deprecated. Please pass in nodes explicitly via M = MCMC(input).')