gpt4 book ai didi

R ggpubr : add mean horizontal line & pair comparisons by group?

转载 作者:行者123 更新时间:2023-12-04 12:17:40 26 4
gpt4 key购买 nike

我最近发现很棒 ggpubr包裹。当我与多个小组合作时,我喜欢将我的数据拆分为多个方面 ( facet.by )。

我的问题由与同一张图相关的两个子问题组成。我想要

  • 每组添加唯一的平均水平线 , 和
  • 仅按组绘制显着比较

  • 我的目标是显示箱线图及其对比较显着性值。由于显着性可能因组而异,我可以只绘制显着组,或指定显着比较,并按组单独绘制它们。

    示例数据:
    library(ggpubr)
    library(ggplot2)

    # Create data
    # :::::::::::::::::::::::::::::::::::::::::::::::::::
    data("ToothGrowth")
    df <- ToothGrowth

    # Create basic plot
    p <- ggboxplot(df,
    x = "dose",
    y = "len",
    color = "dose",
    palette =c("#00AFBB", "#E7B800", "#FC4E07"),
    add = "jitter",
    facet.by = "supp", # define faceting
    shape = "dose")

    # Add horizontal line per each group???
    p + geom_hline(yintercept = mean(df$len), #aggregate(len ~ supp, df, mean)$len, # mean(df$len),
    linetype = 2,
    group = "supp")

    造成

    enter image description here .

    我试图计算每组的平均值( #aggregate(len ~ supp, df, mean)$len ),但它只添加了两行。

    要指定配对箱线图以显示显着性结果,我可以添加
    my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )

    显着性结果取决于组。然而,我只想展示重要的比较。如何仅指定每组重要的对?就像是:
    my_comp_OJ <- list( c("0.5", "1"), c("0.5", "2"))
    my_comp_VC <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2"))

    申请 hide.ns = TRUE仅隐藏 ns ,但保持线对的指示。
    p +  stat_compare_means(comparisons = my_comparisons,
    label = "p.signif",
    hide.ns = TRUE) + # Add pairwise comparisons p-value
    stat_compare_means(label.y = 50) # Add global p-value

    enter image description here

    最佳答案

    您必须计算每个组的总平均值,并有一个 data.frame 表示平均值来自哪个组。

    > aggregate(len ~ supp, data = df, FUN = mean)
    supp len
    1 OJ 20.66333
    2 VC 16.96333

    将其包含在 geom_hline 中是微不足道的.
    grand.means <- aggregate(len ~ supp, data = df, FUN = mean)
    ggboxplot(df,
    x = "dose",
    y = "len",
    color = "dose",
    palette = c("#00AFBB", "#E7B800", "#FC4E07"),
    add = "jitter",
    facet.by = "supp", # define faceting
    shape = "dose") +
    geom_hline(data = grand.means, aes(yintercept = len),
    linetype = 2,
    group = "supp")

    注意这里有一个 data争论和我男人 lenyinterceptaes称呼。这使得 ggplot意识到它正确适用 aes变量到相应的组,无论您如何应用它们。

    enter image description here

    至于调整后的重要性栏,我认为没有现成的答案,因为 ggpubr电话 ggsignif确实有 manual参数但前者没有实现它,至少在我浏览源代码时可以看到。我认为有这条线很好,因为它表明进行了比较,即使它不重要。

    关于R ggpubr : add mean horizontal line & pair comparisons by group?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161437/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com