编程语言
首页 > 编程语言> > python – Pymc3条件后验采样

python – Pymc3条件后验采样

作者:互联网

我想从pymc3中的后验分布中抽样,但是以某些变量的特定值为条件.我看到如何使用sample_ppc对后验进行采样,但目前还不清楚如何有条件地进行此操作.有一个简单的方法吗?

例如,假设我有这个模型:

with pymc3.Model() as model:
    mu = pymc3.Uniform('mu', -3., 3.)
    std = pymc3.Uniform('std', 0., 2.)
    N = pymc3.Normal('N', mu=mu, sd=std, observed=obs)
    start = pymc3.find_MAP() 
    step = pymc3.NUTS(scaling=start)
    trace = pymc3.sample(2000, step, start=start)

我怎样才能从N的后验分布中取样,条件是mu值为1.5?

解决方法:

AFAIK,您只能使用sample_ppc来获取取决于输入值的后验预测值.因此,如果您需要在不同点进行采样或修复参数值,则必须重写模型并从跟踪中获取参数的值.按照您的示例,您需要执行以下操作:

ppd = np.random.normal(1.5, trace['std'])

标签:python,bayesian,mcmc,pymc3
来源: https://codeday.me/bug/20190706/1393159.html