如何解决PyMC3采样结果出错
尝试按照答复中的建议实施具有潜力的this,但结果为错误。 PyMC3版本是3.9.2。
问题设置
import pymc3 as pm
import theano.tensor as tt
from scipy.stats import poisson,bernoulli
# Generate data
n_obs = 1000
demand = poisson.rvs(3,size=n_obs)
alp = bernoulli.rvs(0.2,size=n_obs)
obs = demand*alp
zero_obs = (obs == 0)
模型
def likelihood(p,mu,n_zero):
prob = (1-p) + p*np.exp(-mu) # If Bernoulli draw = 0 or Poisson draw = 0
return n_zero*np.log(prob)
with pm.Model() as model:
p = pm.Beta('p',alpha=1,beta=1)
mu = pm.Gamma('mu',alpha=0.001,beta=0.001)
# If observed nonzero
demand_obs = pm.Poisson('obs',observed=obs[~zero_obs])
# If observed zero
p0 = pm.Potential('p0',likelihood(p,np.sum(zero_obs)))
当我从模型中采样时,对mu进行了正确的采样,给出了大约3的值。但是,p不是,给出的值实际上接近于0,例如1e-3。怎么了?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。