Используйте stat_compare_means, чтобы проверить, значительно ли несколько групп отличаются от нуля? - PullRequest
0 голосов
/ 18 марта 2019

Я использую ggpubr::stat_compare_means в ggplot2, чтобы показать значение для нескольких боксплотов.Я пытаюсь найти способ показать, отличается ли каждый из моих блокпостов от определенного значения (0), но я могу только найти способы сравнить, отличаются ли они от определенной группы или средств всех групп.

Вот как выглядит мой график:

example plot

Некоторые группы выше 0, некоторые ниже 0. Что я хочу проверить, так это значимость каждой из нихотличается от 0.

В настоящее время stat_compare_means вычисляет значение из этого аргумента:

stat_compare_means(label = "p.signif", method = "t.test", ref.group = ".all.", label.y=1.1)

Я знаю, что мне нужно изменить аргумент "ref.group".В этом случае я думаю, что он берет среднее значение всех групп и проверяет, значительно ли отличается каждая группа от него.

Документация для ref.group гласит:

"Строка символов, определяющаяконтрольная группа. Если указано, для данной переменной группировки каждый из уровней группы будет сравниваться с контрольной группой (т. е. контрольной группой). ref.group также может быть «.all». В этом случае каждая из группированияуровни переменных сравниваются со всеми (то есть с базовым значением). "

Поскольку для этого требуется строка символов, единственный способ, с помощью которого я могу сравнить мои группы с 0, - создать фиктивную контрольную группу из 0, которая будетреферентная группа.Затем я могу указать эту группу в аргументе ref.group.

Есть ли другой способ сравнить эти группы с 0 ??Спасибо.

  df%>%ggplot(aes(x=species,y=weighted_change))+
  geom_hline(yintercept=0,linetype="dashed")+
  geom_boxplot(color="orangered")+
  labs(x="Species",y="Mean Change",title="Central Basin and Range")+
  theme(plot.title = element_text(hjust = 0.5,size = 12, face = "bold"))+
  theme(axis.title = element_text(size = 10, face = "bold"))+
  theme(axis.text=element_text(size=10,face="bold"))+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))+
  coord_cartesian(ylim=c(-1.1,1.1))+
  stat_compare_means(label = "p.signif", method = "t.test", ref.group = ".all.", label.y=1.1)

1 Ответ

0 голосов
/ 18 марта 2019

Я не думаю, что stat_compare_means на самом деле вам здесь очень поможет, так как он, по-видимому, предназначен в основном для сравнения между группами, и вы хотите провести расчет внутри каждой группы.Вместо этого вы можете вычислить тест самостоятельно, прежде чем перейти к ggplot:

library(tidyverse)

# Test whether each group differs from 0
t_tests = iris %>%
    group_by(Species) %>%
    summarise(P = t.test(Petal.Width, mu = 0)$p.value,
              Sig = ifelse(P < 0.05, "*", "ns"),
              MaxWidth = max(Petal.Width))

ggplot(iris, aes(x = Species, y = Petal.Width)) +
    geom_boxplot() +
    # Use the prepared table of test results as data for the geom
    geom_text(aes(label = Sig, y = MaxWidth + 0.2), size = 6,
              data = t_tests)

Поскольку у меня нет ваших данных, я использовал iris, но поскольку в iris также есть столбец species,должно быть достаточно ясно, что происходит.

Boxplot with significance stars

...