post emmeans 的临时结果未反映数据差异
post hoc results from emmeans does not reflect differences in data
我有一个包含三个因子变量的数据:
1.) Item_Type: Factor w/ 4 levels "control","Ar", "Eng", "Fr"
2.) Time of Testing: Factor w/ 3 levels "Pretest","Posttest", "Delayedtest"
3.) Accuracy: Factor w/ 2 levels "0", "1"
Item_Type 和 Time_of 测试都在主题变量内。
主要假设是在Pretest中,不会有Item_Type效果。然而,在后测中,阅读治疗后,除了控制项目外,从前测到后测(治疗后)的所有 Item_Type 均值应该有增长。也就是说,这种经济增长不应该出现在控制项目中,因为这些项目是唯一没有接受任何形式处理的项目。这些控制项仅出现在测试阶段,作为可以比较实验性 Item_Type 的基线。
我安装了我的玩家模型。
然后我 运行 post 临时比较。
FINAL_ACC <- glmer(Accuracy ~ Time_of_Testing*Item_Type + (1|subject) + (1|Item), family = "binomial", data=Task_df, na.action= na.exclude)
emmeans(FINAL_ACC, pairwise ~ Time_of_Testing*Item_Type, adjust= "bonferroni", type= "responce")
然而,post-hoc 结果表明控制项(其准确度均值实际上是所有其他 Item_Types 中最低的)确实具有最高的最小二乘均值。此外,在控制项中发现前测和后测之间在 Item_Types 的唯一显着差异(尽管所有其他项中前测和后测之间的实际平均差异为 +0.37,而控制项是只有 +.1).
我认为问题在于模型假定预测试和 post测试中的所有项目之间没有差异,这就是控制项目的拟合值具有误导性的原因。你觉得我应该如何解决这个问题。你能建议我做一些正交对比吗,因为我在 运行 emmeans 测试时没有这样做。是否建议添加另一个名为(处理,控制项目编码为 0,所有其他项目编码为 1?)
非常感谢您的帮助和建议。
正如评论中所建议的,您需要一个模型来预测所有基线案例的相同内容。我建议:首先创建一个新因素:
Task_df$Phase <- with(Taskdf,
factor((Time_Of_Testing == "pretest") + 2*(Time_Of_Testing != "pretest"),
labels = c("baseline","experimental")))
Task_df$Item_Type[Task_df$Phase == "baseline"] <- "pretest"
第二个确保所有基线案例对 Item_Type
具有相同的因子水平。
现在,拟合嵌套模型:
ULTIMATE_ACC <- glmer(Accuracy ~ Phase + Phase:(Time_of_Testing * Item_Type)
+ (1|subject) + (1|Item),
family = "binomial", data=Task_df, na.action= na.exclude)
然后做你的 EMM:
emm <- emmeans(ULTIMATE_ACC, ~ Time_Of_Testing * Item_Type, type = "response")
emm ### display estimates
pairs(emm, adjust = "bonferroni") ### pairwise comparisons
注意是"response"
不是"responce"
。
如果您不指定 adjust
,您将获得不太保守的 Tukey 调整。您也可以考虑,例如,pairs(emm, by = "Time_Of_Testing")
对一个因素的每个水平进行单独的成对比较。
我有一个包含三个因子变量的数据:
1.) Item_Type: Factor w/ 4 levels "control","Ar", "Eng", "Fr"
2.) Time of Testing: Factor w/ 3 levels "Pretest","Posttest", "Delayedtest"
3.) Accuracy: Factor w/ 2 levels "0", "1"
Item_Type 和 Time_of 测试都在主题变量内。
主要假设是在Pretest中,不会有Item_Type效果。然而,在后测中,阅读治疗后,除了控制项目外,从前测到后测(治疗后)的所有 Item_Type 均值应该有增长。也就是说,这种经济增长不应该出现在控制项目中,因为这些项目是唯一没有接受任何形式处理的项目。这些控制项仅出现在测试阶段,作为可以比较实验性 Item_Type 的基线。
我安装了我的玩家模型。
然后我 运行 post 临时比较。
FINAL_ACC <- glmer(Accuracy ~ Time_of_Testing*Item_Type + (1|subject) + (1|Item), family = "binomial", data=Task_df, na.action= na.exclude)
emmeans(FINAL_ACC, pairwise ~ Time_of_Testing*Item_Type, adjust= "bonferroni", type= "responce")
然而,post-hoc 结果表明控制项(其准确度均值实际上是所有其他 Item_Types 中最低的)确实具有最高的最小二乘均值。此外,在控制项中发现前测和后测之间在 Item_Types 的唯一显着差异(尽管所有其他项中前测和后测之间的实际平均差异为 +0.37,而控制项是只有 +.1).
我认为问题在于模型假定预测试和 post测试中的所有项目之间没有差异,这就是控制项目的拟合值具有误导性的原因。你觉得我应该如何解决这个问题。你能建议我做一些正交对比吗,因为我在 运行 emmeans 测试时没有这样做。是否建议添加另一个名为(处理,控制项目编码为 0,所有其他项目编码为 1?)
非常感谢您的帮助和建议。
正如评论中所建议的,您需要一个模型来预测所有基线案例的相同内容。我建议:首先创建一个新因素:
Task_df$Phase <- with(Taskdf,
factor((Time_Of_Testing == "pretest") + 2*(Time_Of_Testing != "pretest"),
labels = c("baseline","experimental")))
Task_df$Item_Type[Task_df$Phase == "baseline"] <- "pretest"
第二个确保所有基线案例对 Item_Type
具有相同的因子水平。
现在,拟合嵌套模型:
ULTIMATE_ACC <- glmer(Accuracy ~ Phase + Phase:(Time_of_Testing * Item_Type)
+ (1|subject) + (1|Item),
family = "binomial", data=Task_df, na.action= na.exclude)
然后做你的 EMM:
emm <- emmeans(ULTIMATE_ACC, ~ Time_Of_Testing * Item_Type, type = "response")
emm ### display estimates
pairs(emm, adjust = "bonferroni") ### pairwise comparisons
注意是"response"
不是"responce"
。
如果您不指定 adjust
,您将获得不太保守的 Tukey 调整。您也可以考虑,例如,pairs(emm, by = "Time_Of_Testing")
对一个因素的每个水平进行单独的成对比较。