跟着高分SCI学做图:三维PCA和PCoA分析的具体实现方法(内含R操作步骤及代码)

文摘   2024-08-04 22:36   德国  

介绍

不久前我们介绍了PCA和PCoA分析的原理和代码,简单回顾一下PCA和PCoA在医学的应用。

主成分分析(‌PCA)‌是一种统计分析方法,‌它可以通过提取数据中的主要特征,‌用较少的变量去解释数据中的大部分变异,‌同时保留原始数据的大部分信息。‌这种方法在医学研究中特别有用,‌因为它可以帮助研究人员理解和处理涉及多个变量和复杂关系的数据集。‌

例如,‌在《‌中国主要年份儿童保健情况统计〔1996~2022〕》‌的数据分析中,‌主成分分析被用来处理包括年份、‌出生体重、‌围产儿童死亡率、‌新生儿破伤风发病率和死亡率等多个变量,‌这些变量之间可能存在相关性,‌通过主成分分析可以有效地减少变量的数量,‌同时保留关键信息,‌使得数据分析更加简洁和高效。

PCoA分析主要用于以下几点:

-微生物群落研究:‌在医学微生物组学研究中,‌PCoA分析常用于分析不同样本间菌群组成的相似性和差异性。‌通过比较不同疾病状态或治疗条件下的菌群结构,‌可以揭示菌群失调与疾病之间的关系。‌例如,‌在16S rRNA测序数据分析中,‌PCoA分析可以帮助研究者区分不同样本间的菌群组成差异,‌并找出与特定疾病相关的核心影响菌群。‌

-疾病诊断与预测:‌PCoA分析结合其他统计方法(‌如LEfSe、‌ROC曲线分析等)‌可以用于筛选具有诊断价值的生物标志物(‌Biomarker)‌,‌从而辅助疾病的早期诊断和预测。‌

药物研发:‌在药物研发过程中,‌PCoA分析可以用于分析药物对微生物群落的影响,‌评估药物的疗效和安全性。‌

代谢组学研究:‌尽管PCoA分析本身更多用于菌群结构分析,‌但在代谢组学研究中,‌类似的降维技术(‌如PCA)‌也常用于分析代谢物数据,‌揭示代谢物之间的关联和差异,‌从而帮助理解疾病的代谢机制。‌

下面我们来看一下PCA分析的一种特殊应用--三维PCA(Three-dimensional Principal Component Analysis)。

三维PCA是PCA方法的一种特殊应用,其中数据被降维到三个主要维度上,以便进行可视化或进一步分析。

三维PCA的执行过程通常包括以下几个步骤:

①数据预处理;

②计算协方差矩阵:协方差矩阵表示了数据各维度之间的相关性;

③计算特征值和特征向量:特征值的大小表示了对应主成分的重要性,而特征向量则指示了主成分的方向;

④选择主成分:根据特征值的大小选择前三个主成分,即PC1、PC2和PC3;

⑤数据投影:将原始数据投影到由PC1、PC2和PC3构成的三维空间中。

⑥结果可视化。

可视化展示

代码

数据展示:

#           ID Group   color        DC_1       DC_2
# 1 SIHTALLS26    G1 #FD6AB0 -0.02677773 0.03531621
# 2        A37    G1 #FD6AB0 -0.03068308 0.04230065
# 3        T78    G1 #FD6AB0 -0.02738485 0.03747457
# 4  SIHTALLS3    G1 #FD6AB0 -0.02941009 0.04039534
# 5 SIHTALLS12    G1 #FD6AB0 -0.01946934 0.02060690
```R
library(openxlsx)
library(scatterplot3d)
library(pheatmap)
library(ggplot2)
library(plot3D)
library(RColorBrewer)

plot.data <- read.xlsx( "Figure4A-DiffusionMap.xlsx" )
plot.data[1:5, 1:5]


### 使用

```R
# plot3D包:
pdf("plot1.pdf", width = 10, height = 10)
with(plot.data, scatter3D(x = DC_1, y = DC_3, z = DC_2,
                     pch = 21, cex = 1.5,
                     col = "white",
                     xlab = "DC_1",
                     ylab = "DC_3",
                     zlab = "DC_2"
                     bg = plot.data$color,
                     ticktype = "detailed",
                     bty = "f", box = T,
                     theta = -20, phi = 0, d=3,
                     colkey = FALSE))
dev.off()

使用gg3D包绘制

library(gg3D)

theta <- -20
phi <- 0
colors<-c("#7CCD1F","#E5349F","#D2852C","#FCA25A","#FFFF57","#00853F","#0097C6","#004D99","#A256E0","#E54B42")

pdf("plot2.pdf", width = 7, height = 7)
ggplot(plot.data, aes(x = DC_1, y = DC_3, z = DC_2, color = color)) + 
  axes_3D(theta=theta, phi=phi) + 
  stat_3D(theta=theta, phi=phi) +
  labs_3D(theta=theta, 
          phi=phi, 
          hjust=c(1,1,0), 
          vjust=c(1.5,1,-.2),
          labs=c("DC_1""DC_2""DC_3")) +
  scale_color_manual(values = colors)+
  theme_void()+
  theme(legend.position = "none")
dev.off()


![](https://files.mdnice.com/user/71419/78b71174-c2bc-40c4-86d0-a7b25057ffba.png)

### 使用scatterplot3d包绘制

```R
# scatterplot3d包:
pdf("plot3.pdf", width = 7, height = 7)
scatterplot3d(x = plot.data$DC_1
              y = plot.data$DC_3
              z = plot.data$DC_2,
              color = plot.data$color,
              pch = 16, cex.symbols = 1,
              scale.y = 0.7, angle = 120,
              xlab = "DC_1", ylab = "DC_3", zlab = "DC_2",
              col.axis = "#444444", col.grid = "#CCCCCC")
dev.off()

答疑

很多同学反映gg3D这个包无法安装并报错,如图:

这时可以从github下载这个包,代码如下:

install.packages('devtools')
devtools::install_github("AckerDWM/gg3D")

供稿人:李佳旭


现在:


长按扫码关注:科研生信充电宝

转发到朋友圈,点赞30

截图到小编微信

或直接10元赞赏本文,即喜欢作者~


即可直接解锁:


《三维PCA和PCoA分析的具体实现方法》对应资源哦~


看到这里你还不心动吗?


赶紧关注、转发、点赞、分享,领取你的专属福利吧~



好啦,以上就是今天推文的全部内容啦!


版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。

如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。

BIOINFOR

微信号|科研生信充电宝

 · BIOINFOR · 


永远相信美好的事情

即将发生




科研生信充电宝
介绍科研;介绍统计;介绍生信;
 最新文章