概述:本文介绍如何轻松地为ggplot图形添加P值和显著性水平:
使用工具: R语言中的ggplot2包和ggpubr包
均值比较的常见方法:
方法 | R实现函数 | 描述 |
---|---|---|
T-test | t.test() | 比较两组(参数检验) |
Wilcoxon test | wilcox.test() | 比较两组(非参数检验) |
ANOVA | aov()或anova() | 比较多组(参数检验) |
Kruskal-Wallis | kruskal.test() | 比较多组(非参数检验) |
介绍两个ggpubr包中的函数
df<-ToothGrowth
ggplot(df,aes(x=supp,y=len,fill=supp))+
geom_boxplot(position=position_dodge(),width=0.5)+
geom_jitter(width = 0.2)+
scale_color_manual(c("red","blue"))+
stat_compare_means(method="t.test",paired=F,aes(label=..p.signif..),label.x=1.5,label.y = 30) #label指定显示计算出的显著性标签,这里为ns
#labe.x和label.y指定ns的坐标轴位置
关键在于构建比对组信息my_com<-list(c("0.5","1"),c("1","2"),c("0.5","2")) ,然后指定comparison
df<-ToothGrowth
df$dose<-as.factor(df$dose)
compare_means(len~dose,data=df,method="anova")
my_com<-list(c("0.5","1"),c("1","2"),c("0.5","2")) #构建比对信息
#compare_means(len~dose,data=df) #如果由大于2组的样本,默认会用wilcox.test进行两两比较
ggplot(df,aes(x=dose,y=len,fill=dose))+
geom_boxplot(position=position_dodge(),width=0.5)+
geom_jitter(width = 0.2)+
scale_color_manual(c("red","blue","yellow"))+
stat_compare_means(comparisons=my_com,method="t.test",paired=F,aes(label=..p.signif..))+ #label指定显示计算出的显著性标签,这里为ns
#stat_compare_means(comparisons=my_com,method="t.test",paired=F,aes(label=..p.signif..),label.y=c(29,35,40))+
#labe.x和label.y指定ns的坐标轴位置 label=..p.value将会显示P值
#label.y=c()有多组时可以分别指定位置
stat_compare_means(label.y=50)#显示总体P值
#stat_compare_means(label = "p.signif", method = "t.test",
ref.group = "0.5") #设置参考组,每一个组和和ref组比较
除了dose分组,还有supp分组,这种由2个分组因子的数据可以用以下方法进行比较
compare_means(len ~ supp, data = df, group.by = "dose")
结果给出了不同dose下的不同supp比较
dose .y. group1 group2 p p.adj p.format p.signif method
<fct> <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
1 0.5 len OJ VC 0.0232 0.046 0.023 * Wilcoxon
2 1 len OJ VC 0.00403 0.012 0.004 ** Wilcoxon
3 2 len OJ VC 1 1 1.000 ns Wilcoxon
ggplot(df,aes(x=supp,y=len,fill=supp))+
geom_boxplot(position=position_dodge(),width=0.5)+
geom_jitter(width = 0.2)+
scale_color_manual(c("red","blue"))+
facet_wrap(.~dose)+
stat_compare_means(label = "..p.signif..")
pare_means(len ~ supp,data=df,method="t.test",paired=F) #hide.na=T可以隐藏ns
ggplot(df,aes(x=dose,y=len,fill=supp))+
geom_boxplot(position=position_dodge(),width=0.5)+
geom_jitter(width = 0.2)+
scale_color_manual(c("red","blue"))+
stat_compare_means(label = "..p.signif..",)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。