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 値 (結局のところ e^(-x^2) です) で非常に速く 1 にヒットするため、ビットを追加してもすぐに使い果たされます。

于 2011-05-09T04:07:58.080 に答える