【发布时间】:2019-08-22 20:25:27
【问题描述】:
简介和当前完成的工作
[注意:对于那些感兴趣的人,我在最后提供了代码来复制我的示例。]
我有一些数据,我进行了方差分析,得到了 Tukey 的成对比较:
model1 = aov(trt ~ grp, data = df)
anova(model1)
> TukeyHSD(model1)
diff lwr upr p adj
B-A 0.03481504 -0.40533118 0.4749613 0.9968007
C-A 0.36140489 -0.07874134 0.8015511 0.1448379
D-A 1.53825179 1.09810556 1.9783980 0.0000000
C-B 0.32658985 -0.11355638 0.7667361 0.2166301
D-B 1.50343674 1.06329052 1.9435830 0.0000000
D-C 1.17684690 0.73670067 1.6169931 0.0000000
我还可以绘制 Tukey 的成对比较
> plot(TukeyHSD(model1))
我们可以从 Tukey 的置信区间和图中看出 A-B、B-C 和 A-C 没有显着差异。
问题
我被要求创建一个叫做“下划线图”的东西,描述如下:
我们将组均值绘制在实线上,并在组均值之间绘制一条线段,以表明这两个特定组之间没有显着差异。
获得手段并不难:
> aggregate(df$trt ~ df$grp, FUN = mean)
df$grp df$trt
1 A 2.032086
2 B 2.066901
3 C 2.393491
4 D 3.570338
期望的输出
使用本示例中的数据,所需的绘图应如下所示:
组之间存在一条没有显着差异的线段(即,Tukey 指出的 A-B、B-C 和 A-C 之间的线段)。
注意:请注意,上面的图不是按比例绘制的,它是在主题演讲中创建的,仅用于说明目的。
有没有办法使用 R 获得上述“下划线图”(使用基本 R 或 ggplot2 等库)?
编辑
这是我用来创建上述示例的代码:
library(data.table)
set.seed(3)
A = runif(20, 1,3)
A = data.frame(A, rep("A", length(A)))
B = runif(20, 1.25,3.25)
B = data.frame(B, rep("B", length(B)))
C = runif(20, 1.5,3.5)
C = data.frame(C, rep("C", length(C)))
D = runif(20, 2.75,4.25)
D = data.frame(D, rep("D", length(D)))
df = list(A, B, C, D)
df = rbindlist(df)
colnames(df) = c("trt", "grp")
【问题讨论】:
-
@d.b 我已经编辑了问题并提供了用于在问题中创建值的代码。代码可以在问题的末尾找到。我使用了
set.seed,所以这个示例数据应该是可重现的。 -
@Matt:谢谢你的建议。
mmcplot创建了一个二维点阵,“下划线图”是一维的。