主成分分析
library(psych)
#画出碎石图确定数据集all的7到12列的数据的主成分个数
fa.parallel(all[7:12], fa = 'pc', n.iter = 100, show.legend = FALSE)
#抽取出主成分,这里nfactors设置为2,
#rotate指定旋转的方式为最大方差旋转(varimax),将成分载荷阵变得更容易解释
#score为True计算出主成分得分
data2_pca2 <- principal(all[7:12], nfactors = 2, rotate = "varimax",score=TRUE)
#将得到的两个主成分RC1,RC2绑定到数据集all中
RC<-data.frame(data2_pca2$scores)
all<-data.frame(all,RC1=RC$RC1,RC2=RC$RC2)
autoplot(prcomp(all[7:12], scale = TRUE), label = TRUE)
#将主成分加入模型进行回归
lmmodel <- lm(all.y~.,data=all[,c(1:6,13,14)])
因子回归
#通过factanal实现,scores表示计算因子得分的方法,这里指定两个因子
da<-factanal(all[7:12],2,score=c("regression"),data=all[7:12],rotation="varimax")
#FC计算因子得分
FC<-data.frame(da$score)
all<-data.frame(all,FC1=FC$Factor1,FC2=FC$Factor2)
lmmodel <- lm(log(all$reviewCount)~.,data=all[,c(1:6,19,20)])
##利用psych包的fa函数实现
#判断需提取的公共因子数
convariances<-ability.cov$cov
correlations<-cov2cor(covariances)
correlations<-cor(all[7:12])
fa.parallel(correlations,n.obs=2392,fa="both",n.iter=100)
#提取因子
fa.varimax<-fa(correlations,nfactors=2,rotate="varimax",fm="pa",score=TRUE)