给定一个 10D MCMC 链,我如何确定它在 R 中的后验模式?

机器算法验证 r 贝叶斯 马尔可夫链蒙特卡罗 k-最近邻 模式
2022-03-02 15:46:17

问题:对于 10 维 MCMC 链,假设我准备给您一个抽签矩阵:100,000 次迭代(行)乘 10 个参数(列),我怎样才能最好地识别后验模式?我特别关心多种模式。

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

关注点:

  1. 我们认为分布可能相当偏斜;因此,我们希望识别后验模式而不是后验均值。

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

  3. 如果可能的话,我们更喜欢基于 R 的建议。但是任何算法都可以,只要实现起来不是非常困难。我想我不想从头开始实现具有自动带宽选择的 Nd 内核密度估计器。

4个回答

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

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

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

这只是部分答案。

我最近使用figtree进行多维核密度估计。这是一个 C 包,我很容易让它工作。但是,我只用它来估计特定点的密度,而不是计算汇总统计数据。

如果您保留对数似然性,则只需选择具有最高值的那个。此外,如果您的兴趣主要是模式,那么只需进行优化以找到具有最高对数似然的点就足够了。

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

[据我了解,您是否试图找到从中绘制 100'000 行的概率密度模式。因此,您的问题将通过找到合适的density estimation方法得到部分解决]。