私はRでf統計量のp値を計算しようとしています.Rがlm()関数で使用する式は等しい(例えば、x = 100、df1 = 2、df2 = 40と仮定):
pf(100, 2, 40, lower.tail=F)
[1] 2.735111e-16
等しいはずです
1-pf(100, 2, 40)
[1] 2.220446e-16
同じではありません!大きな違いはありませんが、どこから来たのですか?計算すると(x = 5、df1 = 2、df2 = 40):
pf(5, 2, 40, lower.tail=F)
[1] 0.01152922
1-pf(5, 2, 40)
[1] 0.01152922
それはまったく同じです。質問は...ここで何が起こっているのですか?私は何かを見逃しましたか?
コメントにあるように、これは浮動小数点の精度の問題です。実際、あなたが示す両方の例は、評価されたように正確には等しくありません:
> pf(5, 2, 40, lower.tail=F) - (1-pf(5, 2, 40))
[1] 6.245005e-17
> pf(100, 2, 40, lower.tail=F) - (1-pf(500, 2, 40))
[1] 2.735111e-16
この違いは、はるかに少ない数の出力でのみ明らかになるということです。
> all.equal(pf(100, 2, 40, lower.tail=F),1-pf(100, 2, 40))
[1] TRUE