给定10D MCMC链,如何确定R中的后验模式?


10

问题:假设有10维MCMC链,我准备将抽奖矩阵交给您:10个参数(列)的100,000次迭代(行),我如何才能最好地识别后验模式?我特别关注多种模式。

背景:我认为自己是一位精通计算的统计学家,但是当一位同事问我这个问题时,我为自己无法给出一个合理的答案而感到ham愧。主要关注的是可能会出现多种模式,但前提是必须考虑十个维度中的至少八个左右。我的第一个想法是使用核密度估计,但是对R的搜索没有发现对大于3维问题的希望。同事已经提出了十个维度的临时分箱策略并寻求最大值,但我担心的是带宽可能会导致严重的稀疏性问题或缺乏分辨多种模式的分辨率。就是说,我很乐意接受有关自动带宽建议的建议,与10个内核密度估算器的链接或您所知道的其他任何信息。

顾虑:

  1. 我们认为该分布可能会偏斜;因此,我们希望确定后验模式,而不是后验方法。

  2. 我们担心可能存在几种后验模式。

  3. 如果可能的话,我们希望使用基于R的建议。但是,只要不难以实现,任何算法都可以。我想我不希望通过从头开始自动带宽选择来实现Nd内核密度估计器。


请参阅有关快速模式估计方法的主题stats.stackexchange.com/questions/33625
Pavel Ruzankin,

Answers:


9

您是否考虑过使用最近邻居方法?

例如k,为100'000个点中的每个点建立最近邻居的列表,然后将具有最小kth邻居距离的数据点视为一种模式。换句话说:找到具有“最小气泡”的点,其中包含k该点附近的其他点。

我不确定这有多强大,是否选择k显然会影响结果。


有时我只想在头顶上myself打自己。很好的建议。
M. Tibbits,2010年

1
我也只是想kmeans在R 中使用该函数。我真的不应该在午夜至凌晨4点之间提出问题。
M. Tibbits,2010年

4

这只是部分答案。

我最近将figtree用于多维内核密度估计。这是一个C程序包,我可以轻松地运行它。但是,我仅使用它来估计特定点的密度,而不使用汇总统计信息。


3

如果保留对数可能性,则只需选择最大值即可。此外,如果您的兴趣主要在于模式,则只需进行优化以找到对数可能性最高的点即可。


这是最相关的答案,至少是第一部分!在许多MCMC模拟中,对所有提议都计算了(对数)可能性,因此可以将其存储。或者可以存储到目前为止的最大值及其参数。如果MCMC算法已经收敛了您运行的仿真次数,则这是一种有效的方法。
西安

2

您是否考虑过“ PRIM /颠簸狩猎”?(例如,参见Tibshirani等人的“统计学习的要素”的第9.3节,或询问您喜欢的搜索引擎)。不知道这是否在R中实现。

[据我所知,您试图找到绘制100000行的概率密度的模式。因此,通过找到适当的density estimation方法可以部分解决您的问题。


是的,有一个带有R小插图的prim包:使用prim进行凹凸搜索。在我看来,在这种情况下它将如何工作并不明显。
chl 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.