我正在尝试用 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
只是这种差异仅在您输出的数字小得多的情况下才明显。
关于r - 使用 R 计算 f 统计量的 p 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21433528/