「生信技能树」单细胞数据挖掘_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1pa4y1s76J?p=7&spm_id_from=pageDriverP 2.4、降维,PCA分析,可视化
这里主要需要使用scRNA的矩阵,不需要其他的sce,因此先清空内存,释放算力。
load("For_PCA.Rdata")
### 4、降维,PCA分析,可视化----
sessionInfo()
#先进行归一化(正态分布)
scRNA <- ScaleData(scRNA, features = (rownames(scRNA)))
#储存到"scale.data"的slot里
GetAssayData(scRNA,slot="scale.data",assay="RNA")[1:8,1:4]
#对比下原来的count矩阵
GetAssayData(scRNA,slot="counts",assay="RNA")[1:8,1:4]
#scRNA@assays$RNA@
scaledata也是seurat包中的一个内容函数,用以将所得的矩阵内容归一化。
scRNA的assays之后的RNA里面可以counts是表达矩阵,scale.data是归一化后的矩阵。
# 这里是通过scRNA来看里面的不同dataframe等内容。
#PCA降维,利用之前挑选的hvg,可提高效率,默认前50个。
scRNA <- RunPCA(scRNA, features = VariableFeatures(scRNA))
#挑选第一,第二主成分对cell可视化
DimPlot(scRNA, reduction = "pca", group.by="Patient_ID")
#发现与原文献中颠倒了
?DimPlot
?RunPCA
#seed.use :Set a random seed. By default, sets the seed to 42.
#Setting NULL will not set a seed.
scRNA <- RunPCA(scRNA, features = VariableFeatures(scRNA),seed.use=3)
#尝试了seed.use的不同取值发现图形只有四种变化(四个拐角),其中以seed.use=3为代表的一类与原文文献一致
DimPlot(scRNA, reduction = "pca", group.by="Patient_ID")
#与文献一致了。个人觉得颠倒与否如果只是随机种子的差别的话,对后续分析应该没影响
p2_1 <- DimPlot(scRNA, reduction = "pca", group.by="Patient_ID")+
labs(tag = "D")
p2_1
DimPlot(scRNA, reduction = "pca", split.by = 'Patient_ID')
主成分分析是将可能相关的变量转化成为1-2个的主要变量。
通过主要变量来降维,并且分析其相关的特征。
在这里seed.use是不同的角度放置图形,主要是与作图有关。默认是选取前50个变量作为PCA的对象。
这里需要载入ggolpt2包
#挑选主成分,RunPCA默认保留了前50个
scRNA <- JackStraw(scRNA,reduction = "pca", dims=20)
scRNA <- ScoreJackStraw(scRNA,dims = 1:20)
p2_2 <- JackStrawPlot(scRNA,dims = 1:20, reduction = "pca") +
theme(legend.position="bottom") +
labs(tag = "E")
p2_2
p2_3 <- ElbowPlot(scRNA, ndims=20, reduction="pca")
p2_3
#结果显示可挑选前20个pc
# 这里的挑选粗一点可以看拐点的位置,即新加入的不影响贡献度大局了
# 严谨可以选择累加85%的差异度,那就是己算stdev,然后对其贡献度进行累加,直至85%。
p2_1| (p2_2 | p2_3) #中图
# data.use就是每个叠加因素后pca的方差汇总
data.use <- Stdev(object = scRNA,reduction = 'pca')
data.use
# 这里应该有个叠加以后的函数,直到85%,以后再写吧。
这里使用 jackstraw来寻找p最小的,Elbowplot函数可以查看如果用20个变量是否足够。
10X单细胞(10X空间转录组)SeuratPCA分析之三---维度的选取 - 简书https://www.jianshu.com/p/d247e254a7c2这里两个方法,一个是 jackstraw来寻找p最小的,一个是elbowplot可以查看贡献度。
?分别进行作图可以发现是否足够。
jackstraw方法获得的就是其中的每个主成分的p是否都显著,查看每个主成分的贡献。
对于elbowplot:
? # 这里的挑选粗一点可以看拐点的位置,即新加入的不影响贡献度大局了 ? # 严谨可以选择累加85%的差异度,那就是己算stdev,然后对其贡献度进行累加,直至85%。 ? # data.use就是每个叠加因素后pca的方差汇总 ? data.use <- Stdev(object = scRNA,reduction = 'pca') ? data.use ? # 这里应该有个叠加以后的函数,直到85%,以后再写吧。
|