2015-09-03 38 views
0

我的數據是一個[478 x 4200]矩陣。我正在考慮將4200個元素作爲組件,我想減少需要照顧的組件數量。 我用prcomp(),不知何故它總是返回478主要組件,即使我轉置矩陣。據我所知prcomp()使用列作爲組件。我想我應該得到4200個主要組件。 我可以通過計算我需要的所有矩陣來手動完成,但我想用此函數進行檢查。使用prcomp的r中的主成分分析()

+0

這可能是更好的張貼在交叉驗證。我的理解是你總是需要比觀察更多的觀察才能使其有意義。至少,我相信協方差矩陣的所有更高的特徵值將爲零,因爲478個分量跨越子空間。 – user295691

+1

事實上,'prcomp'在內部執行這個截斷操作 - 在'stats ::: prcomp.default','if(rank user295691

+1

http:// stats .stackexchange.com/questions/123318/why-are-there-only-n-1-principal-components-for-n-data-points-if-the-number – scoa

回答

2

是有些明確的:

如果你有P的N = 478 =觀測變量4200每次需要構建一個478 X 4200矩陣,其中每行是那些4200個變量的觀察。我們稱這個矩陣爲m。

PCA然後用

pca_result <- prcomp(m) 

所得主成分的載體是在基質pca_result $旋轉進行。每一列都是一個主成分,並且通過減少的方差對列進行排序。

每個主成分的維數爲p = 4200,並且會有min(n-1,p)=​​ 478個信息性主成分。所以pca_result $ rotation是一個4200 x 478矩陣。

PCA評分向量是矩陣pca_result $ x的列。因此,也將有478(=主要組件的數量)各自的維度478(=觀察次數)的得分向量。