前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >scRNA分析|自定义你的箱线图-统计检验,添加p值,分组比较p值

scRNA分析|自定义你的箱线图-统计检验,添加p值,分组比较p值

作者头像
生信补给站
发布2023-03-08 16:51:43
2.4K0
发布2023-03-08 16:51:43
举报
文章被收录于专栏:生信补给站生信补给站

在前面scRNA分析|使用AddModuleScore 和 AUcell进行基因集打分,可视化中,基因集评分使用小提琴图或者箱线图进行展示,那如何进行统计检验以及添加P值呢?本文主要解决以下几个问题

(1)指定统计检验方式(2)指定比较组并添加P值(3)任意比较(4)分组比较 (5)使用星号代替P值 等

一 载入R包 数据

使用本文开始的基因集评分的结果 和 ggpubr 包进行统计检验以及可视化的展示。

代码语言:javascript
复制
library(tidyverse)
library(ggpubr)
load( "sce.anno.RData")
df <- sce2@meta.data
head(df)

二 ggpubr可视化

先绘制基本的箱线图

代码语言:javascript
复制
p1 <- ggboxplot(df, x="celltype", y="AUCell", width = 0.6, 
                color = "black",#轮廓颜色
                fill="celltype",#填充
                palette = "npg",
                xlab = F, #不显示x轴的标签
                bxp.errorbar=T,#显示误差条
                bxp.errorbar.width=0.5, #误差条大小
                size=1, #箱型图边线的粗细
                outlier.shape=NA, #不显示outlier
                legend = "right") #图例放右边 + 
p1

展示为6种细胞类型的基因集评分的箱线图。

1,指定比较的组

ggpubr 中使用stat_compare_means函数进行统计学检验,需要是list形式。

假设感兴趣的是Epi,T 和 Myeloid 与 un之间 ,是否有统计学差异?

代码语言:javascript
复制
###指定组比较
my_comparisons <- list(c("Epi", "un"), c("T", "un"),c("Myeloid", "un"))
p1+stat_compare_means(comparisons = my_comparisons,
                     method = "wilcox.test")

根据method函数选择统计方法,多组时候可选anova ,两组时候可根据情况选择t.test 或者 wilcox.test .

2, 指定ref组

比如想把所有的细胞类型都和un进行比较 , 可以通过ref.group 进行设置

代码语言:javascript
复制
p1 +  stat_compare_means(method = "wilcox.test",
ref.group = "un")

3, 任意两两之间比较

有没有参数可以两两之间分别比较呢? 小编暂时没有发现,希望知道的不吝赐教 。

可以手动输入,但是当类别特别多的情况下耗时且易错。可以先通过combn函数生成两两之间的list ,然后套用stat_compare_means 函数即可。

代码语言:javascript
复制
#生成两两之间的list
group=levels(factor(df$celltype))
comp=combn(group,2)
comp
#     [,1]      [,2]         [,3]  [,4]   [,5]  [,6]         [,7]      [,8]      [,9]      [,10]        [,11]       
#[1,] "Epi"     "Epi"        "Epi" "Epi"  "Epi" "Myeloid"    "Myeloid" "Myeloid" "Myeloid" "Fibroblast" "Fibroblast"
#[2,] "Myeloid" "Fibroblast" "T"   "Endo" "un"  "Fibroblast" "T"       "Endo"    "un"      "T"          "Endo"
#     [,12]        [,13]  [,14] [,15] 
#[1,] "Fibroblast" "T"    "T"   "Endo"
#[2,] "un"         "Endo" "un"  "un"

my_comparisons=list()
for(i in 1:ncol(comp)){
  my_comparisons[[i]]<-comp[,i]
  }

p1+stat_compare_means(comparisons = my_comparisons)

那如果想要 非un的细胞类型 两两之间比较呢?可以先去掉un再比较 df2 <- df %>% filter(celltype != "un") 。

4,多组之间比较

多组的话method使用anova

代码语言:javascript
复制
p1 +stat_compare_means(method = "anova")

5,按照group分组然后比较

按照group进行分组,比较原发和转移组之间在不同细胞类型之间是否有差异

代码语言:javascript
复制
p2 <- ggboxplot(df,x="celltype", y="AUCell",color = "group",
              palette = "npg",
              xlab = F, #不显示x轴的标签
              bxp.errorbar=T,#显示误差条
              bxp.errorbar.width=0.5, #误差条大小
              size=1, #箱型图边线的粗细
              #outlier.shape=NA, #不显示outlier
              legend = "right")
p2 + stat_compare_means(aes(group = group))
代码语言:javascript
复制

三 可视化调整

除上述之外还有一些常见的小调整,比如去掉p值前面的统计方法, 将P值改为星号,调整坐标轴和标签等等。如果想画小提琴的话只需要把ggboxplot 改为 ggviolin 即可。

1,去掉p值前面的Wilcoxon

代码语言:javascript
复制
p1+stat_compare_means(comparisons = my_comparisons,
                      aes(label = paste0("p =", ..p.format..)) )

2,将p值改为星号

代码语言:javascript
复制
p1+stat_compare_means(comparisons = my_comparisons,
                     label = "p.signif")

3,设置字体大小,位置,颜色等

代码语言:javascript
复制
p1 + stat_compare_means( comparisons = my_comparisons,
                         aes(label = paste0("p =", ..p.format..)), # 只显示p值大小,不呈现计算方法
                         color="grey50", # 字体的颜色
                         method = "wilcox.test", # 
                         size=5, # p值的文字的大小
                         #label.y = 0.7 # p值展示在什么地方
) + 
  labs(x="", y="AUCell_score") + #更改坐标轴
  theme_classic() #更改主题

这里就可以使用一些ggplot2的参数进行自定义优化了。有需要的可以看一下ggplot2的基础知识。

ggplot2|详解八大基本绘图要素

ggplot2 | 关于标题,坐标轴和图例的细节修改,你可能想了解

ggplot2|theme主题设置,详解绘图优化-“精雕细琢”

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,指定比较的组
  • 2, 指定ref组
  • 3, 任意两两之间比较
  • 4,多组之间比较
  • 1,去掉p值前面的Wilcoxon
  • 2,将p值改为星号
  • 3,设置字体大小,位置,颜色等
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档