6

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

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

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

4

1 回答 1

11

如果参数在上尾,您应该能够通过计算 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)),即使你添加更多位,它们也会很快用完。

于 2011-05-09T04:07:58.080 回答