qnorm
/を現在のレベルから計算するときの浮動小数点の制限を増やすことに興味がありpnorm
ます。たとえば、次のようになります。
x <- pnorm(10) # 1
qnorm(x) # Inf
qnorm(.9999999999999999444) # The highst limit I've found that still return a <<Inf number
それは(妥当な時間内に)可能ですか?もしそうなら、どのように?
qnorm
/を現在のレベルから計算するときの浮動小数点の制限を増やすことに興味がありpnorm
ます。たとえば、次のようになります。
x <- pnorm(10) # 1
qnorm(x) # Inf
qnorm(.9999999999999999444) # The highst limit I've found that still return a <<Inf number
それは(妥当な時間内に)可能ですか?もしそうなら、どのように?
引数が上裾にある場合は、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 値 (結局のところ e^(-x^2) です) で非常に速く 1 にヒットするため、ビットを追加してもすぐに使い果たされます。