PyMC:利用 Adaptive Metropolis MCMC 中的稀疏模型结构
Posted
技术标签:
【中文标题】PyMC:利用 Adaptive Metropolis MCMC 中的稀疏模型结构【英文标题】:PyMC: Taking advantage of sparse model structure in Adaptive Metropolis MCMC 【发布时间】:2015-07-03 14:03:00 【问题描述】:我有一个结构如下图所示的模型:
我有几个人(在这张图片中索引为 1...5)。人口参数(A
和 B
,但可以有更多)确定每个个体潜在变量 L[i]
的分布。潜变量L[i]
以概率方式确定观察X[i]
。这个模型是“稀疏的”,因为大多数节点没有直接连接它们的边。
我正在尝试使用 PyMC 来推断总体参数以及每个人的潜在变量。 (一个更详细地描述了我的具体场景的相关问题是here。)我的问题是:我应该使用 Adaptive Metropolis 而不是另一种方法,如果是,是否有任何“技巧”来分组随机变量正确吗?
如果我正确理解 Adaptive Metropolis 采样(我可能不会...),该算法会通过考虑这些变量如何为未知数(A
、B
和所有到目前为止,在运行中构建的后验分布中是相关的。如果A
和B
负相关,则增加A
的提案将倾向于减少B
,反之亦然,以增加提案被接受的机会。
问题是,在这个模型中,每个L[i]
都是从A
和B
确定的基础人口分布中独立抽取的。因此,虽然它们会被视为在后验中相关,但这些相关性实际上仅归因于 A
和 B
,因此它们在某种程度上是“混淆”。所以当我调用函数时,
M.use_step_method(pymc.AdaptiveMetropolis, stochastics)
所有L[i]
是否应该一起出现在随机指标列表中?或者我应该多次调用 use_step_method,每次都使用stochastics=[A, B, L[i]]
来获取L[i]
之一?我的想法是,为不同的随机变量组多次调用该函数将构建问题,并通过告诉 PyMC 只关注重要的相关性来使 PyMC 更容易。这是正确的吗?
【问题讨论】:
【参考方案1】:这可能是一个不令人满意的答案,但 PyMC3 似乎有一个非常相似的分层模型的示例:https://pymc-devs.github.io/pymc3/GLM-hierarchical/ 将您的代码迁移到 PyMC3 将使您能够访问更新的示例,例如 No-U-Turn Sampler (坚果)
【讨论】:
以上是关于PyMC:利用 Adaptive Metropolis MCMC 中的稀疏模型结构的主要内容,如果未能解决你的问题,请参考以下文章