我正在尝试创建一个脚本,使用该脚本可以自动创建一组图(分面和分组),其中 p 值使用ggpubr
andrstatix
包计算和绘制。
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 值和显着性条添加到图表中。谢谢。y
z