pca降维的基本思想_R语言进行PCA分析
點(diǎn)擊上方「藍(lán)字」關(guān)注我
寫在前面前面我們知道了降維分析
學(xué)習(xí)了PCoA分析
今天學(xué)習(xí)PCA分析...
PCA(Principal Component Analysis),即主成分分析方法,是一種使用最廣泛的數(shù)據(jù)降維算法。PCA的主要思想是將n維特征映射到k維上,這k維是全新的正交特征也被稱為主成分,是在原有n維特征的基礎(chǔ)上重新構(gòu)造出來的k維特征。PCA的工作就是從原始的空間中順序地找一組相互正交的坐標(biāo)軸,新的坐標(biāo)軸的選擇與數(shù)據(jù)本身是密切相關(guān)的。其中,第一個(gè)新坐標(biāo)軸選擇是原始數(shù)據(jù)中方差最大的方向,第二個(gè)新坐標(biāo)軸選取是與第一個(gè)坐標(biāo)軸正交的平面中使得方差最大的,第三個(gè)軸是與第1,2個(gè)軸正交的平面中方差最大的。依次類推,可以得到n個(gè)這樣的坐標(biāo)軸。通過這種方式獲得的新的坐標(biāo)軸,我們發(fā)現(xiàn),大部分方差都包含在前面k個(gè)坐標(biāo)軸中,后面的坐標(biāo)軸所含的方差幾乎為0。于是,我們可以忽略余下的坐標(biāo)軸,只保留前面k個(gè)含有絕大部分方差的坐標(biāo)軸。事實(shí)上,這相當(dāng)于只保留包含絕大部分方差的維度特征,而忽略包含方差幾乎為0的特征維度,實(shí)現(xiàn)對(duì)數(shù)據(jù)特征的降維處理。
思考:我們?nèi)绾蔚玫竭@些包含最大差異性的主成分方向呢?
答案:事實(shí)上,通過計(jì)算數(shù)據(jù)矩陣的協(xié)方差矩陣,然后得到協(xié)方差矩陣的特征值特征向量,選擇特征值最大(即方差最大)的k個(gè)特征所對(duì)應(yīng)的特征向量組成的矩陣。這樣就可以將數(shù)據(jù)矩陣轉(zhuǎn)換到新的空間當(dāng)中,實(shí)現(xiàn)數(shù)據(jù)特征的降維。
?PCoA(Principal Co-ordinates Analysis)分析即主坐標(biāo)分析。它與PCA類似,通過一系列的特征值和特征向量進(jìn)行排序后,選擇主要排在前幾位的特征值,找到距離矩陣中最主要的坐標(biāo),結(jié)果是數(shù)據(jù)矩陣的一個(gè)旋轉(zhuǎn),它沒有改變樣本點(diǎn)之間的相互位置關(guān)系,只是改變了坐標(biāo)系統(tǒng)。如何取舍?
在微生物分析中我們會(huì)基于beta多樣性分析得到的距離矩陣,進(jìn)行PCA和PCoA分析,具體距離矩陣可見:beta多樣性矩陣。PCA是基于樣本的相似矩陣(如歐式距離)來尋找主成分,而PCoA是基于相異距離矩陣(歐式距離以外的其他距離,包括binary_jaccard ,bray_curtis ,unweighted_unifrac和weighted_unifrac距離)來尋找主坐標(biāo)。
在分析的過程中PCA和PCoA分析都會(huì)用到降維的思想,但是在降維的過程中必然會(huì)造成數(shù)據(jù)損失,多數(shù)情況下,我們?cè)谧鼋稻S處理的時(shí)候,期望維數(shù)越低越好,這樣我們就可以最大程度地保真原始數(shù)據(jù)。PCA基于物種豐度矩陣就意味著PCA分析的矩陣維度等于物種數(shù)目。同樣的道理,PCoA基于樣本間的距離矩陣就意味著PCoA分析的矩陣維度與樣本數(shù)目相關(guān)。因此,如果樣本數(shù)目比較多,而物種數(shù)目比較少,那肯定首選PCA;如果樣本數(shù)目比較少,而物種數(shù)目比較多,那肯定首選PCoA。
上期我們已經(jīng)介紹了PCoA,今天我們主講PCA。
發(fā)表在2019年代的Microbome (IF>10.0)上的一篇文章Comparative metagenomic and metatranscriptomic analyses reveal the breed effect on the rumen microbiome and its associations with feed efficiency in beef cattle,利用宏基因組和宏轉(zhuǎn)錄組的關(guān)聯(lián)分析揭示不同牛品種對(duì)瘤胃微生物菌群結(jié)構(gòu)及飼料利用率的影響。作者在分析品種對(duì)瘤胃細(xì)菌(屬水平)和古菌(種)的影響時(shí)候,做了一個(gè)PCoA分析,結(jié)果如下圖:
但是如果我們不是分析微生物多樣性數(shù)據(jù),而是分析其他環(huán)境變量,能不能同樣做出此圖呢?當(dāng)然可以,但是我們用到的吧不是PCoA,而是PCA分析了。話不多說,我們開始實(shí)戰(zhàn)。
逐準(zhǔn)備數(shù)據(jù)
在Excel里面輸入我們的數(shù)據(jù),行為組,檢測(cè)變量為列,切記一定要遵循此規(guī)則,不然后面會(huì)出現(xiàn)bug。
加載包計(jì)算PC1
、PC2以及PC3
library(openxlsx)mydatalibrary(vegan)#PCA主要功能包把mydata轉(zhuǎn)化為矩陣,注意第一列為字符,我們要排除第一列
A
Acolnames(A) rownames(A) rownames(A)library(vegan)env##PCA 排序#環(huán)境變量需要標(biāo)準(zhǔn)化,詳情 ?rdapca_env #I 型標(biāo)尺summary(pca_env, scaling = 1)#II 型標(biāo)尺#summary(pca_env, scaling = 2)#各主成分(PCA軸)特征根,特征根是固定的,和標(biāo)尺選擇無關(guān)pca_eig #除以特征根總和,即可得各主成分(PCA軸)解釋量pca_exp 以上就是我們后面作圖要用到的PC1、PC2以及PC3計(jì)算坐標(biāo)尺度
#提取對(duì)象排序坐標(biāo),以 I 型標(biāo)尺為例,以前兩軸為例#scores() 提取樣方坐標(biāo)site.scaling1 #或者在 summary 中提取site.scaling1 site.scaling1#write.table(site.scaling1, 'site.scaling1.txt', col.names = NA, sep = '\t', quote = FALSE)提取變量排序坐標(biāo),以 II 型標(biāo)尺為例,以前兩軸為例
#scores() 提取環(huán)境變量坐標(biāo)
env.scaling2
#或者 summary 中提取
env.scaling2
env.scaling2
#write.table(env.scaling2, 'env.scaling2.txt', col.names = NA, sep = '\t', quote = FALSE)
以上就是計(jì)算標(biāo)尺坐標(biāo)ggplot2作圖
我們用Excel打開輸出的pca_site.txt文件。加入我們的組別信息:我們共有三組(group1所示),個(gè)數(shù)如group2所示:
我們讀取pca-sitepca_sitepca_site
library(scatterplot3d)#加載包
scatterplot3d(pca_site$PC1, pca_site$PC2, pca_site$PC3, pch=16,color = rep(c('red2', 'purple2','blue2'), c(3,6,5)),xlab = paste('PCA1: 23.14%'), ylab = paste('PCA2: 13.21%'), zlab = paste('PCA3: 10.02%'))
c(3,6,5)為樣本數(shù)量,其中樣本數(shù)量必須與顏色一致
是不是很簡(jiǎn)單易操作,還在猶豫什么趕緊動(dòng)動(dòng)手操作吧!? ? ? ? ? ? 快開學(xué)啦
點(diǎn)贊關(guān)注我
總結(jié)
以上是生活随笔為你收集整理的pca降维的基本思想_R语言进行PCA分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顺丰在哪里上市
- 下一篇: tensorflow图形识别_手把手教你