在R中使用Tukey HSD对分类和连续变量进行分析比较。

3

我希望对我已经成功完成的显著ANOVA进行事后检验。

我有5个条件(target_onset),我想在名为data_clean的数据框中比较反应时间(key_resp.rt)。target_onset和key_resp.rt是列。

这是我做ANOVA的方法,效果很好:

cond.aov <- aov(data_clean$target_onset ~ data_clean$key_resp.rt)
summary(cond.aov)

接下来,我想看一下事后检验的结果,以确定这5种条件之间的差异是否显著。

我知道TukeyHSD只适用于因子。因此,我将我感兴趣的列进行了因子化处理:

data_clean$target_onset <- factor(data_clean$target_onset)
data_clean$key_resp.rt <- factor(data_clean$key_resp.rt)

TukeyHSD(aov(data_clean$target_onset ~ data_clean$key_resp.rt))

然而,当我运行这段代码时,出现了以下错误:

Error in class(y) <- oldClass(x) : 为一个无效的对象添加类“factor” 此外:警告信息:1: 在model.response(mf, "numeric")中使用type = "numeric"将忽略因子响应 2: 在Ops.factor(y, z$residuals)中,“-”对于因子没有意义

如果您有任何建议,请告诉我。谢谢。
1个回答

2

编辑 第一次通过时我错过了您的公式是相反的这个事实!

在调用aov函数之前,您需要将target_onset变成因子。不要使key_resp.rt成为一个因子。

所以顺序应该是...

data_clean$target_onset <- factor(data_clean$target_onset)

cond.aov <- aov(key_resp.rt ~ target_onset, data = data_clean)

summary(cond.aov)

TukeyHSD(cond.aov)

依赖变量(响应时间在波浪号左侧),独立分组变量在右侧。
如果您不将条件/分组变量设置为factor,则aov实际上会使用分组列中的数字进行lm,这可以反映在cond.aov的自由度中。
只要您已经拥有一个aov对象,最好使调用TukeyHSD尽可能简单。

如果你是r的新手,你可能还想研究一些像ggstatsplot这样的包,它可以为你做所有的事情,包括漂亮地绘制结果。 - Chuck P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接