主成分分析
1. 将原始数据标准化
2. 建立变量的相关系数矩阵
3. 求R的特征根及相应的特征向量
4. 由累积方差贡献率确定主成分个数
5. 对主成分进行分析
library(psych)
KMO(cor(inputfile)) #>0.5,可以做主成分分析
cortest.bartlett(inputfile) # H0:变量之间相互独立,要拒绝H0,才有降维的必要
#模型分析
test<-princomp(inputfile,cor=TRUE)
test$sdev#特征根>1,
(test$sdev)^2/sum((test$sdev)^2)#方差累积贡献率>85%,确定主成分个数k
test$scores[,1:k]#利用前K个主成分做之后分析的自变量
#综合排名计算权重
#sum(特征向量*相应特征根的贡献率)/sum(k个主成分贡献率)
#计算综合得分:sum(各原始自变量*权重)
#得分排名
# 读取数据文件,提取标题行
inputfile <- read.csv('./data/principal_component.csv', header = FALSE)
# 主成分分析
PCA <- princomp(inputfile, cor = FALSE)
names(PCA) # 查看输出项
(PCA$sdev) ^ 2 # 主成分特征根
summary(PCA) # 主成分贡献率
PCA$loadings # 主成分载荷
PCA$scores # 主成分得分
#确定主成分后选择
PCA$scores[,1:k]
当cor = TRUE是使用相关系数矩阵计算
当cor = FALSE是使用协方差矩阵计算
用相关系数矩阵计算就相当于先标准化,在进行主成分分析
用协方差矩阵计算就是不进行标准化