cje*_*ena 11 r distribution p-value
我正在尝试用R计算f统计量的p值.在lm()函数中使用的公式R等于(例如假设x = 100,df1 = 2,df2 = 40):
pf(100, 2, 40, lower.tail=F)
[1] 2.735111e-16
Run Code Online (Sandbox Code Playgroud)
这应该等于
1-pf(100, 2, 40)
[1] 2.220446e-16
Run Code Online (Sandbox Code Playgroud)
它不一样!没有什么大不同,但它来自哪里?如果我计算(x = 5,df1 = 2,df2 = 40):
pf(5, 2, 40, lower.tail=F)
[1] 0.01152922
1-pf(5, 2, 40)
[1] 0.01152922
Run Code Online (Sandbox Code Playgroud)
它完全一样.问题是......这里发生了什么?我错过了什么吗?
> all.equal(pf(100, 2, 40, lower.tail=F),1-pf(100, 2, 40))
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
正如评论所指出的,这是一个浮点精度问题。事实上,您显示的两个示例与评估时并不完全相等:
> 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
Run Code Online (Sandbox Code Playgroud)
只是这种差异仅在较小数字的输出中才明显。