0

我正在尝试创建一个脚本,使用该脚本可以自动创建一组图(分面和分组),其中 p 值使用ggpubrandrstatix包计算和绘制。

set.seed(1234)

创建数据集
data_set <- 
  data.frame(
    var1 = rep(c("N", "N", "Y", "Y"),4),
    var2 = c(rep("type1",8), rep("type2", 8)),
    var3 = c(rep("type1",4),rep("type2",8),rep("type1",4)),
    x = rnorm(16),
    y = rnorm(16),
    z = rnorm(16)
    )
x对变量与var2分组依据var3和分面依据(见下文) 执行 t 检验,并var1使用rstatix函数 将结果存储为数据框
stat.test <- data_set %>%
 group_by(var2, var1) %>%
 t_test( x ~ var3) %>%
 adjust_pvalue(method = "bonferroni") %>%
 add_significance("p.adj") %>%
 add_xy_position(x = "var2", dodge = 0.8)

x对 变量执行另一个 t 检验,var3这次使用分组的数据var2并再次分面,var1并执行 amutate以更改一些变量,以便它们在使用下面的函数绘制时正确对齐。
stat.test.1 <- data_set %>%
  group_by(var3, var1) %>%
  t_test( x ~ var2) %>%
  adjust_pvalue(method = "bonferroni") %>%
  add_significance("p.adj") %>%
  add_xy_position(x = "var3", dodge = 0.8) %>%
  mutate(
    xmin = xmin + c(0, 0, -0.6, -0.6),
    xmax = xmax + c(0.6, 0.6, 0, 0),
    y.position = y.position + c(1, 1, 2, 2)
  )
绘图使用ggboxplot
ggboxplot(
  data_set,
  x = "var2",
  add = "mean_sd",
  y = "x",
  color = "var3",
  facet.by = "var1"
) +
  stat_pvalue_manual(stat.test,
                     label = "p.adj",
                     tip.length = 0.01,
                     hide.ns = FALSE) +
  stat_pvalue_manual(
    stat.test.1,
    label = "p.adj",
    tip.length = 0.01,
    hide.ns = FALSE
  ) +
  scale_y_continuous(expand = expansion(mult = c(0.01, 0.1)))

所有这些都符合我的预期,我得到了我想要的图以及绘制的显着性值(虽然并不完美,但需要对显着性条的 y 位置进行一些调整)。

在此处输入图像描述

我想要做的是创建一个函数或脚本,使用tidy方法为所有数字变量(和)创建一组类似的箱线图x,以与此图相同的方式分组和分面。我能够自己获取图表,但难以生成统计数据框并使用它们将 p 值和显着性条添加到图表中。谢谢。yz

4

0 回答 0