如何获得R中ANOVA程序的详细信息?

时间:2012-02-24 04:59:47

标签: r anova

我正在为一个分为9个类别的变量做一个anova。

av <- aov(Z~Climes) 

其中Z是包含值的向量,Climes包含9个用于执行anova的类别,请记住每个类别中的样本数量略有不同。

现在我想要一个详细的输出(例如JMP为我提供了一个9 * 9矩阵,它为每个类别对提供了成对的比较,即t检验结果。)

aov的输出对象是否包含此信息?如果确实如此,我在文档中看不到它,如果没有其他函数在R中执行详细的ANOVA?

1 个答案:

答案 0 :(得分:3)

要回答您的第一个问题,:您的aov对象包含有关模型拟合的信息,而不是 post-hoc 比较。它甚至不会评估(残差的)分布假设,同方差性的测试等,这不是我们期望在ANOVA表中看到的。但是,您可以通过评估模型拟合,检查假设等来自由(​​当然强烈建议)补充您的分析。

关于你的第二个问题。使用例如单独处理多个比较。 pairwise.t.test()(对多个测试进行或不进行更正),TukeyHSD()(通常最适合均衡数据),multcomp(请参阅glht()),如下所述@ MYaseen208或multtest包。其中一些测试将假设ANOVA F-测试是重要的,其他程序更灵活,但这一切都取决于你想做什么,以及它听起来像是对手头问题的合理方法(参见@Ddin的评论)。那么为什么R会自动提供它们呢?

作为示例,请考虑以下模拟数据集(平衡单向ANOVA):

dfrm <- data.frame(x=rnorm(100, mean=10, sd=2), 
                   grp=gl(5, 20, labels=letters[1:5]))

其中group表示和SD如下:

+-------+-+---+---------+--------+
|       | | N | Mean    | SD     |
+-------+-+---+---------+--------+
|grp    |a| 20|10.172613|2.138497|
|       |b| 20|10.860964|1.783375|
|       |c| 20| 9.910586|2.019536|
|       |d| 20| 9.458459|2.228867|
|       |e| 20| 9.804294|1.547052|
+-------+-+---+---------+--------+
|Overall| |100|10.041383|1.976413|
+-------+-+---+---------+--------+

使用JMP,我们有一个非显着的F(4,95)= 1.43和以下结果(我要求成对t检验):

enter image description here
(P值显示在最后一列。)

请注意,这些t检验不受I类错误通胀的保护。

使用R,我们会这样做:

aov.res <- aov(x ~ grp, data=dfrm)
with(dfrm, pairwise.t.test(x, grp, p.adjust.method="none")) 

您可以通过在R提示下发出aov.res来检查str(aov.res)中存储的内容。 Tukey HSD测试可以使用

进行
TukeyHSD(aov.res)  # there's a plot method as well

library(multcomp)
glht(aov.res, linfct=mcp(grp="Tukey"))  # also with a plot method