在 emmeans 中定义对比

Posted

技术标签:

【中文标题】在 emmeans 中定义对比【英文标题】:Defining contrasts in emmeans 【发布时间】:2021-12-02 03:27:50 【问题描述】:

我需要使用 emmeans 来计算营养水平和食物网处理的每种组合的估计边际均值(即 H + A、H + G、H + P、L + A、L + G、L + P )。

然后,我需要定义对比来测试(1)H 处理中 G 是否不同于 A,(2)L 处理中 G 是否不同于 A,以及(3)G 是否不同于 A ,对 L 和 H 处理进行平均。

这就是我所拥有的:

library(emmeans)
library(magrittr)

contmod=emmeans(modlog, specs = ~ NutrientLevel + FoodWeb)
contmod

HA = c(1,0,0,0,0,0)
LA = c(0,1,0,0,0,0)
HG = c(0,0,1,0,0,0)
LG = c(0,0,0,1,0,0)
HP = c(0,0,0,0,1,0)
LP = c(0,0,0,0,0,1)

cont=contrast(contmod, method = list("HG - HA", "LG - LA"))

但是,我收到错误消息:

Error in contrast.emmGrid(contmod, method = list("HG - HA", "LG - LA")) 
: Nonconforming number of contrast coefficients

我不知道如何设置第三个对比度。

这是我的数据示例:

NutrientLevel   ShadeCloth  FoodWeb Tank    Zoop_Chao1  Phyto#taxa  Phyto_Chao1 Block
H   N   A   15  0   9   9   1
H   N   A   115 0   8   11  4
H   Y   G   30  11  14  17  1
H   Y   G   60  18  12  18  2
H   Y   P   76  9   10  11  2
H   Y   P   88  13  8   9.5 3
L   N   A   16  0   15  15  1
L   N   A   24  0   8   8   2
L   N   G   10  8   17  17  1
L   N   G   82  10  18  20  3

【问题讨论】:

【参考方案1】:

这不是emmeans 定义对比度的方式。您还提供了一个字符串,而不是您创建的变量。

fit <- lm(mpg ~ factor(cyl), data = mtcars)
means <- emmeans(fit, specs = ~ cyl)
contr <- list("6 vs 4" = c(1, -1, 0),
              "8 vs 4" = c(1, 0, -1))
contrast(means, method = contr)

 contrast estimate   SE df t.ratio p.value
 6 vs 4       6.92 1.56 29 4.441   0.0001 
 8 vs 4      11.56 1.30 29 8.905   <.0001 

【讨论】:

以上是关于在 emmeans 中定义对比的主要内容,如果未能解决你的问题,请参考以下文章

从 R 中的 emmeans 中删除一个对比

无法通过 R 中的 emmeans 对比截距

为 R 中的许多列运行具有 emmeans 和对比的 LM

如何在 R 中的 emmeans() 命令中评估字符串变量作为因子?

我可以在 LME 模型中使用 emmeans 吗?

在按钮中自定义 bootstrap 5 文本颜色对比度