主成分分析(Principal Component Analysis,PCA), 將多個變量通過線性變換以選出較少個數重要變量的一種多元統計分析方法。又稱主分量分析。
基本思想
主成分分析是設法將原來眾多具有一定相關性(比如P個指標),重新組合成一組新的互相無關的
綜合指標來代替原來的指標。
主成分分析,是考察多個變量間相關性一種多元統計方法,研究如何通過少數幾個主成分來揭示多個變量間的內部結構,即從原始變量中導出少數幾個主成分,使它們盡可能多地保留原始變量的信息,且彼此間互不相關.通常數學上的處理就是將原來P個指標作
線性組合,作為新的
綜合指標。
最經典的做法就是用F1(選取的第一個
線性組合,即第一個綜合指標)的
方差來表達,即Var(F1)越大,表示F1包含的信息越多。因此在所有的
線性組合中選取的F1應該是方差最大的,故稱F1為第一主成分。如果第一主成分不足以代表原來P個指標的信息,再考慮選取F2即選第二個
線性組合,為了有效地反映原來信息,F1已有的信息就不需要再出現在F2中,用數學語言表達就是要求Cov(F1, F2)=0,則稱F2為第二主成分,依此類推可以構造出第三、第四,……,第P個主成分。
基本案例
library(psych) # 讀取樣本數據 mydata <- read.csv("file.txt", header=F) mydata2 <- read.csv("file.txt", header=F, sep=',', na.string="NULL", skip=0, nrows=100);
# 計算最優主成分個數 mydata.screePlotsModel <- fa.parallel(mydata, fa="pc", n.iter=100, show.legend=F, main="崖底碎石圖"); # 主成分個數 n=mydata.screePlotsModel$ncomp; # 主成分分析函數 模型 mydata.pr <- princomp(mydata, scores=T, cor = TRUE) #勾畫碎石頭 screeplot(mydata.pr,type="line",mian="碎石圖",lwd=2) # 計算樣本數據的成分值 pre <- predict(mydata.pr,mydata) pre2 <- predict(mydata.pr,mydata2)
pre2[,1:n]