gpt4 book ai didi

r - qnorm 的数值问题

转载 作者:行者123 更新时间:2023-12-04 13:32:25 26 4
gpt4 key购买 nike

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

首先,Skew-Normal CDF 舍入结果,因为 psn(9) 不是 1:

 library(sn)
psn(9)
#[1] 1

然后

 qnorm(psn(9))
#[1] Inf

然后看到:

 qnorm(.9999999999999999)
#[1] 8.209536
qnorm(.99999999999999999)
#[1] Inf

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

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

最佳答案

(这不是您困境的解决方案,更多的是解释为什么我认为您会看到这种情况并且可能找不到简单的解决方案。)

我认为这已经进入了普通浮点精度对您不起作用的领域。例如,执行函数的反函数:

options(digits=22)
pnorm(8.209536)
# [1] 0.99999999999999989
pnorm(8.209536) - 1
# [1] -1.1102230246251565e-16

非常接近

.Machine$double.eps
# [1] 2.2204460492503131e-16

根据 ?.Machine,它是

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'.

使用像 gmp 这样的辅助包,也许可以将您需要的内容翻译成更高精度的内容或 Rmpfr . (我不知道他们是否支持类似qnorm的操作。)

关于r - qnorm 的数值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64231680/

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