Python PyMC模型中的状态在哪里?

Python PyMC模型中的状态在哪里?,python,pymc,mcmc,Python,Pymc,Mcmc,考虑到以下模型,我的问题是S如何了解alpha、beta和theta?我见过一些例子,其中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.Norm

考虑到以下模型,我的问题是
S
如何了解
alpha
beta
theta
?我见过一些例子,其中
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)

如果
pymc.Model
或派生类的
输入
参数为
None
,则它会从
\uuuuu main\uuuu
中提取所有变量。看来我们不应该再使用这种魔法了。。。当我运行您的代码时,我得到以下信息:

/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).')

啊,很公平。我想我是直接从文件中得到这个例子的。你应该在他们的GitHub中提出一个问题,我打赌开发人员会更新文档,如果他们知道的话。