问题描述
尝试按照答复中的建议实施具有潜力的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 (将#修改为@)