R : TUKEY 遵循单向方差分析

R : TUKEY following one-way ANOVA

我在 R 中进行了单向方差分析,但是当我尝试进行 Tukey post-hoc 以查看哪些处理彼此不同时,我不断收到错误消息。 (我希望结果 运行ked (a, ab, b, bcd...etc.)

DATA details:

data = "abh2"

x = 6 treatments : "treatment"

y= moisture readings "moist" (n=63 per treatment, total=378)

我运行单向方差分析:

anov <- anova(lm(moist~treatment, data=abh2))

.# 结果表明我可以移动到 post hoc (p<0.05):

Analysis of Variance Table

Response: moist
           Df Sum Sq Mean Sq F value    Pr(>F)    
treatment   5 1706.3  341.27  25.911 < 2.2e-16 ***

我选择了 Tukey HSD 并尝试使用 2 种方法 运行 它,但都收到错误消息:

内置R函数:

TukeyHSD(anov)
# ERROR : no applicable method for 'TukeyHSD' applied to an object of class "c('anova', 'data.frame')"

农家乐套餐:

    HSD.test(anov, "treatment", group=TRUE, console=TRUE)
    # ERROR : Error in HSD.test(anov, "treatment", group = TRUE, console = TRUE) :
argument "MSerror" is missing, with no default

我发现 MSerror 是

1) 一个“#旧版本 HSD.test()”(但我刚刚更新了 agricolae 包)

2) MSerror<-偏差(模型)/df

所以我尝试了:

HSD.test(anov, "treatment", MSerror=deviance(moist)/5, group=TRUE, console=TRUE)
 *but still* # ERROR: $ operator is invalid for atomic vectors

谁能帮我从这里继续前进?这似乎是一个非常简单的问题,但我在这上面花了好几个小时!

非常感谢:)

尝试使用以下代码将您的治疗指定为一个因素:

abh2$treatment <- factor(abh2$treatment)

感谢反馈 Annie-Claude,它让我走上了正确的轨道,R 没有正确识别数据。

不过我使用这段代码解决了问题:

library(agricolae)

model<-aov(moist~treatment, data=abh2)

out <- HSD.test(model,"treatment", group=TRUE,console=TRUE)

看来我最初使用的 ANOVA 命令(来自 R 基础包)根本无法被我之后尝试执行的 Tukey 测试(使用 agricolae 包)理解。

Take-home给我留言:尝试在同一个包中进行相关的字符串分析!

p.s。获取 p-values:

summary(model)

它们可以像这样转换为数据帧:

as.data.frame(摘要(模型)[[1]])