基于R語(yǔ)言的微生物群落組成多樣性分析——PCA分析

????PCA,即主成分分析(Principal Component Analysis),是一種考察多個(gè)變量間相關(guān)性的降維統(tǒng)計(jì)方法,其原理是設(shè)法將原來(lái)變量重新組合成一組新的互相無(wú)關(guān)的幾個(gè)綜合變量,同時(shí)根據(jù)實(shí)際需要從中可以取出幾個(gè)較少的綜合變量盡可能多地反映原來(lái)變量的信息的統(tǒng)計(jì)方法(摘自百度百科)。

????通俗來(lái)說(shuō),就是將數(shù)據(jù)從高維映射到低維以達(dá)到降低特征維度的目的。計(jì)算時(shí),主要通過(guò)對(duì)協(xié)方差矩陣進(jìn)行特征分解而得到數(shù)據(jù)的特征向量(即主成分)與其權(quán)值(特征值)。

加載包

1)設(shè)置工作目錄

rm(list=ls())#clear Global Environment
setwd('D:\\桌面\\PCA')#設(shè)置工作路徑

2)安裝、加載包

#安裝所需R包
# install.packages("ggplot2")
# install.packages("ggpubr")
# install.packages("ggsignif")
#加載包
library(ggplot2)#繪圖包
library(ggpubr)
library(ggsignif)

讀取數(shù)據(jù)

#讀取數(shù)據(jù)(以之前做PCoA分析的OTU表為例)
otu_raw <- read.table(file="otu.txt",sep="\t",header=T,check.names=FALSE ,row.names=1)
#由于排序分析函數(shù)所需數(shù)據(jù)格式原因,需要對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)置
otu <- t(otu_raw)
image.png

PCA分析

#pca分析(此處使用R內(nèi)置函數(shù)prcomp()函數(shù)進(jìn)行分析)
df_PCA <- prcomp(otu,scal=TRUE)
#預(yù)覽pca分析結(jié)果
df_PCA_sum <- summary(df_PCA)
#提取出PC1及PC2的坐標(biāo)
PC12 <- df_PCA$x[,1:2]
#計(jì)算各主成分解釋度
pc <- df_PCA_sum$importance[2,]*100

加入分組信息

#PCl2原來(lái)是matrix,轉(zhuǎn)化為data.frame
PC12 <- as.data.frame(PC12)
#給PC12添加samp1es變量
PC12$samples <- row.names(PC12)
# 添加分組信息
group <- read.table("group.txt", sep='\t', header=T)
#修改列名
colnames(group) <- c("samples","group")
#將繪圖數(shù)據(jù)和分組合并
df <- merge(PC12,group,by="samples")
head(df)
image.png

繪制PCA散點(diǎn)圖

color=c("#1597A5","#FFC24B","#FEB3AE")#顏色變量
p1<-ggplot(data=df,aes(x=PC1,y=PC2,
                       color=group,shape=group))+#指定數(shù)據(jù)、X軸、Y軸,顏色
  theme_bw()+#主題設(shè)置
  geom_point(size=1.8)+#繪制點(diǎn)圖并設(shè)定大小
  theme(panel.grid = element_blank())+
  geom_vline(xintercept = 0,lty="dashed")+
  geom_hline(yintercept = 0,lty="dashed")+#圖中虛線
  #geom_text(aes(label=samples, y=V2+0.03,x=V1+0.03,  vjust=0),size=3.5)+#添加數(shù)據(jù)點(diǎn)的標(biāo)簽
  # guides(color=guide_legend(title=NULL))+#去除圖例標(biāo)題
  labs(x=paste0("PC1 (",pc[1],"%)"),
       y=paste0("PC2 (",pc[2],"%)"))+#將x、y軸標(biāo)題改為貢獻(xiàn)度
  stat_ellipse(data=df,
               geom = "polygon",level=0.95,
               linetype = 2,size=0.5,
               aes(fill=group),
               alpha=0.2,
               show.legend = T)+
  scale_color_manual(values = color) +#點(diǎn)的顏色設(shè)置
  scale_fill_manual(values = c("#1597A5","#FFC24B","#FEB3AE"))+
  theme(axis.title.x=element_text(size=12),#修改X軸標(biāo)題文本
        axis.title.y=element_text(size=12,angle=90),#修改y軸標(biāo)題文本
        axis.text.y=element_text(size=10),#修改x軸刻度標(biāo)簽文本
        axis.text.x=element_text(size=10),#修改y軸刻度標(biāo)簽文本
        panel.grid=element_blank())#隱藏網(wǎng)格線
p1
image.png

添加箱線圖

????與之前RDA繪制代碼基本一致,只需要改正幾個(gè)參數(shù)即可,這里不做過(guò)多贅述,具體大家可下載源碼查看!
image.png

源碼及作圖數(shù)據(jù)可在公眾號(hào)后臺(tái)回復(fù)\color{red}{PCA}獲取?。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容