【问题标题】:Double precision error in RR中的双精度误差
【发布时间】:2018-11-30 15:58:22
【问题描述】:

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

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

由于这些 -ve 数字的绝对值很高,结果 exp(-ve 数字) 变为零(如预期的那样)。但是,在后面的步骤中评估的对数将零作为输入。有什么方法可以避免 R 中的这些错误输出?

【问题讨论】:

    标签: r precision floating-accuracy


    【解决方案1】:

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

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

    【讨论】:

    • 这不是一个大概的方法吗?例如> log(exp(-10)+exp(-100)) [1] -10 > log(exp(-log(10))+exp(-log(100))) [1] -2.207275 > exp(-2.207275) [1] 0.11
    • 哦..等等!你指的是log(a + b) = log(a * (1 + b/a)) = log a + log(1 + b/a)之类的东西吗?
    • @kasa - 你的第二条评论是的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多