R中的双精度误差

时间:2018-06-21 10:40:07

标签: r precision floating-accuracy

在我的代码中,似然计算过程中存在一个步骤,我需要评估-ve数字的指数并在添加此类指数后取对数。例如。

> log(exp(-2500))
[1] -Inf
> log(exp(-2500)+exp(-3000))
[1] -Inf

由于这些-ve数字的绝对值较高,因此exp(-ve数字)变为零(符合预期)。但是,在随后的步骤中评估的对数将零作为输入。有什么办法可以避免R中的这些错误输出?

1 个答案:

答案 0 :(得分:1)

计算可能性的对数。将它们存储在向量v中。然后计算

m = max(v)
logsum = log(sum(exp(v-m)))+m