Principal Component Analysis (PCA) is a useful technique for exploratory data analysis, allowing you to better visualize the variation present in a dataset with many variables.
主成分分析是一個(gè)常見(jiàn)的降維,探索性技術(shù),常常在量表編制或者其它變量較多數(shù)據(jù)集分析的時(shí)候會(huì)用到,今天給大家寫(xiě)寫(xiě)R語(yǔ)言中如何快速高效的進(jìn)行PCA和可視化。
數(shù)據(jù)介紹及PCA
今天用R中自帶的數(shù)據(jù)集mtcars,這個(gè)數(shù)據(jù)集只有32個(gè)觀測(cè),但是有11個(gè)變量,太多了,我們就做PCA選個(gè)主成分出來(lái):
這兒大家得注意主成分分析只能應(yīng)用于數(shù)值變量,而且變量必須標(biāo)準(zhǔn)化
- PCA only works with numeric data
- Categorical data must be encoded as numeric data (e.g. one-hot)
- Numeric data must be scaled (otherwise your PCA will be misleading)
str(mtcars)
可以看到我們的數(shù)據(jù)全是數(shù)值變量但是沒(méi)有標(biāo)準(zhǔn)化,所以我們?cè)谧鯬CA的時(shí)候記得要將它標(biāo)準(zhǔn)化一波,很簡(jiǎn)單,只要設(shè)置scale的參數(shù)為真就行:
mtcars.pca <- prcomp(mtcars, center = TRUE,scale. = TRUE)
summary(mtcars.pca)
上面的代碼就實(shí)現(xiàn)了整個(gè)數(shù)據(jù)的主成分分析,并且輸出了我們的每個(gè)主成分解釋的方法比。
很多時(shí)候,我們還需要畫(huà)一個(gè)碎石圖來(lái)決定保留多少個(gè)主成分,這個(gè)也非常容易實(shí)現(xiàn):
screeplot(mtcars.pca,type = 'lines')
主成分可視化
最有意思的就是我們可以很方便地畫(huà)出來(lái)變量和主成分之間的關(guān)系:
library(ggbiplot)
ggbiplot(mtcars.pca)
[圖片上傳失敗...(image-61dd3-1612180472184)]
在上圖中,所有的主成分都是從圖中心發(fā)出的,我們可以看到hp,cyl,disp,wt這些變量是對(duì)主成分1貢獻(xiàn)較大的,到這兒其實(shí)還不夠,我們這個(gè)數(shù)據(jù)集是關(guān)于車車的,我們還想看那些車車在哪些變量上表現(xiàn)較好,
這個(gè)時(shí)候我們可以給圖中的樣本點(diǎn)加上標(biāo)簽:
ggbiplot(mtcars.pca, labels=rownames(mtcars))
這樣你就可以看到那些樣本點(diǎn)的特征最相近。
還有
你可以給你的樣本點(diǎn)分組展示,比如在我的例子中,有的車車是日本的,有的是美國(guó)的,有的是歐洲的,我想看看不同的國(guó)家的車車在每個(gè)變量每個(gè)主成分上表現(xiàn)如何:
mtcars.country <- c(rep("Japan", 3), rep("US",4), rep("Europe", 7),rep("US",3), "Europe", rep("Japan", 3), rep("US",4), rep("Europe", 3), "US", rep("Europe", 3))
ggbiplot(mtcars.pca,ellipse=TRUE, labels=rownames(mtcars), groups=mtcars.country)
可以看到,有了組別變量之后,出圖時(shí)會(huì)自動(dòng)的加上圈圈和圖例
有了圈圈我們就可以發(fā)現(xiàn),美國(guó)車車的hp,cyl,disp,wt這幾個(gè)特征比較猛!美國(guó)車車和日本車車的差異還是比較大的。
當(dāng)然了,上面的分析只是我在第一組成分和第二主成分的視角下得到的。、
我想看別別的主成分,比如PC3,PC4行不?
安排:
ggbiplot(mtcars.pca,ellipse=TRUE,choices=c(3,4), labels=rownames(mtcars), groups=mtcars.country)
此時(shí),我們發(fā)現(xiàn)亂了套了,因?yàn)?,4主成分本來(lái)解釋的變異就不大了,所以三個(gè)國(guó)家車車在這個(gè)圖中表現(xiàn)不出來(lái)差異也就正常了,所以通常默認(rèn)我們會(huì)在1,2主成分視角下展示我們的數(shù)據(jù)。
小結(jié)
今天給大家寫(xiě)了主成分分析的做法和可視化,感謝大家耐心看完,自己的文章都寫(xiě)的很細(xì),代碼都在原文中,希望大家都可以自己做一做,如果對(duì)您有用請(qǐng)先收藏,再點(diǎn)贊轉(zhuǎn)發(fā)。
也歡迎大家的意見(jiàn)和建議。
如果你是一個(gè)大學(xué)本科生或研究生,如果你正在因?yàn)槟愕慕y(tǒng)計(jì)作業(yè)、數(shù)據(jù)分析、論文、報(bào)告、考試等發(fā)愁,如果你在使用SPSS,R,Python,Mplus, Excel中遇到任何問(wèn)題,都可以聯(lián)系我。因?yàn)槲铱梢越o您提供最好的,最詳細(xì)和耐心的數(shù)據(jù)分析服務(wù)。
如果你對(duì)Z檢驗(yàn),t檢驗(yàn),方差分析,多元方差分析,回歸,卡方檢驗(yàn),相關(guān),多水平模型,結(jié)構(gòu)方程模型,中介調(diào)節(jié),量表信效度等等統(tǒng)計(jì)技巧有任何問(wèn)題,請(qǐng)私信我,獲取最詳細(xì)和耐心的指導(dǎo)。
If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #reports, #composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.
Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??
Then Contact Me. I will solve your Problem...
加油吧,打工人!
往期內(nèi)容
R數(shù)據(jù)分析:如何計(jì)算問(wèn)卷的組合信度,實(shí)例操練
R數(shù)據(jù)分析:如何計(jì)算問(wèn)卷的聚合效度,實(shí)例操練