gpt4 book ai didi

r - R中非常小数的算术

转载 作者:行者123 更新时间:2023-12-02 15:41:37 26 4
gpt4 key购买 nike

我正在尝试处理一些非常小的概率,这会导致问题。例如

probs <- c(4.225867e-03,3.463125e-04,2.480971e-05,1.660538e-06,1.074064e-07,6.829168e-09,4.305051e-10,2.702241e-11,1.692533e-12,1.058970e-13,6.622117e-15,4.139935e-16,2.587807e-17,1.617488e-18,1.010964e-19,6.318630e-21,3.949177e-22 2.468246e-23,1.542657e-24,9.641616e-26,6.026013e-27,3.766259e-28,2.353912e-29,1.471195e-30,9.194971e-32

但是,使用此向量进行的任何算术都会导致第 12 个条目之后的所有内容四舍五入为零(可能是因为它小于 .Machine$double.eps)。例如:

probs > 0
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

但是

1-probs < 1
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

我尝试过使用 gmp 包,但我正在进行基于组合的计算,并且 as.bigq(probs) 在提高到大幂时变得非常慢。

有什么办法可以解决这个问题吗?

最佳答案

非常小的概率的情况经常出现在机器学习和其他统计计算主题中。由于 float 内部表示的限制,您会遇到精度错误。这可以使用任意精度算术来解决,但这并不常见。

最流行的解决方案是使用 l og transformation to represent your probabilities然后使用加法而不是乘法。这称为对数似然。这种变换避免了数字非常小的问题,此外,可以直接使用对数似然值来比较事物的概率(较低的对数似然总是意味着较低的概率)。

请注意,有一个 subtle distinction between likelihood and probability ,但是将非常小的数字转换为小数位数变化较少的负数的对数转换无论如何都是有效的。

关于r - R中非常小数的算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43197137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com