其实不论是PCoA还是PCA图均是用散点图来展示结果PCoA和PCA的结果,PCoA和PCA准确来讲是数据降维分析方法。

顺便值此佳节,祝福各位和“科研”都能够拥有幸福时光和美好结局。

什么是PCA和PCoA

主成分分析(Principal components analysis,PCA)是一种统计分析、简化数据集的方法。它利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分(Principal Components)。具体地,主成分可以看做一个线性方程,其包含一系列线性系数来指示投影方向(如图)。PCA对原始数据的正则化或预处理敏感(相对缩放)。PCA是最简单的以特征量分析多元统计分布的方法。通常情况下,这种运算可以被看作是揭露数据的内部结构,从而更好的解释数据的变量的方法。

PCA示意图

主坐标分析(Principal Coordinates Analysis,PCoA),即经典多维标度(Classical multidimensional scaling),用于研究数据间的相似性。PCoA与PCA都是降低数据维度的方法,但是差异在在于PCA是基于原始矩阵,而PCoA是基于通过原始矩阵计算出的距离矩阵。因此,PCA是尽力保留数据中的变异让点的位置不改动,而PCoA是尽力保证原本的距离关系不发生改变,也就是使得原始数据间点的距离与投影中即结果中各点之间的距离尽可能相关(如图)。

PCoA示意图

如何进行PCA和PCoA分析

R中有很多包都提供了PCA和PCoA,比如常用的ade4包。本文将基于该包进行PCA和PCoA的分析,数据是自带的deug,该数据提供了104个学生9门课程的成绩(见截图)和综合评定。综合评定有以下几个等级:A+,A,B,B-,C-,D。

让我们通过PCA和PCoA来看一看这样的综合评定是否合理,是否确实依据这9门课把这104个学生合理分配到不同组(每个等级一个组)。

deug的9门课

(1)PCA分析及作图

前文已经介绍了PCA是基于原始数据,所以直接进行PCA分析即可。由于前面已经介绍过散点图的绘制方法,这里不再细讲,PCA分析完毕后我们直接作图展示结果。

library(ade4)

library(ggplot2)

library(RColorBrewer)

data(deug)

#PCA分析

pca

#坐标轴解释量(前两轴)

pca_eig

#提取样本点坐标(前两轴)

sample_site

sample_site$names

names(sample_site)[1:2]

#以最终成绩作为分组

sample_site$level

library(ggplot2)

pca_plot

theme_classic()+#去掉背景框

geom_vline(xintercept = 0, color = 'gray', size = 0.4) +

geom_hline(yintercept = 0, color = 'gray', size = 0.4) +

geom_point(size = 1.5)+ #可在这里修改点的透明度、大小

scale_color_manual(values = brewer.pal(6,"Set2")) + #可在这里修改点的颜色

theme(panel.grid = element_line(color = 'gray', linetype = 2, size = 0.1),

panel.background = element_rect(color = 'black', fill = 'transparent'),

legend.title=element_blank()

)+

labs(x = paste('PCA1: ', round(100 * pca_eig[1], 2), '%'), y = paste('PCA2: ', round(100 * pca_eig[2], 2), '%'))

pca_plot

整体看起来还不错,就是B-和C-的学生似乎难以区分。

(2)PCoA分析及作图

library(ade4)

library(ggplot2)

library(RColorBrewer)

library(vegan)#用于计算距离

data(deug)

tab

tab.dist

pcoa

#坐标轴解释量(前两轴)

pcoa_eig

#提取样本点坐标(前两轴)

sample_site

sample_site$names

names(sample_site)[1:2]

#以最终成绩作为分组

sample_site$level

library(ggplot2)

pcoa_plot

theme_classic()+#去掉背景框

geom_vline(xintercept = 0, color = 'gray', size = 0.4) +

geom_hline(yintercept = 0, color = 'gray', size = 0.4) +

geom_point(size = 1.5)+ #可在这里修改点的透明度、大小

scale_color_manual(values = brewer.pal(6,"Set2")) + #可在这里修改点的颜色

theme(panel.grid = element_line(color = 'gray', linetype = 2, size = 0.1),

panel.background = element_rect(color = 'black', fill = 'transparent'),

legend.title=element_blank()

)+

labs(x = paste('PCoA1: ', round(100 * pcoa_eig[1], 2), '%'), y = paste('PCoA2: ', round(100 * pcoa_eig[2], 2), '%'))

pcoa_plot

有时候PCA和PCoA的结果差不多,有时候某种方法能够把样本有效分开而另一种可能效果不佳,这些都要看样本数据的特性。

因为没有现成可供分享的微生物组数据,所以用了这个成绩的数据集。通常来说在微生物组的研究中,我们会根据物种丰度的文件对数据进行PCA或者PCoA分析,也是我们所说的beta-diveristy分析,根据PCA或者PCoA的结果看疾病组和对照组能否分开,以了解微生物组的总体变化情况。

r语言绘制精美pcoa图_R数据可视化4: PCA和PCoA图相关推荐

  1. R语言使用GGally包的ggparcoord函数可视化多变量的平行坐标轴图(parallel coordinates plot)、当排序点图的数据对象变多的可视化效果变差的时候

    R语言使用GGally包的ggparcoord函数可视化多变量的平行坐标轴图(parallel coordinates plot).当排序点图的数据对象变多的可视化效果变差的时候 目录

  2. r语言绘制精美pcoa图_R语言绘制交互式热图

    热图 通过热图可以简单地聚合大量数据,并使用一种渐进的色带来优雅地表现,最终效果一般优于离散点的直接显示,可以很直观地展现空间数据的疏密程度或频率高低.但也由于很直观,热图在数据表现的准确性并不能保证 ...

  3. r语言绘制精美pcoa图_如何绘制精美的PCoA图形?

    原标题:如何绘制精美的PCoA图形? 今天我们来分享干货--PCoA图形的代码.继PCA.火山图.热图等代码后,基迪奥的程序猿又整理出PCoA代码.具体往期我们分享过的代码贴,可以在文末查看哦. 什么 ...

  4. r语言绘制精美pcoa图_「R」数据可视化5:PCA和PCoA图

    其实不论是PCoA还是PCA图均是用散点图来展示结果PCoA和PCA的结果,PCoA和PCA准确来讲是数据降维分析方法. 什么是PCA和PCoA 主成分分析(Principal components ...

  5. R语言caret机器学习(一)数据可视化:绘制特征变量图

    [R语言数据科学]

  6. python棒棒糖图_R数据可视化9:棒棒糖图 Lollipop Chart

    棒棒糖图,"望文生义",就是长得像棒棒糖的图.听起来就很可爱是不是?今天就让我们一起欣赏一下棒棒糖图. 什么是棒棒糖图 首先让我们来看几张棒棒糖图.可以发现实际上就是一根柱子加上一 ...

  7. python 桑基图_数据可视化之 Sankey 桑基图的实现

    什么是桑基图 Google 搜索桑基图,可以搜到一大堆定义.简而言之,桑基图是一种数据流图,展示了数据是如何从左到右流向最后的节点,每条边代表一条数据流,宽度代表数据流的大小.桑基图常用于流量分析,可 ...

  8. python画误差图_Python数据可视化:如何创建误差图

    一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形. 这是Python数据可视化的系列短篇,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib, seab ...

  9. r语言绘制精美pcoa图_[R语言 学习笔记]用R做主坐标分析(PCoA)

    原始数据为遗传距离矩阵,使用ape包的pcoa函数进行主坐标分析,然后使用ggplot2进行绘图. 欢迎大家批评指正 转载请标明出处:https://www.ivistang.com/articles ...

最新文章

  1. MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
  2. 常考数据结构与算法:实现二叉树先序,中序和后序遍历
  3. cc2530期末试卷_ZigBee应用技术答案试题题目及答案,期末考试题库,章节测验答案...
  4. 如何从校招脱颖而出?支付宝程序媛王妍岩:自信+方法
  5. Cmake:linux中cmake添加动态库
  6. oracle 转换成csv文件,如何将csv转换为oracle中的表
  7. 牛客网 【每日一题】7月27日题目精讲—乌龟棋
  8. sql脚本导入sql_学习SQL:SQL脚本
  9. MySQL设置或修改系统变量的几种方法
  10. SEO技巧--代码优化
  11. 【UX/UI原型模板】中国地图元件库操作说明(省份+直辖市+自治区+行政特区详细地图)
  12. freeMarker(十)——模板语言之内建函数
  13. 操作系统、体系结构和传奇船长的泰坦级超级旗舰
  14. 异常处理·EF·准备命令定义时发生错误。有关详细信息,请参阅内部异常
  15. C#合并两个(多个)集合
  16. 这些数据爬虫网站,帮你工作提质增效,还不收藏?
  17. 风应力旋度 matlab,热带气旋对南海上层海洋影响研究
  18. Mac-修改MySQL密码
  19. 网易“四位一体”安全防御体系建设
  20. gitlab push 时提示 “Empty Reply From Server”

热门文章

  1. 网络安全 — 零信任网络访问(ZTNA)
  2. 仿照Kafka,从零开始自实现 MQ
  3. 【word】系统内置样式
  4. 尤菲·如月 与你有约 ぐりぐりキュートユフィ汉化补丁
  5. 计算机屏幕一直闪,如何解决电脑显示器一直闪的问题
  6. 如何辨别手机屏幕材质
  7. 寒武纪裁员:软件研发部门和应届生为重灾区
  8. Vue2组件间通信——父传子值props
  9. 由AFX_IDW_PANE_FIRST宏的含义分析界面库XTP的一个bug
  10. 美国公司暂停镰状细胞基因疗法临床试验:两受试者发展为癌症