我正在使用emmeans与对照组进行自定义比较。如果我只想比较一个因素,trt.vs.ctrl
方法对我来说是完美的,但是当我将比较设置为更复杂时,即失败(或者我失败)(即对照组是由以下因素的特定组合来描述的) 2个以上的变量)。
下面的示例代码。假设使用pigs
数据,我想将所有饮食与低百分比的鱼类饮食进行比较。请注意,在nd
数据帧中,“ fish”仅与9%关联。但是,当我运行emmeans
时,该功能不会在嵌套中显示,并且在控件正确的情况下,处理组还包括各种值的鱼和百分数。这表示p-value调整错误。
所以我可以想到两种方法:
emmeans
进入嵌套,或dunnettx
调整(=我可以不使用调整,然后取出我真正想要的测试,然后自己调整p值?)。> library(emmeans)
library(dplyr)
pigs.lm <- lm(log(conc) ~ source + factor(percent), data = pigs)
nd <- expand.grid(source = levels(pigs$source), percent = unique(pigs$percent)) %>%
filter(percent == 9 | source != "fish")
emmeans(pigs.lm, trt.vs.ctrl ~ source + percent,
data = nd, covnest = TRUE, cov.reduce = FALSE)
感谢您的帮助。
使用include
的建议效果很好。如果将来其他人遇到相同的问题,请在此处发布我的代码。
library(emmeans)
library(dplyr)
library(tidyr)
pigs.lm <- lm(log(conc) ~ source + factor(percent), data = pigs)
nd <- expand.grid(source = levels(pigs$source), percent = unique(pigs$percent)) %>%
filter(percent == 9 | source != "fish")
ems <- emmeans(pigs.lm, trt.vs.ctrl ~ source + percent,
data = nd, covnest = TRUE, cov.reduce = FALSE)
# to identify which levels to exclude - in this case,
# I only want the low-percent fish to remain as the ref level
aux <- as.data.frame(ems[[1]]) %>%
mutate(ID = 1:n()) %>%
filter(!grepl("fish", source) | ID == 1)
emmeans(pigs.lm, trt.vs.ctrl ~ source + percent,
data = nd, covnest = TRUE, cov.reduce = FALSE, include = aux$ID)
我正在使用Emmeans与对照组进行自定义比较。如果我只想比较一个因素,则trt.vs.ctrl方法对我来说非常理想,但是当我...
我对您要完成的目标尚不完全清楚,但我不认为过滤数据是解决方案。