R の t 検定とカイ 2 乗でこの問題を発見しましたが、この問題は一般に他の検定にも当てはまると思います。私が行った場合:
a <- 1:10
b <- 100:110
t.test(a,b)
私は得る: t = -64.6472, df = 18.998, p-value < 2.2e-16
. 2.2e-16
の値であるコメントから知っていますが、もちろん R はそれよりもはるかに小さい数値を表すことができます.Machine$double.eps
。1 + x != 1
R FAQ から、R は float を 53 バイナリ桁の精度に丸める必要があることも知っています: R FAQ。
いくつかの質問: (1) 2 進数で 53 桁の精度と読んで正しいでしょうか、それともR の値が< .Machine$double.eps
正確に計算されていないのでしょうか? (2) そのような計算を行うとき、R は、精度がいくらか低下しても、p 値のより小さい値を表示する手段を提供しないのはなぜですか? (3) 精度がいくらか失われたとしても、より小さな p 値を表示する方法はありますか? 1 回のテストでは 2 桁の有効数字で問題ありませんが、ボンフェローニの正しい値を取得するには、さらに多くの値が必要になります。「精度を失う」と言うとき、2進数で53桁未満だと思いますが、(4)完全に間違っていて、p値< .Machine$double.eps
が非常に不正確ですか?(5) R は正直なだけで、他の統計パッケージはそうではありませんか?
私の分野では、非常に小さな p 値が標準です。いくつかの例を 示します。 .1371%2Fjournal.pgen.1002215これが、このような小さな p 値を表現したい理由です。
助けてくれてありがとう、そのような曲がりくねった質問でごめんなさい。