1. 程式人生 > >R語言 PCA(主成分分析)

R語言 PCA(主成分分析)

1、關鍵點

綜述:主成分分析 因子分析 典型相關分析,三種方法的共同點主要是用來對資料降維處理的從資料中提取某些公共部分,然後對這些公共部分進行分析和處理。


#主成分分析 是將多指標化為少數幾個綜合指標的一種統計分析方法

主成分分析是一種通過降維技術把多個變數化成少數幾個主成分的方法,這些主成分能夠反映原始變數的大部分資訊,他們通常表示為原始變數的線性組合。

 2、函式總結

#R中作為主成分分析最主要的函式是princomp()函式
#princomp()主成分分析   可以從相關陣或者從協方差陣做主成分分析
#summary()提取主成分資訊 
#loadings()顯示主成分分析或因子分析中載荷的內容
#predict()預測主成分的值 
#screeplot()畫出主成分的碎石圖 
#biplot()畫出資料關於主成分的散點圖和原座標在主成分下的方向

3、案例

#現有30名中學生身高、體重、胸圍、坐高資料,對身體的四項指標資料做主成分分析。

#1.載入原始資料
test<-data.frame(
  X1=c(148, 139, 160, 149, 159, 142, 153, 150, 151, 139,
           140, 161, 158, 140, 137, 152, 149, 145, 160, 156,
           151, 147, 157, 147, 157, 151, 144, 141, 139, 148),
  X2=c(41, 34, 49, 36, 45, 31, 43, 43, 42, 31,
           29, 47, 49, 33, 31, 35, 47, 35, 47, 44,
           42, 38, 39, 30, 48, 36, 36, 30, 32, 38),
  X3=c(72, 71, 77, 67, 80, 66, 76, 77, 77, 68,
          64, 78, 78, 67, 66, 73, 82, 70, 74, 78,
          73, 73, 68, 65, 80, 74, 68, 67, 68, 70),
  X4=c(78, 76, 86, 79, 86, 76, 83, 79, 80, 74,
           74, 84, 83, 77, 73, 79, 79, 77, 87, 85,
           82, 78, 80, 75, 88, 80, 76, 76, 73, 78)
  )

#2.作主成分分析並顯示分析結果
test.pr<-princomp(test,cor=TRUE)  #cor是邏輯變數當cor=TRUE表示用樣本的相關矩陣R做主成分分析

                                                                                    當cor=FALSE表示用樣本的協方差陣S做主成分分析
summary(test.pr,loadings=TRUE)  #loading是邏輯變數當loading=TRUE時表示顯示loading 的內容

                                                         #loadings的輸出結果為載荷是主成分對應於原始變數的係數即Q矩陣

分析結果含義
#----Standard deviation 標準差   其平方為方差=特徵值
#----Proportion of Variance  方差貢獻率
#----Cumulative Proportion  方差累計貢獻率


#由結果顯示 前兩個主成分的累計貢獻率已經達到96% 可以捨去另外兩個主成分 達到降維的目的

因此可以得到函式表示式 Z1=-0.497X'1-0.515X'2-0.481X'3-0.507X'4

                                       Z2=  0.543X'1-0.210X'2-0.725X'3-0.368X'4

#4.畫主成分的碎石圖並預測

screeplot(test.pr,type="lines")

p<-predict(test.pr)

由碎石圖可以看出 第二個主成分之後 圖線變化趨於平穩 因此可以選擇前兩個主成分做分析