我想对一个lsmeans对象使用contrast()来执行一些特定的计划比较,但是我找不到能够执行想要的比较的方法。我想比较一个因素是否在两个因素水平中的一个上有影响。例如,在下面,我想比较A,C是否不同于B,C,以及A,D是否不同于B,D。我不想比较A,C是不同于B,D还是不同于A,D等。
fac_one <- c(rep("A", 200), rep ("B", 200))
fac_two <- rep(c("C", "D"), 200)
dats <- data.frame(fac_one= c(rep("A", 200), rep ("B", 200)),
fac_two= rep(c("C", "D"), 200))
dats$y <- NA
dats$y[dats$fac_one=="A" & dats$fac_two=="C"] <-
rnorm(100, mean=0.9, sd=1)
dats$y[dats$fac_one=="B" & dats$fac_two=="C"] <-
rnorm(100, mean=0.9, sd=1)
dats$y[dats$fac_one=="A" & dats$fac_two=="D"] <-
rnorm(100, mean=0.6, sd=1)
dats$y[dats$fac_one=="B" & dats$fac_two=="D"] <-
rnorm(100, mean=1.4, sd=1)
mod <- lm(y ~ fac_one*fac_two, data = dats)
Anova(mod)
lsmns <- lsmeans(mod, ~fac_one*fac_two)
#currently does many contrasts that I do not want to do
contrast(lsmns)
谢谢!
答案 0 :(得分:1)
contrast(lsmns, “pairwise”, by = “fac_two”)
在文档中
答案 1 :(得分:1)
您可以使用|
而不是*
来告诉emmeans
根据该因素将它们分成几组。然后,您可以使用pairs
在每个组中进行成对比较。还请注意,尽管此功能在较旧的版本中也已在最新版本中从emmeans
重命名为lsmeans
,但包和函数均已重命名。
> library(emmeans)
> lsmns <- emmeans(mod, ~fac_one|fac_two)
> pairs(lsmns)
fac_two = C:
contrast estimate SE df t.ratio p.value
A - B -0.044 0.142 396 -0.309 0.7574
fac_two = D:
contrast estimate SE df t.ratio p.value
A - B -0.974 0.142 396 -6.848 <.0001
PS。很好的可复制示例。 :)