首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有q范数的数值问题

具有q范数的数值问题
EN

Stack Overflow用户
提问于 2020-10-07 02:22:01
回答 1查看 70关注 0票数 4

我在使用qnorm(psn())时遇到了一个数字问题。这个问题是一个数值问题。

首先,由于psn(9)不是1,所以对结果进行不对称正态CDF

代码语言:javascript
复制
 library(sn)
 psn(9)
#[1] 1

然后

代码语言:javascript
复制
 qnorm(psn(9))
#[1] Inf

看看这个:

代码语言:javascript
复制
 qnorm(.9999999999999999)
#[1] 8.209536
 qnorm(.99999999999999999)
#[1] Inf

请注意,8.209536并没有那么大,因此这种舍入非常不精确。

然后,我的最后一个问题是qnorm(psn())的计算,这是我Copula密度的一部分。有什么关于如何避免这些数值问题的提示吗?

EN

回答 1

Stack Overflow用户

发布于 2020-10-07 02:54:35

(这不是你困境的解决方案,更多的是解释为什么我认为你看到了这一点,也许不太可能找到一个简单的解决方案。)

我认为这已经进入了一个正常的浮点精度对你不起作用的领域。例如,对您的函数进行逆操作:

代码语言:javascript
复制
options(digits=22)
pnorm(8.209536)
# [1] 0.99999999999999989
pnorm(8.209536) - 1
# [1] -1.1102230246251565e-16

它非常接近于

代码语言:javascript
复制
.Machine$double.eps
# [1] 2.2204460492503131e-16

根据?.Machine的说法,这是

代码语言:javascript
复制
double.eps: the smallest positive floating-point number 'x' such that
          '1 + x != 1'.  It equals 'double.base ^ ulp.digits' if either
          'double.base' is 2 or 'double.rounding' is 0; otherwise, it
          is '(double.base ^ double.ulp.digits) / 2'.  Normally
          '2.220446e-16'.

可以使用gmpRmpfr等辅助包将所需内容转换为更高的精度。(我不知道它们是否支持qnorm-like操作。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64231680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档