簡體   English   中英

主成分分析,成分標簽?

[英]principal component analysis, label of component?

我有一個數據框,其中有17列(一個基因的每一列)和34行(一個病人的每一行)

Patient EXO1 MLH1 MSH2 MSH3 MSH6 PCNA PMS1 PMS2 POLE POLE2 POLE3 POLH RFC2 
1651109    0    0    1    1    1    1    1    1    1     0     1    0    0      
1651648    0    1    1    1    1    0    1    0    1     0     0    1    1  
........

數據框的名稱為testdb 然后我跑

res=princomp(testdb);  
summary(res);

那表明

Importance of components:  
                          Comp.1    Comp.2    Comp.3     Comp.4     Comp.5  
Standard deviation     0.6577676 0.4757815 0.4138278 0.39002636 0.37679135  
Proportion of Variance 0.2822533 0.1476757 0.1117206 0.09923892 0.09261812  
Cumulative Proportion  0.2822533 0.4299290 0.5416497 0.64088859 0.73350672  
....

名稱是comp.1 comp.2 comp.3 ....這太愚蠢了。如何將名稱映射回基因名稱? 我知道biplot(res)將在輸出圖上打印一些基因,但這顯然不是獲取基因名稱的正確方法。

盡管大多數內容已在評論中說明,但我正在將其轉化為答案。

主成分分析的成分是原始變量的線性組合。 因此,成分和基因之間沒有一對一的映射。 除特殊情況外,每個成分都描述多個基因。 他們中有些人有積極貢獻,有些人則有負面貢獻。 有些具有較大的絕對值,有些則具有較小的絕對值。 您可以從加載矩陣中看到這些貢獻:輸入loadings(res) ,您將看到每個組件的組成。

您可以在上樣矩陣的列中找到具有最大絕對值的基因。 這樣,您就可以確定每個組件的“主要貢獻者”。 但是除非這種貢獻非常接近,否則將其作為基因的代名詞充其量只會產生誤導。 如果要根據單個基因進行分析,則PCA並不是正確的工具。

如果您確定盡管有上述警告,但仍希望“主要貢獻者”,則可以使用以下代碼進行操作:

l <- loadings(res)
rownames(l)[apply(l, 2, function(x) which.max(abs(x)))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM