没有合适的资源?快使用搜索试试~ 我知道了~
2_PCA.docx
需积分: 0 0 下载量 166 浏览量
2023-03-13
17:03:57
上传
评论
收藏 74KB DOCX 举报
温馨提示
试读
11页
2_PCA.docx
资源推荐
资源详情
资源评论
PCA 是主成分分析(Principal Component Analysis)的缩写,是一种多元统计分析方法,主要
用于降维分析和变量之间的关系分析。PCA 可以将大量的变量(特征)通过数学方法转换成
少数几个综合指标,这些综合指标能够最大程度地反映原始变量的信息,从而实现数据的降
维。
PCA 的实现过程包括以下几个步骤:
1.数据标准化
因为 PCA 是基于方差协方差矩阵计算的,所以在进行 PCA 前需要将数据标准化,以使每个
变量的均值为 0,方差为 1。这样可以避免数据中的变量因为量纲不同而对结果造成影响。
2.计算协方差矩阵
对标准化后的数据计算协方差矩阵。协方差矩阵描述了不同变量之间的关系,其中对角线上
的元素表示每个变量的方差,非对角线上的元素表示不同变量之间的协方差。
3.计算特征值和特征向量
通过对协方差矩阵进行特征值分解,可以得到特征值和特征向量。特征值表示每个特征向量
对应的方向上所解释的方差大小,特征向量表示在协方差矩阵上的投影方向。
4.选择主成分
按照特征值的大小依次选择前 n 个主成分,这些主成分可以最大程度地解释数据的方差。
5.计算主成分得分
将数据投影到所选的主成分上,得到每个样本在主成分上的得分。
在微生物组学分析中,我们经常使用主成分分析(PCA)来探索不同样本之间的相似性和差
异性。PCA 是一种无监督降维技术,可以将高维的微生物组学数据转换为低维的数据,并将
样本映射到一个坐标系上,使我们能够更直观地观察数据并发现样本之间的差异。
在本教程中,我们将介绍如何使用 R 语言中的"ggplot2"和"vegan"等包进行 PCA 数据可视化,
同时还将介绍如何将 PCA 数据框和元数据文件进行合并,并根据分组信息对数据进行分析
和可视化。以下是我们将要进行的步骤:
0. 加载包
1. 读取数据
2. 对 ASV 数据进行 Hellinger 转换
3. 进行 PCA 分析并提取前两个主成分的贡献度
4. 将 PCA 数据框和元数据文件进行合并
5. 对数据进行分组分析和可视化
6. 添加样本标签
7. 保存并导出 PCA 图像
0. 加载包
以下这段代码加载了几个 R 包(libraries),分别是:
ggplot2:一款广泛使用的用于绘图的 R 包。
ggrepel:用于标签重叠解决的 R 包,可用于在绘图中添加带有注释的标签,且会自动
调整标签位置以避免重叠。
vegan:一个专门用于生态学数据分析的 R 包。
plyr 和 dplyr:两个数据处理 R 包,提供了一些数据操作和处理功能。
ggsci:提供了许多颜色调色板(color palettes)。
通过加载这些 R 包,可以使得后续的代码可以使用这些包中的函数和对象,以便进行绘
图和数据处理。
library(ggplot2)
library(ggrepel)
library(vegan)
library(plyr)
library(dplyr)
library(ggrepel)
library(ggsci)
1. 读取 ASV 表和元数据文件。
ASV 表应该是一个已经去除了冗余序列的表格,每一行代表一个 ASV,每一列代表一个
样本。元数据文件包含每个样本的分组信息、采样时间等。我们可以使用 read.delim()函数
读取元数据文件,使用 read.csv()函数读取 ASV 表。
asv <- read.csv("asv-table-compare.tsv", sep = "\t", row.names = 1, stringsAsFactors
= FALSE, check.names = FALSE)
metadata <- read.delim("sample_matedata-1.txt", sep = '\t', stringsAsFactors = FALSE)
2. 对 ASV 数据进行 Hellinger 转换
PCA 是基于线性代数的,因此需要使用数值数据进行分析。然而,在微生物组学中,ASV
表通常是一个非负且高度稀疏的数据矩阵。为了将其转换为数值数据,我们可以使用
Hellinger 转换。使用 decostand()函数对 ASV 表进行 Hellinger 转换,并使用 t()函数将转换后
的 ASV 表进行转置,使其符合 PCA 的输入格式。
group_name <- unique(metadata$Grouping_1)
metadata$Grouping_1 <- ordered(metadata$Grouping_1,levels = group_name)
asv_t <- t(asv)
asv_hel <- decostand(asv_t, method = 'hellinger')
3. 进行 PCA 分析并提取前两个主成分的贡献度
使用 prcomp()函数对 Hellinger 转换后的 ASV 数据进行 PCA 分析,并将 scale 参数设置为
TRUE 进行标准化。使用 summary()函数提取 PCA 分析结果的汇总信息,其中包括每个主成
分的贡献度,使用贡献度来评估每个主成分在样本差异中所占的比例。在 PCA 分析后,我
们可以提取 PC1 和 PC2 和 PC3 的贡献度,并将其转换为数据框格式。我们可以使用以下代
码实现:
pca_1 <- prcomp(asv_hel, scale. = TRUE)
pca_summary <- summary(pca_1)
pca_summary_df <- data.frame(
"PC1" = pca_1$x[,1],
"PC2" = pca_1$x[,2],
"PC3" = pca_1$x[,3],
"Contribution" = pca_summary$sdev^2 / sum(pca_summary$sdev^2)
)
4. 将 PCA 数据框和元数据文件进行合并
使用 merge()函数将 PCA 数据框和元数据文件按照样本 ID 进行合并,此时我们可以根据
分组信息进行分组分析和可视化。
pca_summary_df$sampleid <- rownames(pca_summary_df)
pca_summary_df <-
merge(pca_summary_df,metadata,intersect(names(pca_summary_df),names(metadata))
)
pca_summary_df$Grouping_1 <- ordered(metadata$Grouping_1,levels = group_name)
在此基础上,我们将分组因子重新排序。具体而言,我们使用了 ordered()函数将
pca_summary_df 中 的 Grouping_1 列 设 置 为 有 序 因 子 变 量 , 并 按 照 元 数 据 文 件 中 的
group_name 排列。重新排列后,我们将数据框赋值给 pca_summary_df。
需要注意的是,在执行 ordered()函数时,需要传入参数 levels,表示有序因子变量的排序顺
序。在这里,我们使用了 unique()函数和 group_name 变量来获取元数据文件中所有的分组
因子,并将其赋值给 levels 参数。
综上所述,合并 PCA 数据框和元数据文件,并按照分组因子重新排序的目的是为了方便后
续绘图和统计分析。通过合并后的数据框,我们可以更加方便地将样本按照不同的分组因子
分组,并对其进行统计分析和可视化呈现。
5. 对数据进行分组分析和可视化
首先,我们可以使用 ggplot2 包中的 ggplot()函数,将 PCA 数据框作为数据源,绘制 PCA
图像。将主成分分析的结果展示在二维空间中,x 轴代表第一主成分(PC1),y 轴代表第二
主成分(PC2)。
剩余10页未读,继续阅读
资源评论
小飞棍来喽~
- 粉丝: 1241
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STM8L101F3P6单片机+CC1100模块433M遥控器设计硬件(原理图+PCB)工程文件.zip
- 上传下载铁人下载系统 Liuxing 1.0-liuxing1.0.rar
- 南京邮电大学数学实验实力雄厚,凭借其优秀的师资力量、丰富的实践教学资源和卓越的科研成果,成为国内一流的数学实验教学和科研基地
- 【火爆朋友圈的今天吃什么源码 v1.0】随机的为用户带来每一天的用餐选择和推荐.rar
- MPU6050中文版数据手册
- 上传下载手机电影下载-mobiledy.rar
- 响应式旅游网站源码下载 马尔代夫旅游网站.rar
- CMS小涴熊漫画连载系统漫画网站源码 带采集API.rar
- 福袋点点.apk
- 基于STM32的电子秤采用0.96寸OLED显示UI界面源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功