鉴于以下模型,我的问题是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)
答案 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).')