PyMC:利用自适应大都市MCMC中的稀疏模型结构

时间:2015-04-24 20:00:56

标签: python algorithm bayesian pymc mcmc

我有一个模型,如下图所示:

Model diagram

我有几个人口(在这张照片中索引1 ... 5)。人口参数(AB,但可以有更多)确定每个人的潜在变量L[i]的分布。潜在变量L[i]以概率方式确定观察X[i]。在大多数节点没有直接连接它们的边缘的意义上,这个模型是“稀疏的”。

我正在尝试使用PyMC来推断人口参数,以及每个人的潜在变量。 (一个相关的问题,更详细地描述了我的具体情景,是here。)我的问题是:我应该使用自适应大都会而不是其他方法,如果是,是否有任何“技巧”正确地对随机变量进行分组?

如果我正确理解了Adaptive Metropolis的采样(我可能不会......),那么这个算法会为未知数提出新值(AB和所有L[i])通过考虑这些变量如何在到目前为止在运行中构建的后验分布相关联。如果AB呈负相关,那么增加A的提案将会减少B,反之亦然,以增加提案被接受的机会

问题是,在此模型中,每个L[i]都是由AB确定的基础人口分布的独立抽取。因此,虽然他们将被视为在后验中相关联,但这些相关性实际上仅归因于AB,因此它们以某种方式“混淆”。所以当我调用函数时,

M.use_step_method(pymc.AdaptiveMetropolis, stochastics)

应该将所有L[i]放在随机指标列表中吗?或者我应该多次调用use_step_method,每次stochastics=[A, B, L[i]]只调用一次L[i]?我的想法是,对于不同的随机指标组多次调用该函数将构成问题并使PyMC更容易通过告诉它只关注重要的相关性。这是对的吗?

1 个答案:

答案 0 :(得分:1)

这可能是一个令人不满意的答案,但似乎PyMC3有一个非常相似的层次模型的例子:https://pymc-devs.github.io/pymc3/GLM-hierarchical/将代码迁移到PyMC3可以让你访问更新的样本,比如No-U-Turn采样器(NUTS)