1

我想将 contrast() 与 lsmeans 对象一起使用来执行一些特定的计划比较,但我找不到执行我想要的比较的方法。我想比较一个因素是否对两个因素水平的任何一个产生影响。例如,在下面我想比较 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)

谢谢!

4

2 回答 2

2
contrast(lsmns, “pairwise”, by = “fac_two”)

它在文档中

于 2019-10-04T20:42:48.087 回答
1

您可以使用|而不是*告诉emmeans根据该因素将它们分成组。然后,您可以使用pairs在每个组内进行成对比较。另请注意,在最新版本中,包和函数都已重命名为emmeansfrom 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。很好的可重复的例子。:)

于 2019-10-04T20:49:23.957 回答