主成分分析(PCA)& 主坐标分析(PCoA)——R包绘图(2D/3D散点图)

导读

主成分分析(Principal Components Analysis,PCA),也称主分量分析或主成分回归分析法,是一种无监督的数据降维方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。这种降维的思想首先减少数据集的维数,同时还保持数据集的对方差贡献最大的特征,最终使数据直观呈现在二维坐标系。

数据降维

直观上,第一主成分轴 优于 第二主成分轴,具有最大可分性。

主坐标分析(Principal Coordinates Analysis,PCoA),即经典多维标度(Classical multidimensional scaling),用于研究数据间的相似性。

【二者差异】
PCA与PCoA都是降低数据维度的方法,但是差异在在于PCA是基于原始矩阵,而PCoA是基于通过原始矩阵计算出的距离矩阵。因此,PCA是尽力保留数据中的变异让点的位置不改动,而PCoA是尽力保证原本的距离关系不发生改变,也就是使得原始数据间点的距离与投影中即结果中各点之间的距离尽可能相关。

一、整理数据(转录组的基因表达量数据)

基因表达量数据通过RSEM软件定量后得到

# RSEM构建表达矩阵
rsem-generate-data-matrix Your_Data_Name*.genes.results > output.matrix
# output.matrix是没有标准化的表达量矩阵,原始count值的表达量矩阵
# 整理表头和初步筛选数据
awk 'BEGIN{printf "geneid\tI0-1\tI0-2\tI0-3\tI0-4\tI3-1\tI3-2\tI3-3\tI3-4\tU0-1\tU0-2\tU0-3\tU0-4\tU3-1\tU3-2\tU3-3\tU3-4\n"}{if($2+$3+$4+$5+$6+$7+$8+$9+$10+$11+$12+$13+$14+$15+$16+$17>10)print $0}' output.matrix > input.txt
# 将input.txt 导出
input.txt

二、PCA分析及R包绘图(2D散点图)

library(ggplot2)
setwd("D:/Your/Working/Directory/")
## 载入数据与整理,目的是得到取整后的基因表达量矩阵(注意:原始矩阵中有0则应该整体加1处理)
rsem_counts <- read.table("input.txt",header = T,row.names = 1)
rsem_counts <- rsem_counts+1
rsem_counts <- as.matrix(rsem_counts)
data <- round(rsem_counts,digits = 0)

## 整理分组信息(注意:根据自己的实际情况来添加分组信息,切勿照抄)
period <- factor(c(rep("DPI0",4),rep("DPI3",4),rep("DPI0",4),rep("DPI3",4)))
condition <- factor(c(rep("infection",8),rep("control",8)))
#batch <- factor(c(rep("first",2),rep("second",3),rep("first",1),rep("second",2),rep("first",2),rep("second",2),rep("first",2),rep("second",2)))
##如有批次效应,可添加batch信息
coldata <-data.frame(row.names = colnames(data),condition,period)

## 差异表达分析的批次校正,但不改变原始矩阵(DESeqDataSetFormMatrix)
dds <-DESeqDataSetFromMatrix(countData = data,colData = coldata,design = ~period+condition)

## PCA分析
## 样本量超过30推荐用vsd,样本量低于30用rld
#vsd <- vst(dds, blind = FALSE)
#vsd_period <- plotPCA(vsd, intgroup=c("condition","period"),returnData = T)
rld <- rlog(dds)
rld_period <- plotPCA(rld, intgroup=c("condition","period"),returnData = T)

## 绘图
library(ggrepel)
p <- ggplot(rld_period, aes(x=PC1,y=PC2,color=period,shape=condition))+
  geom_point(alpha=.7, size=7)+
  geom_text_repel(aes(x=PC1,y=PC2,label=rownames(rld_period),size=14,col="black"))+
  #scale_color_manual(values =  rev(c("#0072B2","#D55E00","#CC79A7")))+
  theme_bw()+
  labs(x=paste("PCA 1", sep=""),
       y=paste("PCA 2", sep="")) +
  scale_colour_discrete(
    name="period",
    breaks = c("DPI0","DPI3"),
    labels = c("DPI 0","DPI 3"))+
  # 图例
  theme(panel.background = element_blank(),
        panel.grid = element_blank(),
        plot.title = element_text(hjust = 0.5),
        legend.position="right",
        legend.title = element_text(size=14),
        legend.text = element_text(size=14),
        axis.text.x = element_text(size=14),
        axis.text.y = element_text(size=14),
        axis.title.x = element_text(size=14),
        axis.title.y = element_text(size=14))
#添加标签,给-log10(padj)>10的基因加上Gene名字
#geom_text_repel(data=subset(dataset, -log10(pval)>10),aes(label=id),col="black", alpha =2)
p

三、PCoA分析及R包绘图(3D散点图)

除转录组研究以外,在16S微生物的研究中我们会根据物种丰度的文件对数据进行PCA或者PCoA分析,也是我们所说的β多样性分析。根据PCA或者PCoA的结果看感染组和对照组能否分开,以了解微生物组的总体变化情况。

具体内容及绘图方法可参考下面这篇文章。
16s—β多样性分析(R画三维PCoA图)

参考文章

R数据可视化4: PCA和PCoA图
详解主成分分析PCA

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容