摘要中的p值与R lm中的anova之间的差异()

时间:2013-02-02 19:43:28

标签: r lm

我看到anova的p值存在差异,具体取决于我如何访问它。

有没有办法获得摘要返回的相同值?

一个易于表示的案例返回< 2.2e-16在摘要和anova中,但在我直接访问该值时给出了8.129959e-100:

x <- lm(formula = eruptions ~ waiting, data = faithful)
summary(x)
anova(x)
anova(x)$"Pr(>F)"[1]

在另一个更难以表示的情况下(有更多数据)我得到了p值:&lt;摘要中为2.2e-16,但来自anova的为0。

有没有办法获得摘要和anova中返回的实际值?

我非常感谢你的帮助 -

1 个答案:

答案 0 :(得分:3)

你必须深入研究stats:::print.summary.lm。该值不存储在summary.lm对象中,它是从对象的fstatistic组件中即时计算的。

s <- summary(x)$fstatistic
(p <- pf(s["value"], s["numdf"], s["dendf"], lower.tail = FALSE))
##         value 
## 8.129959e-100 

...它与anova() ...

产生的值相同

...正如@Dason在下面指出的那样,您可以使用format.pval()返回summary()的显示格式:

format.pval(p)
## [1] "< 2.22e-16"

我无法看到任何方法,除了自己的print.summary.lm之外,还要覆盖其中的format.pval()调用,以打印摘要中的完整p值。