4

根据我访问它的方式,我看到 anova 的 p 值存在差异。

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

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

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

在另一个更难以表示的情况下(有更多数据)我得到 p-value: < 2.2e-16 in the summary but 0 from anova.

有什么方法可以获取摘要和方差分析中返回的实际值?

我非常感谢您的帮助-

4

1 回答 1

5

你必须深入研究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 值。

于 2013-02-02T20:02:46.627 回答