2017-08-19 50 views
1

我對小數據集(20個觀測值,17個變量,其中大多數高度相關)進行了快速PCA分析和可視化。我用library(psych)與現成的功能principal()做大部分工作。我得到了standartized加載矩陣。輸出的示例如下(六是變量,只有幾個所示):r:pca和繪製主成分空間中的觀測值

 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 
V1 0.20 -0.79 0.46 0.06 -0.20 0.22 -0.06 0.03 -0.15 
V2 0.18 -0.86 0.37 -0.12 -0.09 0.17 -0.11 -0.01 -0.05 
V3 0.72 0.42 -0.16 0.23 -0.35 -0.17 0.21 -0.05 0.03 
V4 0.81 0.34 -0.21 0.34 -0.22 0.03 -0.01 -0.04 0.00 
V5 0.61 -0.38 -0.34 -0.02 0.37 -0.27 0.35 0.03 -0.12 
V6 0.80 0.31 0.02 -0.08 -0.38 0.20 -0.04 -0.13 -0.19 

我要保留2種或3個主成分(其他測試建議這樣做),並提請我在數據的散點圖空間PC1-PC2或3D PC1-PC2-PC3。如何用R來做到這一點?

以下是參數上的原始數據(前幾行)示例。

field,V1,V2,V3,V4,V5,V6 
Shah-Deniz,37.5,70,16200,23000,300,250 
Sanate,180,150,14000,17000,175,190 
Kern-River,275,250,13000,17000,64,240 
East Texas,90,100,11000,12000,520,160 
Smackover,35,25,13700,15000,50,170 
South Pass,45,60,14100,15000,61,190 
Monroe,27,30,14400,15000,72,150 
Minas,170,230,6500,7300,300,90 

我所知,該解決方案是由負載矩陣相乘,不知何故這些原始矩陣來獲得PCI空間預測,但我這個矩陣乘法,並經過多次試驗的秩序有點混亂。第二個挑戰是散點圖(2D或3D),並用觀察數字標記所有點。也許在包裏有一個函數,這個矩陣代數是否工作,並且可以從頭開始可視化結果?

更新。原因之一是原始數據中的變量無法比擬(有些以km爲單位,一些以m爲單位,然後是km^2或mln.tons)。那麼在某個階段,縮放數據矩陣應該起作用了嗎?

回答

3

我不熟悉的psych庫,但你可以在基礎R很容易做到這一點

X = data.frame(matrix(rnorm(1:100), nrow = 10)) # Make example dataframe 
pca = princomp(X, cor = T) # Perform PCA. Note cor = T should get around your 'variables on different scales' issues as correlation matrix is scale-free. 
scores = pca$scores # Extract PCA scores 
windows() # Plot scores for first 2 pcs 
plot(scores[, 1], scores[, 2], xlab = "PC1", ylab = "PC2", type = "n") 
text(scores[, 1], scores[, 2], row.names(X), cex = 0.8) #you can replace row.names(X) with whatever your observations are called 

不知道該怎麼辦了3D散點圖了我的頭頂部,但與PCA的我總是隻是做多個二維圖,例如PC1與PC2,PC1與PC3等。

+0

那麼簡單嗎?我很震驚 – astrsk

+0

是的:)如果你喜歡我的回答你會介意接受嗎? – jruf003