使用stat_compare_means来测试多个组是否与零明显不同?

问题描述 投票:0回答:1

我在ggplot2中使用ggpubr::stat_compare_means来显示多个箱图的重要性。我试图找到一种方法来显示我的每个箱图是否与某个值(0)显着不同,但我只能找到比较它们是否与特定组不同的方法,或者是所有组的均值。

这是我的情节看起来像:

有些组高于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。“。例如,将每个分组变量级别与所有(即basemean)进行比较。“

由于这需要一个字符串,我能想到将我的组与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)
r ggplot2 boxplot significance
1个回答
0
投票

我不认为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,但由于虹膜也有species列,所以应该相当清楚发生了什么。

Boxplot with significance stars

© www.soinside.com 2019 - 2024. All rights reserved.