将浮点精度添加到qnorm/pnorm?

Tal*_*ili 6 floating-point precision r normal-distribution

我有兴趣在计算qnorm/ pnorm从当前级别时增加浮点限制,例如:

x <- pnorm(10) # 1
qnorm(x) # Inf
qnorm(.9999999999999999444) # The highst limit I've found that still return a <<Inf number
Run Code Online (Sandbox Code Playgroud)

这是(在合理的时间内)可能吗?如果是这样,怎么样?

Owe*_*wen 11

如果参数位于上尾,您应该能够通过计算1-p获得更好的精度.像这样:

> x = pnorm(10, lower.tail=F)
> qnorm(x, lower.tail=F)
10
Run Code Online (Sandbox Code Playgroud)

我希望(虽然我不确定)pnorm()函数指的是硬件支持的任何浮点大小的C或Fortran例程.可能更好地重新安排您的问题,因此不需要精确度.

然后,如果你正在处理非常大的z值,你可以使用log.p = T:

> qnorm(pnorm(100, low=F, log=T), low=F, log=T)
100
Run Code Online (Sandbox Code Playgroud)

对不起,这不是你想要的.但我认为它会更具可扩展性 - pnorm在高z值时会如此迅速地命中1(毕竟是e ^( - x ^ 2)),即使你添加更多的比特,它们也会快速耗尽.