我看到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中返回的实际值?
我非常感谢你的帮助 -
答案 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值。