用R计算f统计量的p值

时间:2014-01-29 14:10:16

标签: r distribution p-value

我正在尝试用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

它完全一样。问题是......这里发生了什么?我错过了什么吗?

2 个答案:

答案 0 :(得分:6)

> all.equal(pf(100, 2, 40, lower.tail=F),1-pf(100, 2, 40))
[1] TRUE

答案 1 :(得分:3)

正如评论所指出的,这是一个浮点精度问题。实际上,您显示的两个示例与评估的不完全相同:

> 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

只是这个差异只会在您的输出中显示为更小的数字。