R中的F-检验公式

R中的F-检验公式,r,R,我是R新手,我正在尝试测试我的线性模型。lm()函数的输出如下: Estimate Std. Error t value Pr(>|t|) (Intercept) 1615.2716 83.2051 19.41 <2e-16 *** rts$angle 11.8387 0.8895 13.31 <2e-16 *** 估计标准误差t值Pr(>t) (Intercept)1615.2716 83.2051 1

我是R新手,我正在尝试测试我的线性模型。
lm()
函数的输出如下:

             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 1615.2716    83.2051   19.41   <2e-16 ***
rts$angle     11.8387     0.8895   13.31   <2e-16 ***
估计标准误差t值Pr(>t)
(Intercept)1615.2716 83.2051 19.41函数的默认值为
pf()
较低。tail=TRUE
。这意味着,执行的F测试默认为低尾测试。在F检验中,我们总是使用上尾检验(有关详细解释,请参阅)。虽然使用
1-pf()
计算上尾检验有直观的意义,但R需要一些刺激才能使其以这种方式工作。这是因为,当你有一个大的效果时,下尾端可以很容易地返回一个非常接近1的值,以至于R无法识别浮点(或者我被告知,我不完全确定这有多准确,因为我没有查看
pf()
函数的原始代码)

@罗兰已经提出了用
format.pval()
包装
1-pval()
调用的解决方案,因为这迫使R识别p值。但是,我认为应该使用以下命令:

pf(fstat, df0-df, df, lower.tail=FALSE)
这将返回更准确的上尾测试。当您在
format.pval()
命令中包装它时,您会得到与使用
format.pval(1-pf())
命令相同的结果。这是因为format.pval限制为向上取整。然而,当使用format.pval时,使用
1-pf(lower.tail=TRUE)
公式增加显示小数时,无法重建更准确的估计值

    > pf(fstat, df0-df, df, lower.tail=FALSE)
[1] 0.0000000000000000000000000001685664
> format.pval(pf(fstat, df0-df, df, lower.tail=FALSE), eps=0.0000000000000000000000000001)
[1] "0.00000000000000000000000000016857"
> format.pval(1-pf(fstat, df0-df, df, lower.tail=TRUE), eps=0.0000000000000000000000000001)
[1] "< 0.0000000000000000000000000001"
pf(fstat,df0-df,df,lower.tail=FALSE) [1] 0.0000000000000000000000000001685664 >format.pval(pf(fstat,df0-df,df,lower.tail=FALSE),eps=0.00000000000000000000001) [1] "0.00000000000000000000000000016857" >format.pval(1-pf(fstat,df0-df,df,lower.tail=TRUE),eps=0.00000000000000000000001) [1] "< 0.0000000000000000000000000001"
请注意,即使现在,上尾测试中的
format.pval
wrap仍在向上取整。当然,当你的p值这么小的时候(事实上,整个问题只有在你的p值非常小的时候才会出现),这两种方法之间几乎没有什么区别。但是为什么要满足于不那么准确呢?

你有没有可能发布数据?用
format.pval()将最后一行包装起来。
。(您也可以在
摘要(完整的_model _fit)
的输出中找到此p值)。@Roland谢谢!这可以工作并提供以下输出:“<2.22e-16”。如果我可以再问一个问题,首先得到0值的原因是什么?这是精度值的问题吗?我使用了:
.Machine$double.eps
,它给了我
[1]2.220446e-16
。我还想听听是否有人知道为什么较低的.tail=TRUE返回了1而不是更精确的估计值。如果有人有更多的技术诀窍,那肯定可以满足我的好奇心,因为我在过去半个小时里一直在寻找答案,没有任何运气。如果有人能告诉我为什么低尾
pf()
测试返回1,我很乐意听到。我对不识别浮点的解释并不完全满意。
pf(fstat, df0-df, df, lower.tail=FALSE)
    > pf(fstat, df0-df, df, lower.tail=FALSE)
[1] 0.0000000000000000000000000001685664
> format.pval(pf(fstat, df0-df, df, lower.tail=FALSE), eps=0.0000000000000000000000000001)
[1] "0.00000000000000000000000000016857"
> format.pval(1-pf(fstat, df0-df, df, lower.tail=TRUE), eps=0.0000000000000000000000000001)
[1] "< 0.0000000000000000000000000001"