Введение и текущая работа выполнена
[ Примечание : Для заинтересованных лиц в конце я предоставил код для воспроизведения моего примера.]
У меня есть некоторые данные, и я провел анализ ANOVA и получил парные сравнения Тьюки:
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
Я также могу построить парные сравнения Тьюки
> plot(TukeyHSD(model1))
Из доверительных интервалов Тьюки и графика видно, что 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
Желаемый результат
ИспользованиеДанные в этом примере, желаемоеt должен выглядеть так, как показано ниже:
Между группами существует незначительный отрезок (т.е. отрезок между * 1047)*, B-C
и A-C
, как указано Тьюки).
Примечание: Обратите внимание, что приведенный выше график не в масштабе, и он был создан в основном виде только для иллюстрации.
Есть ли способ получить "подчеркивание"plot "описан выше с использованием 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")