你不知道的PCA及在R中的實(shí)現(xiàn)
爾云間? 一個(gè)專門做科研的團(tuán)隊(duì)
? ?

(Principal Component Analysis )是一種數(shù)據(jù)降維的分析方式,它可以將復(fù)雜的數(shù)據(jù)通過數(shù)學(xué)運(yùn)算變得更加簡單。比如,在四維空間中我們要考量時(shí)間的影響,正如螞蟻不懂生活在三維世界的我們,更高維度的世界已經(jīng)超越了我們的認(rèn)知。你在實(shí)驗(yàn)過程中,一定也遇到過類似情況,面對復(fù)雜的數(shù)據(jù)無從下手,今天小云會帶大家運(yùn)用全新的思維解決你在實(shí)驗(yàn)過程中遇到的困擾,下面讓我們看看吧。

在收集大量數(shù)據(jù)后,你是不是也面臨著找不到頭緒的情況。在實(shí)驗(yàn)設(shè)計(jì)愈發(fā)多樣化的今天,多樣化的大數(shù)據(jù)無疑會為研究和開發(fā)提供更加豐富多彩的信息,但是也在一定程度上增加了數(shù)據(jù)分析的難度。更重要的是在很多條件下,許多變量之間可能存在相關(guān)性,這也為數(shù)據(jù)分析帶來不小的挑戰(zhàn)。
如果對每個(gè)指標(biāo)進(jìn)行分析,分析往往是孤立的,不能完全利用數(shù)據(jù)間的相關(guān)性,因而盲目減少指標(biāo)會損失很多有用的信息,從而產(chǎn)生錯(cuò)誤的結(jié)論。那么如何在不影響結(jié)果的情況下,簡化分析并做出更加正確的判斷,正是小云要給大家分享的。

比如我們測了200個(gè)單細(xì)胞的數(shù)據(jù),通過基因表達(dá)水平的差異將這200個(gè)樣品進(jìn)行分類,我們需要考慮這些樣品間每個(gè)基因存在的調(diào)控、拮抗或者協(xié)同等關(guān)系,還要考慮一些外界因素的干擾,比如一些housekeeping genes在每個(gè)樣品中都有一致的表達(dá)情況,那么考慮它們對于解釋樣本差異的作用將毫無意義,所以我們可以通過去掉對結(jié)果沒有影響的基因來達(dá)到簡化運(yùn)算的目的。
醫(yī)學(xué)領(lǐng)域中,我們也經(jīng)常用PCA圖來進(jìn)行疾病危險(xiǎn)因素分析,腸道菌群聚類分析,推斷腫瘤亞群之間的進(jìn)化關(guān)系,還用它來觀察樣本的分組、趨勢、剔除異常數(shù)據(jù),找到數(shù)據(jù)中的隱藏模式,找到相關(guān)變量。
R語言中可以進(jìn)行PCA分析的主要有rda()、prcomp()、princomp() 、PCA() 、dudi.pca() ?、epPCA()?等包;對于分析結(jié)果可視化,factoextra包封裝了包括分析結(jié)果提取和基于ggplot2的數(shù)據(jù)可視化的函數(shù)。
理論知識我們都知道了,那么在R中如何實(shí)現(xiàn)PCA的分析呢,如果我們考慮2個(gè)基因,可以用以下代碼實(shí)現(xiàn)。
代碼如下:
count <- 100
Gene2_a <- rnorm(count,5,0.2)
Gene2_b <- rnorm(count,5,0.2)
cy_data2 <- data.frame(Gene1 = c(Gene1_a, Gene1_b), Gene2 = c(Gene2_a, Gene2_b),
?????????????????????? Group=c(grp_a, grp_b))
cy_data2 <- as.data.frame(cy_data2)
row.names(cy_data2) <- label
kable(headTail(cy_data2), booktabs=T,
????? caption="Expression profile for Gene1 and Gene2 in 100 samples")
ggplot(cy_data2,aes(Gene1, Gene2))+geom_point(aes(color=factor(Group)))+
? theme(legend.position=c(0.5,0.9)) + theme(legend.title=element_blank()) +
? ylim(0,10) + xlim(0,25)

從上圖可以看出,200 個(gè)樣品根據(jù) Gene1 和 Gene2 的表達(dá)量的不同在坐標(biāo)軸上被被分為了 2 類,在這個(gè)例子中,我們可以很容易的看出 Gene1 對樣品分類的貢獻(xiàn)要比 Gene2 大,因?yàn)?Gene1 在樣品間的表達(dá)差異大。
假如我們有 1 個(gè)基因,可以在線性層面對樣本進(jìn)行分類;如果我們有 2 個(gè)基因,可以在一個(gè)平面對樣本進(jìn)行分類;如果我們有 3 個(gè)基因,可以在一個(gè)立體空間對樣本進(jìn)行分類;
如果有更多的基因,比如說 n個(gè),那么每個(gè)樣品就是 n 維空間的一個(gè)點(diǎn),則很難在圖形上展示樣品的分類關(guān)系。
利用 PCA 分析,我們可以選取貢獻(xiàn)最大的 2 個(gè)或 3 個(gè)主成分作為數(shù)據(jù)代表用以可視化。這比直接選取三個(gè)表達(dá)變化最大的基因更能反映樣品之間的差異。(利用 Pearson 相關(guān)系數(shù)對樣品進(jìn)行聚類在樣品數(shù)目比較少時(shí)是一個(gè)解決辦法)。

好了,今天的分享就到這里了,歡迎各位小伙伴留言討論哦。
推薦閱讀