前情回顾
在这个月的前几期推文中,主要基于单细胞数据使用小提琴图可视化marker基因进行了整理:
也有一期答读者问——小提琴图有点无图是何缘由?
这期就一起来学习一下画目的基因的小提琴图并计算显著性!
小提琴图可视化并计算显著性用途
在单细胞数据分析中,通过小提琴图可视化和显著性计算可以帮助研究者直观且统计地评估目的基因在不同细胞群体中的表达差异
展示基因在不同细胞群体的表达分布:小提琴图可以直观地展示基因在各个细胞亚群中的表达水平和分布情况。
小提琴图能够反映不同群体中表达的中位数、四分位数及表达值的变化范围。特别是在复杂的细胞亚群中,这种分布展示非常有助于发现基因的差异性表达。
确定基因在不同亚群中的特异性表达:通过显著性计算可以明确目的基因是否在特定细胞亚群中显著表达。
例如,通过t检验或非参数检验(如Wilcoxon检验)来比较不同亚群间的表达水平,帮助筛选出与特定功能或病理状态相关的细胞群体。
为后续功能研究提供线索:显著性差异的基因表达通常可以看到基因可能在不同细胞群体的生物功能或疾病过程中起关键作用。
所以当我们需要查看单细胞不同分组,或者不同细胞亚群中某个目标基因的表达情况并且比较的时候,就可以计算一下显著性
基于小提琴图可视化目标基因
还是以pbmc数据为例,展示NKG7基因在不同细胞亚群中的表达情况,计算并展示不同分组间的显著性
载入需要的数据
#给亚群命名
new.cluster.ids <- c("Naive CD4 T", "CD14+ Mono", "Memory CD4 T",
"B", "CD8 T","FCGR3A+ Mono", "NK", "DC", "Platelet")
names(new.cluster.ids) <- levels(pbmc)
# 修改Idents中分群编号为细胞类型
pbmc <- RenameIdents(pbmc, new.cluster.ids)
DimPlot(pbmc, reduction = "umap", label = TRUE,
repel = T,pt.size = 0.5) + NoLegend()
pbmc$cluster_by_counts=Idents(pbmc)
pbmc$celltype=Idents(pbmc)
#计算marker基因
pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25, verbose = FALSE)
top5 = pbmc.markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC)
g = unique(top5$gene)
可视化NKG7在不同分群表达情况
# 使用VlnPlot生成NKG7的分组小提琴图,并去掉图例
p <- VlnPlot(object = pbmc, features = 'NKG7', pt.size = 0) +
NoLegend() +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
从小提琴图中可以看到NKG7基因在"CD8 T"以及"NK"中表达较高, 在"FCGR3A+ Mono"和"DC"中表达也较其余几个分组高,可以计算一下这几个分组间的显著性,然后比较
显著性计算和可视化
使用ggpubr
包中的stat_compare_means
函数在图形上显示不同组之间的显著性检验结果。
调用常见的统计检验方法(例如t检验、Wilcoxon秩和检验、ANOVA等)来比较不同组之间的数值差异,并返回显著性标记。
根据
comparisons
参数中定义的组别对来计算两两显著性。例如,如果comparisons = list(c("Group1", "Group2"))
,则只比较“Group1”和“Group2”之间的显著性。 若未指定具体组对,并且数据包含多个组,会默认进行全局比较。根据选择的检验方法,
stat_compare_means
会在数据内部执行相关的显著性检验,返回每组对的p值。根据计算得到的p值,生成对应的显著性标记(如
*
、**
、***
、****
),并根据p值范围控制标记显示:ns:表示“不显著”(not significant),即 p 值 > 0.05,表明两组之间的差异没有统计学显著性。 *:表示 p 值 ≤ 0.05,表明两组之间的差异具有统计学显著性。 **:表示 p 值 ≤ 0.01,差异高度显著。 ***:表示 p 值 ≤ 0.001,差异极显著。 ****:表示 p 值 ≤ 0.0001,差异非常显著。 可以通过参数
label = "p.signif"
(仅显示显著性标记)或label = "p"
(显示具体的p值)进行控制。
1. 选择需要比较的分组进行显著性计算和展示
#根据需要选择进行比较的分组
my_comparisons <- list( c("CD8 T", "FCGR3A+ Mono"), c("FCGR3A+ Mono", "NK"), c("NK", "DC"))
library(ggpubr)
# 将VlnPlot转换为ggplot对象,然后添加显著性比较
p + stat_compare_means(comparisons = my_comparisons,method = "t.test")+
ylim(-2, 15)
2. 用*号显示显著性标记,不显示具体数值
#用*号显示显著性标记,不显示具体数值
p + stat_compare_means(comparisons = my_comparisons,method = "t.test",label = "p.signif")+
ylim(-2, 15)
3. stat_summary()将每个组的均值显示为红点
#stat_summary()将每个组的均值显示为红点,便于对比哪个组的平均表达水平更高。
p + stat_compare_means(comparisons = my_comparisons,method = "t.test",label = "p.signif")+
ylim(-2, 15)+
stat_summary(fun = mean, geom = "point", color = "red", size = 3)
stat_summary 是ggplot2包中的一个函数,可用于在图中添加统计摘要(例如均值、标准差、中位数等),可以将将指定的统计计算结果(如平均值或中位数)直接叠加到现有的图层上
如果在计算出不同分组的显著性之后,不能直接看出来哪个组比哪个组高,可以tat_summary()将每个组的均值显示为红点,便于对比
文末友情宣传
如果你也想做单细胞转录组数据分析,最好是有自己的计算机资源哦,比如我们的2024的共享服务器交个朋友福利价仍然是800,而且还需要有基本的生物信息学基础,也可以看看我们的生物信息学马拉松授课,你的生物信息学入门课。