Компактный буквенный дисплей из попарного теста

Я хотел бы создать компактный буквенный дисплей из апостериорного теста, который я провел на линейной модели смешанных эффектов (lmer).

Вот пример того, что я хотел бы, когда я выполняю попарный t.test

df <- read.table("https://pastebin.com/raw/Dzfh7b2f", header=T,sep="")

library(rcompanion)
library(multcompView)
PT <- pairwise.t.test(df$fit,df$treatment, method=bonferroni)
PT = PT$p.value
PT1 = fullPTable(PT)
multcompLetters(PT1,
                compare="<",
                threshold=0.05,
                Letters=letters,
                reversed = FALSE)

Это отлично работает, потому что из pairwise.t.test легко просто извлечь значения p и создать нужную мне таблицу.

Теперь предположим, что я запускаю линейную модель, выполняю попарное сравнение и хотел бы также создать таблицу, как я сделал выше, которая создает для меня компактное отображение букв из извлеченных значений p.



library(multcomp)
mult<- summary(glht(model, linfct = mcp(treatment = "Tukey")), test = adjusted("holm"))
mult

Я могу видеть значения p, но последние 2-3 часа я потратил на то, чтобы выяснить, как просто извлечь эти значения (как я сделал выше с помощью pairwise.t.test), а затем создать компактную таблицу отображения букв.

Любая помощь горячо приветствуется. Всего наилучшего


person Andy    schedule 09.06.2020    source источник
comment
См. help("cld").   -  person Roland    schedule 09.06.2020
comment
Каким образом вид help("cld") поможет мне извлечь информацию, необходимую для создания таблицы, которую я хочу сделать? Я чувствую, что каждый парный тест очень специфичен для извлечения необходимой информации, как в случае с этим вопросом линейной модели.   -  person Andy    schedule 09.06.2020
comment
Вы читали его? Вы пишете, что хотели бы впоследствии, создать компактную таблицу отображения букв. Это то, что делает cld.   -  person Roland    schedule 09.06.2020
comment
Привет, @Roland: Думаю, я не понял ваш комментарий, прочитав его слишком быстро. Я последовал твоему предложению и заставил его работать нормально. Я ценю твой совет. Я получил от него ответ, который искал. :)   -  person Andy    schedule 09.06.2020


Ответы (2)


mod <- lm(Sepal.Width ~ Species, data = iris)

mod_means_contr <- emmeans::emmeans(object = mod,
                                    pairwise ~ "Species",
                                    adjust = "tukey")

mod_means <- multcomp::cld(object = mod_means_contr$emmeans,
                           Letters = letters)

### Bonus plot
library(ggplot2)

ggplot(data = mod_means,
       aes(x = Species, y = emmean)) +
  geom_point() +
  geom_errorbar(aes(ymin = lower.CL, 
                    ymax = upper.CL), 
                width = 0.2) +
  geom_text(aes(label = gsub(" ", "", .group)),
            position = position_nudge(x = 0.2)) +
  labs(caption = "Means followed by a common letter are\nnot significantly different according to the Tukey-test")

Создано 2021-06-03 пакетом REPEX (v2.0.0)

person Paul Schmidt    schedule 03.06.2021

Благодаря предложению @roland ответ прост:

mult<- summary(glht(model, linfct = mcp(treatment = "Tukey")), test = adjusted("holm"))

letter_display <- cld(mult)

letter_display

person Andy    schedule 09.06.2020