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中提出一个问题,我打赌开发人员会更新文档,如果他们知道的话。