如何在 R 中设置正交对比?

yay*_*ams 0 r orthogonal contrast emmeans

我有一个由多种类型和两种处理方法组成的数据集(示例如下)。我使用 R 中的 lm() 函数来分析它,并使用 emmeans 进行事后测试。

m <- lm(Y ~ Type*Treatment)
Anova(m, type = 3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何在 R 中设置正交对比?如果我跑

emmeans(m, ~Type*Treatment)
Run Code Online (Sandbox Code Playgroud)

它比较一切。我有兴趣比较类型中的不同治疗和治疗中的不同类型,但不是不同的治疗和不同类型。换句话说,我想比较已处理的 A 与未处理的 A,或已处理的 A 与已处理的 B,但不是已处理的 A 与未处理的 B。

如果这个问题包含在另一个问题中,我很抱歉。我搜索了论坛,但没有找到任何可以应用于这种情况的内容。谢谢。

jan*_*glx 5

emmeans(m, list(~ Type | Treatment, ~ Treatment | Type))
Run Code Online (Sandbox Code Playgroud)

为了弄清楚这些测试是否真的是您想要测试的,我恳请您在 stats.stackexchange.com 上提出这个问题并了解更多背景信息。

可重现的例子:

library(emmeans)
pigs.lm <- lm(log(conc) ~ source * factor(percent), data = pigs)
pigs.emm.s <- emmeans(pigs.lm,  list(~ source | percent, ~ percent | source))
pairs(pigs.emm.s)
#> $`emmeans of source | percent`
#> percent =  9:
#>  contrast    estimate     SE df t.ratio p.value
#>  fish - soy   -0.2932 0.1061 17  -2.763  0.0338
#>  fish - skim  -0.3153 0.1061 17  -2.971  0.0222
#>  soy - skim   -0.0221 0.0949 17  -0.233  0.9706
#> 
#> percent = 12:
#>  contrast    estimate     SE df t.ratio p.value
#>  fish - soy   -0.2495 0.0949 17  -2.629  0.0442
#>  fish - skim  -0.3347 0.0949 17  -3.526  0.0069
#>  soy - skim   -0.0852 0.0949 17  -0.898  0.6489
#> 
#> percent = 15:
#>  contrast    estimate     SE df t.ratio p.value
#>  fish - soy   -0.2348 0.1061 17  -2.212  0.0976
#>  fish - skim  -0.4700 0.1163 17  -4.043  0.0023
#>  soy - skim   -0.2352 0.1061 17  -2.216  0.0969
#> 
#> percent = 18:
#>  contrast    estimate     SE df t.ratio p.value
#>  fish - soy   -0.2836 0.1342 17  -2.112  0.1169
#>  fish - skim  -0.6157 0.1342 17  -4.587  0.0007
#>  soy - skim   -0.3321 0.1644 17  -2.020  0.1376
#> 
#> Results are given on the log (not the response) scale. 
#> P value adjustment: tukey method for comparing a family of 3 estimates 
#> 
#> $`emmeans of percent | source`
#> source = fish:
#>  contrast estimate     SE df t.ratio p.value
#>  9 - 12    -0.1849 0.1061 17  -1.742  0.3339
#>  9 - 15    -0.1894 0.1163 17  -1.629  0.3897
#>  9 - 18    -0.2300 0.1061 17  -2.168  0.1723
#>  12 - 15   -0.0045 0.1061 17  -0.042  1.0000
#>  12 - 18   -0.0452 0.0949 17  -0.476  0.9634
#>  15 - 18   -0.0407 0.1061 17  -0.383  0.9802
#> 
#> source = soy:
#>  contrast estimate     SE df t.ratio p.value
#>  9 - 12    -0.1412 0.0949 17  -1.487  0.4662
#>  9 - 15    -0.1310 0.0949 17  -1.380  0.5281
#>  9 - 18    -0.2204 0.1342 17  -1.642  0.3829
#>  12 - 15    0.0102 0.0949 17   0.108  0.9995
#>  12 - 18   -0.0792 0.1342 17  -0.590  0.9336
#>  15 - 18   -0.0895 0.1342 17  -0.666  0.9082
#> 
#> source = skim:
#>  contrast estimate     SE df t.ratio p.value
#>  9 - 12    -0.2043 0.0949 17  -2.152  0.1767
#>  9 - 15    -0.3441 0.1061 17  -3.242  0.0225
#>  9 - 18    -0.5305 0.1342 17  -3.952  0.0051
#>  12 - 15   -0.1398 0.1061 17  -1.317  0.5651
#>  12 - 18   -0.3262 0.1342 17  -2.430  0.1090
#>  15 - 18   -0.1864 0.1424 17  -1.309  0.5699
#> 
#> Results are given on the log (not the response) scale. 
#> P value adjustment: tukey method for comparing a family of 4 estimates
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2021 年 10 月 7 日创建(v2.0.1)