我正在为一个分为9个类别的变量做一个anova。
av <- aov(Z~Climes)
其中Z是包含值的向量,Climes包含9个用于执行anova的类别,请记住每个类别中的样本数量略有不同。
现在我想要一个详细的输出(例如JMP为我提供了一个9 * 9矩阵,它为每个类别对提供了成对的比较,即t检验结果。)
类aov
的输出对象是否包含此信息?如果确实如此,我在文档中看不到它,如果没有其他函数在R中执行详细的ANOVA?
答案 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检验):
(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