将对数后验转换为原始后验

机器算法验证 模型选择 后部
2022-04-14 18:34:57

使用两阶段 RJMCMC 过程,我获得了与每个模型有关的对数后验向量。我的目标是在标准化后将这些转换为概率(用于 RJMCMC 过程的第二阶段)。

问题是日志后验很大(例如 1100)。要转换为概率(不是对数刻度),我想做:

exp(log.post)/sum(exp(log.post))

然而,这是不可能的,因为对数后验的值很大。关于如何转换的任何建议?

我想要原始比例的概率,而不是对数比例。

2个回答

考虑表达式:

exp(A)exp(A)+exp(B)

溢出时计算上述表达式的通用策略是如下变换:exp(A)

11+exp(BA)

例如 R 扼流圈:

exp(1100)exp(1100)+exp(1104)

但是,很高兴地计算以下转换以产生 0.01798621 的值:

11+exp(11041100)

当您计算时,您可能仍然会遇到上溢或下溢的问题,但这应该不会造成问题,因为转换后的表达式仍然会被很好地定义。exp(BA)

在一般情况下,使用 来避免溢出。在计算贝叶斯因子和概率时,我总是使用这种方法。

exp{Aimaxj(Aj)}kexp{Akmaxj(Aj)}