R-因子分析(主成分提取法)

R-使用空气质量数据做因子分析(主成分提取法)

首先,加载我们需要用到的包,

install.packages("corrplot")#相关系数矩阵可视化
install.packages("psych")#因子分析,本次实验使用其平行分析的能力
#另外需要下载mvstat程序包,安装到library的路径下

读取我们准备好的数据

airquality <- read.csv("C:/Users/LRT/Desktop/graduate/paper/data/Airdata.csv", 
                       sep=",", header = TRUE,stringsAsFactors = FALSE)

因为原始数据中的变量名称都是中文,所以先简化一次变量名称

colnames(airquality) <- c("city", "SO2", "NO2","PM10", "CO","O3","PM2.5","days","rain")

简化结束后,查看数据结构等

#查看数据结构
summary(airquality)
str(airquality)

进行因子分析时,需要先检验变量之间的相关性,在这里先将变量之间的相关系数进行可视化

#相关系数矩阵及具有双色表正负相关
airquality_cor <- cor(airquality[2:9], method = "spearman")#spearman法求相关系数矩阵
library(corrplot)#加载corrplot包
corrplot.mixed(airquality_cor, number.cex = .9)#绘制混合型相关系数矩阵图

效果如图:R-因子分析(主成分提取法)_第1张图片
只有图形展示还是不够的,我们需要进行KMO和巴雷特球形检验

#巴雷特球形检验&KMO检验
library(psych)#加载检验用到的包
cortest.bartlett(airquality_cor)#巴雷特球形检验
KMO(airquality_cor)#kmo检验

注意这里的KMO函数书写格式必须为大写
检验结果如图,且结果说明适合做因子分析。R-因子分析(主成分提取法)_第2张图片
R-因子分析(主成分提取法)_第3张图片
接下来需要判断这几个变量需要提取几个因子

#判断需要提取的公因子个数
library(psych)#加载检验用到的包
fa.parallel(airquality_cor, n.obs = 320, 
            fa = "fa", n.iter = 100)#制作碎石图判断个数

代码中,fa表示适合提取的因子个数,如改成pc则表示主成分个数,如果都想展示就改成both,n.iter为要执行的模拟分析的数量。
结果如图:
R-因子分析(主成分提取法)_第4张图片
R-因子分析(主成分提取法)_第5张图片
这里R建议我们选择两个因子
接下来进行主成分法提取因子,并对因子进行最大方差旋转,最后得到一系列我们需要的值

library(mvstats)
airquality_score <- factpc(airquality[2:9],2,rotation="varimax",scores = "regression")
airquality_score$Vars#输出因子方差、方差贡献率以及累计方差贡献率
airquality_score$loadings#输出因子载荷矩阵
airquality_score$scores#输出因子得分
airquality_score$Rank#输出排名
factor.plot(airquality_score,labels = rownames(airquality_score$loadings),
            title = "Factor Analysis",pos = "3")

其中,计算得分的方法可以为regression(回归),也可以为bartlett(巴雷特)。
最后依据结果进行分析即可。

你可能感兴趣的:(日常工作总结分享)