R

如何找到與第一主成分最相關的變量?

  • September 10, 2014

我看到一篇文章,作者對基因表達數據進行了主成分分析,發現了與第一個主成分最相關的基因,他們使用該基因列表進行進一步分析。有人能告訴我如何找出與第一主成分最相關的實體(在這種情況下是基因)嗎?

這是原始免費文章的鏈接,他們是這樣計算的:

與第一主成分最相關的基因的基因集富集分析結果。將基因與第一主成分的相關性從平均值轉換為標準差,然後選擇值> 1.5(正相關)或< -1.5(負相關)的基因。

我可以製作一個包含 6 個樣本和 20 個基因矩陣的玩具示例,並按照以下方式進行 PCA,但接下來如何進行:

rm(list=ls())
set.seed(12345)
my.mat <- matrix(rnorm(120,0,0.5),nrow=6,byrow=TRUE)
rownames(my.mat) <- paste("s",1:6,sep="")
colnames(my.mat) <- paste("g",1:20,sep="")
head(my.mat)

#Ensure that input data is Z-transformed 
pca.object <- prcomp(my.mat,center=TRUE,scale.=TRUE)
summary(pca.object)
par(mfrow=c(1,2))
plot(pca.object)
biplot(pca.object)

#The Rotation
pca.object$rotation

總結:如果原始變量是標準化的,那麼您應該簡單地查看第一個主軸(rotation在 R 術語中)並選擇具有最高絕對值的變量。


考慮數據集在列中具有居中變量和行中的數據點。對該數據集執行 PCA 相當於奇異值分解. 這裡的列是主軸,是具有奇異值的對角矩陣,列是按單位範數縮放的主成分。標準化 PC 由下式給出. PC 本身(也稱為“分數”)由以下列給出.

請注意,協方差矩陣由下式給出, 所以主軸是協方差矩陣的特徵向量和是它的特徵值。

我們現在可以計算原始變量和標準化 PC 之間的交叉協方差矩陣:

該矩陣稱為載荷矩陣:它由協方差矩陣的特徵向量給出,該協方差矩陣由相應特徵值的平方根縮放。 原始變量和 PC 之間的互相關矩陣由相同的表達式除以原始變量的標準差(通過相關性的定義)給出。如果原始變量在執行 PCA 之前被標準化(即 PCA 是在相關矩陣上執行的),它們都等於. 在最後一種情況下,互相關矩陣再次簡單地由下式給出.

您只對與第一台 PC 的最高相關性感興趣,這意味著您應該查看並選擇具有最高絕對值的變量。但請注意,第一列等於第一列,直到一個比例因子(由協方差矩陣的第一個特徵值的平方根給出)。所以等效地,您可以查看(即第一個主軸,或rotation在 R 術語中)並選擇具有最高絕對值的變量。

但同樣,這只有在原始變量被標準化的情況下才是正確的。

引用自:https://stats.stackexchange.com/questions/115032

comments powered by Disqus