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.
主成分分析是一个常见的降维,探索性技术,常常在量表编制或者其它变量较多数据集分析的时候会用到,今天给大家写写R语言中如何快速高效的进行PCA和可视化。
数据介绍及PCA
今天用R中自带的数据集mtcars,这个数据集只有32个观测,但是有11个变量,太多了,我们就做PCA选个主成分出来:
这儿大家得注意主成分分析只能应用于数值变量,而且变量必须标准化
- 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)
可以看到我们的数据全是数值变量但是没有标准化,所以我们在做PCA的时候记得要将它标准化一波,很简单,只要设置scale的参数为真就行:
mtcars.pca <- prcomp(mtcars, center = TRUE,scale. = TRUE)
summary(mtcars.pca)
上面的代码就实现了整个数据的主成分分析,并且输出了我们的每个主成分解释的方法比。
很多时候,我们还需要画一个碎石图来决定保留多少个主成分,这个也非常容易实现:
screeplot(mtcars.pca,type = 'lines')
主成分可视化
最有意思的就是我们可以很方便地画出来变量和主成分之间的关系:
library(ggbiplot)
ggbiplot(mtcars.pca)
[图片上传失败...(image-61dd3-1612180472184)]
在上图中,所有的主成分都是从图中心发出的,我们可以看到hp,cyl,disp,wt这些变量是对主成分1贡献较大的,到这儿其实还不够,我们这个数据集是关于车车的,我们还想看那些车车在哪些变量上表现较好,
这个时候我们可以给图中的样本点加上标签:
ggbiplot(mtcars.pca, labels=rownames(mtcars))
这样你就可以看到那些样本点的特征最相近。
还有
你可以给你的样本点分组展示,比如在我的例子中,有的车车是日本的,有的是美国的,有的是欧洲的,我想看看不同的国家的车车在每个变量每个主成分上表现如何:
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)
可以看到,有了组别变量之后,出图时会自动的加上圈圈和图例
有了圈圈我们就可以发现,美国车车的hp,cyl,disp,wt这几个特征比较猛!美国车车和日本车车的差异还是比较大的。
当然了,上面的分析只是我在第一组成分和第二主成分的视角下得到的。、
我想看别别的主成分,比如PC3,PC4行不?
安排:
ggbiplot(mtcars.pca,ellipse=TRUE,choices=c(3,4), labels=rownames(mtcars), groups=mtcars.country)
此时,我们发现乱了套了,因为3,4主成分本来解释的变异就不大了,所以三个国家车车在这个图中表现不出来差异也就正常了,所以通常默认我们会在1,2主成分视角下展示我们的数据。
小结
今天给大家写了主成分分析的做法和可视化,感谢大家耐心看完,自己的文章都写的很细,代码都在原文中,希望大家都可以自己做一做,如果对您有用请先收藏,再点赞转发。
也欢迎大家的意见和建议。
如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、论文、报告、考试等发愁,如果你在使用SPSS,R,Python,Mplus, Excel中遇到任何问题,都可以联系我。因为我可以给您提供最好的,最详细和耐心的数据分析服务。
如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取最详细和耐心的指导。
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...
加油吧,打工人!