【问题标题】:How to simulate from priors with pymc3如何使用 pymc3 从先验模拟
【发布时间】:2018-02-26 04:05:10
【问题描述】:

我想用pymc3 模拟来自先验(而不是后验)的 y。

我首先定义了模型:

import pymc3 as pm

with pm.Model() as m:
    mu = pm.Normal('mu', mu=0, sd=10)
    sigma = pm.Uniform('sigma', lower=0, upper=10)
    y = pm.Normal('y', mu=mu, sd=sigma)
    trace = pm.sample(1000, tune=1000)

然后我尝试从模型中获得 10 个模拟 y:

y_pred = pm.sample_ppc(trace, 10, m, size=10)

但是结果是空的。我搜索了文档,但没有找到相关示例。 pymc3可以做到吗?

【问题讨论】:

    标签: bayesian simulation pymc


    【解决方案1】:

    trace 包含来自先验的样本,当没有观察到与模型定义相关联时。但是,这有时可能会失败。我们目前正在开发一个 sample_prior 函数,这将使这个过程更容易和更直接:https://github.com/pymc-devs/pymc3/pull/2876

    【讨论】:

    • 如果我理解正确,我可以使用[i['y'] for i in trace.points()] 获得y 的先前样本
    • 这有没有得到确认@gc5?有兴趣了解我自己的项目
    • @SamComber 不幸的是不是,但它看起来很合理,所以我接受了。如果您碰巧确认,请添加到此答案中。
    • @gc5 并不总是有效,要么等待 PR 合并,要么暂时使用此笔记本中的代码github.com/junpenglao/Planet_Sakaar_Data_Science/blob/master/…
    猜你喜欢
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2017-07-01
    • 1970-01-01
    • 2018-10-31
    • 2012-08-09
    相关资源
    最近更新 更多