在我的代码中,似然计算过程中存在一个步骤,我需要评估-ve数字的指数并在添加此类指数后取对数。例如。
> log(exp(-2500))
[1] -Inf
> log(exp(-2500)+exp(-3000))
[1] -Inf
由于这些-ve数字的绝对值较高,因此exp(-ve数字)变为零(符合预期)。但是,在随后的步骤中评估的对数将零作为输入。有什么办法可以避免R中的这些错误输出?
答案 0 :(得分:1)
计算可能性的对数。将它们存储在向量v
中。然后计算
m = max(v)
logsum = log(sum(exp(v-m)))+m