Символы вместо чисел p-значения на ggplot - PullRequest
1 голос
/ 04 ноября 2019

Я создал следующие данные и сюжет. Как заменить значение p символами?

  • Если значение p больше 0,05 - не показывать,
  • Если значение p находится в диапазоне от 0,01 до 0,05, дисплей *
  • Если значение p меньше 0,01, отобразить **

Есть ли для него пакет? Кто-нибудь может предложить пример?

Я обнаружил, что могу добавить "label =" p.signif "к stat_compare_means, но он отображает" ns "вместо того, чтобы не отображать его.

df <- data.frame("Class" = c("A","A","A","A","A","A","A","A","A",
                             "B","B","B","B","B","B","B","B","B",
                             "C","C","C","C","C","C","C","C","C"), 
                   "Subject" = c("Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
                                 "Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
                                 "Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing"),
                   "Score" = c(round(runif(27,0,100))))

library("ggplot2")

comp <- list (c("A","B"), c("A", "C"),  c("B", "C"))

ggplot(data = df, aes(x = Class, y = Score, color = Subject)) + 
  facet_wrap(~Subject) +
  geom_violin(trim = FALSE) +
  stat_compare_means(aes(group = Subject), method = "t.test", comparisons = comp)

Plot

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Очевидно, вы используете пакет functions из ggpubr. Добавление label = "p.signif", hide.ns = TRUE сделает:

ggplot(data = df, aes(x = Class, y = Score, color = Subject)) + 
  facet_wrap(~Subject) +
  geom_violin(trim = FALSE) +
  stat_compare_means(aes(group = Subject), method = "t.test", 
                     label = "p.signif", hide.ns = TRUE, 
                     comparisons = comp)

enter image description here

0 голосов
/ 04 ноября 2019

Мы можем использовать symnum.args в stat_compare_means и назначать cutpoints и symbols в соответствии с нашими требованиями.

library(ggplot2)
library(ggpubr)

ggplot(data = df, aes(x = Class, y = Score, color = Subject)) + 
   facet_wrap(~Subject) +
   geom_violin(trim = FALSE) +
  stat_compare_means(aes(group = Subject), method = "t.test", comparisons = comp, 
                 symnum.args = list(cutpoints = c(0, 0.01, 0.05, Inf), 
                                    symbols = c("**", "*", "")))

enter image description here

...