R中的双精度错误
Double precision error in R
在我的代码中,在似然计算期间存在一个步骤,我需要计算 -ve 数的指数并在添加此类指数后取对数。例如
> log(exp(-2500))
[1] -Inf
> log(exp(-2500)+exp(-3000))
[1] -Inf
由于这些 -ve 数字的绝对值很高,结果是 exp(-ve 数字) 变为零(如预期的那样)。但是,在后面的步骤中评估的对数将零作为输入。有什么方法可以避免 R 中的这些错误输出?
计算可能性的对数。将它们存储在向量 v
中。然后计算
m = max(v)
logsum = log(sum(exp(v-m)))+m
在我的代码中,在似然计算期间存在一个步骤,我需要计算 -ve 数的指数并在添加此类指数后取对数。例如
> log(exp(-2500))
[1] -Inf
> log(exp(-2500)+exp(-3000))
[1] -Inf
由于这些 -ve 数字的绝对值很高,结果是 exp(-ve 数字) 变为零(如预期的那样)。但是,在后面的步骤中评估的对数将零作为输入。有什么方法可以避免 R 中的这些错误输出?
计算可能性的对数。将它们存储在向量 v
中。然后计算
m = max(v)
logsum = log(sum(exp(v-m)))+m