[英]In R studio I receive an error for a post hoc test TukeyHSD for a two-way ANOVA with an interaction
[英]How can I run post-hoc tests for a significant interaction in Two-Way Mixed ANOVA with the correct (within subjects) error term in R?
我正在尝试使用“afex”和“emmeans”包在双向混合模型方差分析上运行 Fisher 的 LSD 事后测试。 我使用的数据有一个具有 2 个级别的主体间因子“组”和一个具有 3 个级别的主体内因子“时间”(即它的 2 x 3 设计)。 DV是“分数”。 这是我为复制错误而创建的一些模型数据:
library(tidyverse)
library(dplyr)
library(afex)
library(emmeans)
# Create data
set.seed(35)
df1 <- data.frame(id = factor(rep(1:12, each = 3)),
time = factor(rep(c(1:3), 12)),
group = factor(rep(1:2, each = 18)),
score = rnorm(36, 20, 5))
...这是我构建方差分析模型的方式:
# Run Two-way Mixed Model ANOVA
model1 <- aov_car(score ~ time*group +
Error(id/time),
data = df1)
这个双向方差分析的输出 F 表看起来像这样,但是,当我在我的实际数据上运行它时,会产生显着的交互效应:
Anova Table (Type 3 tests)
Response: score
Effect df MSE F ges p.value
1 group 1, 10 27.50 4.11 + .130 .070
2 time 1.72, 17.19 28.02 0.50 .031 .589
3 group:time 1.72, 17.19 28.02 1.09 .065 .350
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘+’ 0.1 ‘ ’ 1
因为在我的实际数据中有显着的交互作用,所以我想进行后续测试。 具体来说,我想分别看看时间对每个组的影响(以受试者内的方式)。 我尝试使用以下代码运行简单的主效应测试和多重比较(Fisher's LSD):
# Run whithin-subject simple main effect
simple.effect <-emmeans(model1, ~time|group, model =
"multivariate")
test(pairs(simple.effect), joint=TRUE)
# Run Fisher's LSD multiple comparison
pairs(simple.effect, adjust='none')
这会返回:
> # Run whithin-subject simple main effect
> simple.effect <-emmeans(model1, ~time|group, model = "multivariate")
> test(pairs(simple.effect), joint=TRUE)
group df1 df2 F.ratio p.value note
1 2 10 1.009 0.3989 d
2 2 10 0.374 0.6969 d
d: df1 reduced due to linear dependence
> # Run Fisher's LSD multiple comparison
> pairs(simple.effect, adjust='none')
group = 1:
contrast estimate SE df t.ratio p.value
X1 - X2 -3.792 2.74 10 -1.386 0.1959
X1 - X3 0.231 2.35 10 0.098 0.9236
X2 - X3 4.023 3.33 10 1.209 0.2544
group = 2:
contrast estimate SE df t.ratio p.value
X1 - X2 -0.199 2.74 10 -0.073 0.9435
X1 - X3 -2.030 2.35 10 -0.863 0.4082
X2 - X3 -1.831 3.33 10 -0.550 0.5942
对于这两组测试,df 错误读数为 10(这是与“组”相关的错误 - 受试者之间的因素)。 我相信 df 错误实际上应该是 17.19 (这将对应于主体内因子(“时间”)的错误项。
在我看来,“emmeans”似乎使用了错误的 df/MS 错误来运行后续测试,但我不知道如何告诉它使用正确的错误。 任何帮助将不胜感激。
这就是我得到的:
> simple.effect <- emmeans(model1, ~time|group, model = "univariate")
aov object missing, substituting multivariate/lm model.
to get univariate tests, refit ANOVA with include_aov = TRUE
请注意,请求单变量模型并没有产生它。 按照消息中的建议,我重新安装了模型:
> model2 <- aov_car(score ~ time*group +
+ Error(id/time), include_aov = TRUE,
+ data = df1)
Contrasts set to contr.sum for the following variables: group
> simple.effect2 <- emmeans(model2, ~time|group, model = "univariate")
> pairs(simple.effect2)
group = 1:
contrast estimate SE df t.ratio p.value
X1 - X2 -3.792 2.83 20 -1.338 0.3912
X1 - X3 0.231 2.83 20 0.082 0.9963
X2 - X3 4.023 2.83 20 1.420 0.3499
group = 2:
contrast estimate SE df t.ratio p.value
X1 - X2 -0.199 2.83 20 -0.070 0.9973
X1 - X3 -2.030 2.83 20 -0.716 0.7568
X2 - X3 -1.831 2.83 20 -0.646 0.7966
P value adjustment: tukey method for comparing a family of 3 estimates
成对差异均显示 20 df 此外(未显示),均值本身具有 29.9 df(请注意,您必须指定单变量模型,因为它仍默认为多变量模型)。
顺便说一句,当 P 值为 0.35 时,我认为大多数用户不会认为交互“显着”。 他们只会在time
上获得 EMM,而不以group
为条件。 多变量模型的 df 保持在 10,单变量模型的 df 保持在 20。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.