我有兴趣在从当前级别计算qnorm
/ pnorm
时增加浮点数限制,例如:
x <- pnorm(10) # 1
qnorm(x) # Inf
qnorm(.9999999999999999444) # The highst limit I've found that still return a <<Inf number
是否(在合理的时间内)可以做到?如果是这样,怎么样?
答案 0 :(得分:10)
如果参数位于上尾,您应该能够通过计算1-p获得更好的精度。像这样:
> x = pnorm(10, lower.tail=F)
> qnorm(x, lower.tail=F)
10
我希望(尽管我不确定)pnorm()函数指的是硬件支持的任何浮点大小的C或Fortran例程。可能更好地重新安排您的问题,因此不需要精确度。
然后,如果你正在处理非常大的z值,你可以使用log.p = T:
> qnorm(pnorm(100, low=F, log=T), low=F, log=T)
100
对不起,这不是你想要的。但我认为它会更具可扩展性 - pnorm在高z值时会如此迅速地命中1(毕竟它是e ^( - x ^ 2))即使你添加更多位也会快速耗尽。