将多条平行的 MCMC 链组合成一条更长的链

机器算法验证 马尔可夫链蒙特卡罗 并行计算
2022-03-24 05:30:36

假设一个人已经运行了个并行的 MCMC 链,其中每个链都有老化。让生成的链记为 其中是之后每个链的长度老化。m

x1(i),,xN(i) for i=1,,m,
N

如果要将这些链组合成一个长链,是否像将它们连接起来一样简单

x1(1),,xN(1),,x1(m),,xN(m)?

在我的例子中,每个都是一个参数我的目标是从后验 其中是数据。我之所以对平行链感兴趣,是因为它们是计算潜在规模缩减因子(PSRF)所必需的。xiθi

p(θy),
y

1个回答

请注意,单个链具有串行依赖性;来自不同链的值不会,所以如果你想让它看起来像一个长链,只是连接它们看起来不对。

但是,如果您只对分布感兴趣,则链中的顺序无关紧要。您实际上并没有为此寻求连接链,您只是想汇集所有分布信息(将它们视为一个大样本)。当然,如果链都收敛到它们的平稳分布,它们都将是来自同一分布的样本——你可以将它们组合起来。

事实上,有些人会经历一段磨合期,然后从许多不同的链中提取一个值。

(将运行分开可能有助于判断它们是否真的收敛了。)

但是,如果您正在计算解释依赖结构的方差,那么您将基于以下事实:不同的运行是独立的,但同一运行中的值是相互依赖的。