主成分分析
##主成分分析pca-R语言实战::pca是把许多个体的不同特征转换为每个个体一个或几个特征;
###EFA是将许多个体的不同特征用几个个体的不同特征来表示
#数据集:psych包-USJudgeRatings律师对法院法官的评分
library(psych)
##1.判断主成分个数 本次去除接触次数没有关系的一列CONT
data_law<-USJudgeRatings
M<-USJudgeRatings[,-1]
###结果是:折线图(碎石图)往上;直线=1(水平线)往上;虚线(模拟100次的水平分析)往上;看来最少的是1
fa.parallel(USJudgeRatings[,-1],fa="pc",n.iter=100, show.legend =T,main = "Screen plot with parallel analysis")
###提取主成分
pc<-principal(USJudgeRatings[,-1],nfactors= 1)
##pc 列为主成分与观察值的相关系数;h2表示观察值方差有百分之多少可以用第一主成分分析;u2为无法解释1-h2
pc
##主成分旋转到新的坐标上 单个主成分可以不用旋转,2个以上采用,且主成分得分也要用旋转的得分;之后计算pc得分
rc<-principal(USJudgeRatings[,-1],nfactors= 1,rotate = "varimax")
rc
##主成分得分--每个观察值对应的律师的相关系数;
score<-principal(USJudgeRatings[,-1],nfactors= 1,scores = T)
score
##探索性因子得分
##数据:ability.cov 112个人
options(digits = 2)
cov<-ability.cov$cov
###利用cov2cor()转换为相关系数矩阵
cor<-cov2cor(cov)
cor
###判断需要多少因子
fa.parallel(cor,n.obs=112,fa="both",n.iter= 100,main="Screen plot with padallelanalysis")
##提取公共因子:先旋转再提取
##正交旋转提取因子
fa.varimax<-fa(cor,nfactors= 2,rotate = "varimax",fm="pa")
fa.varimax
##斜交旋转提取因子
fa.promax<-fa(cor,nfactors= 2,rotate = "Promax",fm="pa")
fa.promax
##正交与斜交结果图
factor.plot(fa.promax,labels= rownames(fa.promax$loadings))
fa.diagram(fa.promax,simple=F)
##因子得分
fa(cor,nfactors = 2,rotate ="Promax",fm="pa",scores = T)