1

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

数据详情:

数据=“abh2”

x = 6 次治疗:“治疗”

y = 水分读数“潮湿”(每次处理 n = 63,总计 = 378)

我运行了单向方差分析:

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

.# RESULTS 表明我可以转移到事后(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)一个“# Old version HSD.test()”(但我刚刚更新了agricolae包)

2) MSerror<-deviance(model)/df

所以我尝试了:

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

谁能帮我从这里继续前进?这似乎是一个非常简单的问题,但我已经花了几个小时来解决这个问题!

非常感谢 :)

4

2 回答 2

0

感谢 Annie-Claude 的反馈,它让我走上了正确的道路,即 R 没有按应有的方式识别数据。

我用这段代码解决了这个问题:

library(agricolae)

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

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

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

带回家的信息:尝试在同一个包中进行相关的一系列分析!

ps 要获得 p 值:

summary(model)

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

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

于 2017-02-06T16:44:30.313 回答
0

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

abh2$treatment <- factor(abh2$treatment)

于 2017-02-03T21:19:13.307 回答