Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyMC:利用自适应Metropolis MCMC中的稀疏模型结构_Python_Algorithm_Bayesian_Pymc_Mcmc - Fatal编程技术网

Python PyMC:利用自适应Metropolis MCMC中的稀疏模型结构

Python PyMC:利用自适应Metropolis MCMC中的稀疏模型结构,python,algorithm,bayesian,pymc,mcmc,Python,Algorithm,Bayesian,Pymc,Mcmc,我有一个模型,其结构如下图所示: 我有几个人(图中索引为1…5)。总体参数(A和B,但可以有更多)决定每个个体潜在变量L[i]的分布。潜变量L[i]以概率方式确定观测值X[i]。该模型是“稀疏”的,因为大多数节点没有直接连接它们的边 我试图使用PyMC来推断总体参数,以及每个个体的潜在变量。(一个更详细地描述了我的具体场景的相关问题是。)我的问题是:我应该使用Adaptive Metropolis而不是其他方法吗?如果是,是否有任何“诀窍”来正确分组随机变量? 如果我正确理解了自适应Metro

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

我有几个人(图中索引为1…5)。总体参数(
A
B
,但可以有更多)决定每个个体潜在变量
L[i]
的分布。潜变量
L[i]
以概率方式确定观测值
X[i]
。该模型是“稀疏”的,因为大多数节点没有直接连接它们的边

我试图使用PyMC来推断总体参数,以及每个个体的潜在变量。(一个更详细地描述了我的具体场景的相关问题是。)我的问题是:我应该使用Adaptive Metropolis而不是其他方法吗?如果是,是否有任何“诀窍”来正确分组随机变量?

如果我正确理解了自适应Metropolis采样(我可能没有…),该算法通过计算这些变量在迄今为止构建的后验分布中的相关性,为未知量(
A
B
,以及所有
L[I]
)提出了新的值。如果
A
B
呈负相关,则增加
A
的提案将倾向于减少
B
,反之亦然,以增加提案被接受的机会

问题是,在这个模型中,每个
L[i]
都是从
A
B
确定的基本人口分布中独立得出的。因此,虽然它们在后面被认为是相关的,但这些相关性实际上是由于
A
B
单独造成的,因此它们在某种程度上是“混淆的”。因此,当我调用函数时

M.use_step_method(pymc.AdaptiveMetropolis, stochastics)

所有的
L[i]
都应该在随机变量列表中吗?或者我应该多次调用use_step_方法,每次使用
Rastochastics=[A,B,L[I]]
只调用其中一个
L[I]
?我的想法是,为不同的随机组多次调用该函数将构建问题,并通过告诉PyMC只关注重要的相关性使其更容易处理。这是正确的吗?

这可能是一个不令人满意的答案,但PyMC3似乎有一个非常类似的分层模型的例子:将代码迁移到PyMC3将使您能够访问较新的示例,如无U形转弯取样器(NUTS)