R中的下溢,概率的logartihm之和

时间:2016-09-23 10:55:51

标签: r

如何计算概率之和的对数,即ln(p1 + p2),其中p1 =非常小的数,p2 =非常小的数。使用lp1 = ln(p1)和lp2 = ln(p2)

的值

如果p1和p2非常小,则会发生下溢。怎么避免这个?

1 个答案:

答案 0 :(得分:4)

通常,以下提示对于在r中记录日志非常有用:

  • 如果您将log(1+x)用于非常小的x,则功能log1p会更准确(另请参阅expm1)。
  • log(x^a) = a*log(x)
  • log(a*x) = log(a) + log(x)
  • 计算小x的log(x)很好。 log(1e-308)不会遭受下溢。计算exp(-1e308)是不同的,但这远远小于任何可表示的答案。

解决问题的一种方法可能是(假设p1p2小于$ 10 ^ -308 $)来计算log(p2)和p1 / p2,然后

log(p1 + p2)= log(1 + p1 / p2)+ log(p2)

使用log1p计算第一个词,你已经有了第二个词。