r - 有没有办法处理涉及 R 中大值指数的计算?
问题描述
我在网上和网站上看了一点,但没有找到任何解决方案。我的问题相对简单,所以如果你能指出一个可能的解决方案,非常感谢。
test_vec <- c(2,8,709,600)
mean(exp(test_vec))
test_vec_bis <- c(2,8,710,600)
mean(exp(test_vec_bis))
exp(709)
exp(710)
# The numerical limit of R is at exp(709)
我如何计算我的向量的平均值并处理 Inf 值,知道 R 可能处理平均值但不是平均值计算的分子中的所有值?
解决方案
有一种极端情况,您可以通过简单地在数学上重申您的问题来解决您的问题,但这需要您的向量的长度非常大和/或您的 exp 很大。数字接近数字限制:
由于均值sum(x)/n
可以写为sum(x/n)
和exp(x)/exp(y) = exp(x-y)
,因此您可以计算sum(exp(x-log(n)))
,这可以减轻 log(n) 的负担。
mean(exp(test_vec))
[1] 2.054602e+307
sum(exp(test_vec - log(length(test_vec))))
[1] 2.054602e+307
sum(exp(test_vec_bis - log(length(test_vec_bis))))
[1] 5.584987e+307
虽然这适用于您的示例,但很可能这不适用于您的真实向量。在这种情况下,您将不得不参考Rmpfr
@fra 建议的软件包。
推荐阅读
- c# - 为什么有些 C# 方法使用对象来传递参数,而不是直接传递它们?
- apache-kafka - Kafka PersistentWindowStore 再平衡机制
- linux - 如何在 aws ec2 实例上升级打包程序
- javascript - 如何使用 pixi.js 获取 PIXI.Graphics 实例的边界?
- python - 如何创建具有以下给定条件的二进制矩阵:
- javascript - 如何使用 JavaScript 将文本菜单链接更改为图像?
- xml - DITA OT Epub 转换dita到EPUB时省略主题
- mysql - 如何使用其他表中的数据创建此视图
- python - 查找字符串行以递归方式开始python
- python - 将对象列表转换为 Json 数组