使用stat_compare_means测试多个组是否显着不同于零?

时间:2019-03-17 23:54:11

标签: r ggplot2 boxplot significance

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

这是我的情节:

example plot

有些组大于0,有些组小于0。我要测试的是每个组是否都明显不同于0。

当前stat_compare_means正在根据此参数计算重要性:

ggpubr::stat_compare_means

我知道我需要更改“ ref.group”参数。在这种情况下,我认为这是取所有组的平均值,并测试每个组是否与之显着不同。

ref.group的文档说:

“指定参考组的字符串。如果指定,对于给定的分组变量,会将每个组级别与参考组(即对照组)进行比较。 ref.group也可以是“ .all”。在这种情况下,会将每个分组变量级别与所有分组变量级别(即基本均值)进行比较。”

因为这需要一个字符串,所以我想到将组与0进行比较的唯一方法是使虚拟控制组0成为参考组。然后,我可以在ref.group参数中定向到该组。

还有其他方法可以将这些组与0进行比较吗?谢谢。

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

1 个答案:

答案 0 :(得分: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,但是由于iris拥有一个species列,因此应该很清楚发生了什么。

Boxplot with significance stars