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

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


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

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


一 载入R包 数据

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






library(tidyverse)library(ggpubr)load( "sce.anno.RData")df <- sce2@meta.datahead(df)


二 ggpubr可视化

先绘制基本的箱线图

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之间 ,是否有统计学差异?

###指定组比较
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 进行设置



p1 +  stat_compare_means(method = "wilcox.test",
    ref.group = "un")

3, 任意两两之间比较

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

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

#生成两两之间的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


p1 +stat_compare_means(method = "anova")

5,按照group分组然后比较


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

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))


三 可视化调整

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

1,去掉p值前面的Wilcoxon



p1+stat_compare_means(comparisons = my_comparisons,  
          aes(label = paste0("p =", ..p.format..)) )

2,将p值改为星号



p1+stat_compare_means(comparisons = my_comparisons, 
                 label = "p.signif")

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

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的基础知识。

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
XML 安全 前端开发
Spring Security—Spring MVC 整合
Spring Security—Spring MVC 整合
592 1
|
Windows
无法识别的标志“-Ot”(在“p2”中)
无法识别的标志“-Ot”(在“p2”中)
747 0
|
消息中间件
rabbitmq安装之后无法访问15672
rabbitmq安装之后无法访问15672
780 0
|
9月前
|
Oracle Java 关系型数据库
java 入门学习视频_2025 最新 java 入门零基础学习视频教程
《Java 21 入门实操指南(2025年版)》提供了Java最新特性的开发指导。首先介绍了JDK 21和IntelliJ IDEA 2025.1的环境配置,包括环境变量设置和预览功能启用。重点讲解了Java 21三大核心特性:虚拟线程简化高并发编程,Record模式优化数据解构,字符串模板提升字符串拼接可读性。最后通过图书管理系统案例,展示如何运用Record定义实体类、使用Stream API进行数据操作,以及结合字符串模板实现控制台交互。该指南完整呈现了从环境搭建到实际项目开发的Java 21全流程实
511 1
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
443 1
|
流计算
海康录像机RTSP回放流的格式
海康录像机RTSP回放流的格式
984 0
|
NoSQL 关系型数据库 BI
记录一次MySQL+Redis实现优化百万数据统计的方式
【10月更文挑战第13天】 在处理百万级数据的统计时,传统的单体数据库往往力不从心,这时结合使用MySQL和Redis可以显著提升性能。以下是一次实际优化案例的详细记录。
729 1
|
Linux
百度搜索:蓝易云【CentOS 7内核升级教程。】
通过执行以上步骤,你将在CentOS 7上成功升级内核。请注意,内核升级涉及系统的核心组件,因此在执行此操作之前,请确保对系统的备份,并在生产环境中进行谨慎操作。此外,根据你的特定需求,你可能需要进行更多的配置和调整。
518 0
|
JSON 自然语言处理 数据处理
数据标注工具 Label-Studio
数据标注工具 Label-Studio
6696 0
|
机器学习/深度学习 算法 数据挖掘
深度学习中常用损失函数介绍
选择正确的损失函数对于训练机器学习模型非常重要。不同的损失函数适用于不同类型的问题。本文将总结一些常见的损失函数,并附有易于理解的解释、用法和示例
1503 0
深度学习中常用损失函数介绍

热门文章

最新文章