Позиционирование выбранных значений p с использованием ggboxplot - PullRequest
0 голосов
/ 05 июня 2019

Я использую набор данных mtcars в качестве примера для запуска приведенного ниже кода.

library(ggplot2)
library(ggpubr)
ggboxplot(mtcars, x = "cyl", y = "drat", fill = "cyl", 
          facet.by = "am", width = 0.5, outlier.shape = NA, 
          bxp.errorbar = TRUE, bxp.errorbar.width = 0.2) + 
  stat_compare_means(aes(label = ifelse(p < 1.e-4, 
                                        sprintf("p = %2.1e", as.numeric(..p.format..)), 
                                        sprintf("p = %5.4f", as.numeric(..p.format..)))), 
                     method = "wilcox.test", paired = FALSE)

У меня проблемы с изменением этого для достижения следующего.В каждом аспекте я хотел бы добавить только два значения p wilcox.test, одно из которых сравнивает cyl=4 с cyl=6, а другое сравнивает cyl=4 с cyl=8.Затем я хотел бы, чтобы каждое из этих значений p было расположено над полями cyl=6 и cyl=8 соответственно.

Мне нравится использовать пакет ggsignif, но мне нужно экстраполировать этот пример на 9сравнения, что делает ggsignif менее подходящим (панели сравнения занимают слишком много места).

Спасибо за любые предложения.

1 Ответ

4 голосов
/ 05 июня 2019

Вы хотите сравнить каждую другую группу с «эталонной» группой, cyl=4.Если вы используете аргумент ref.group для stat_compare_means, он должен дать вам то, что вы хотите:

ggboxplot(mtcars, x = "cyl", y = "drat", fill = "cyl", 
          facet.by = "am", width = 0.5, outlier.shape = NA, 
          bxp.errorbar = TRUE, bxp.errorbar.width = 0.2) + 
    stat_compare_means(
        aes(label = ifelse(p < 1.e-4, 
                           sprintf("p = %2.1e", as.numeric(..p.format..)), 
                           sprintf("p = %5.4f", as.numeric(..p.format..)))), 
        ref.group = "4",
        method = "wilcox.test", paired = FALSE
    )
...