上山打老虎 发表于 2021-7-1 22:56:55

R语言变量降维分析

  变量降维: (Variable dimension reduction) 涉及因子分析/主成分分析等,通过使用这个工具,可以将多个变量减少,用新的核心变量进行替代,并将新变量用线性关系表示。从而减少变量字段过多造成的数据分析复杂度。将20个变量用6个变量进行替换,该6个变量及就成为新的变量。
# Retain numeric digits
covariances<-newdata
covariances<- cov(covariances)
correlations<-cov2cor(covariances)
print(correlations)
library(psych)
fa.parallel(correlations,n.obs=length(newdata[,1]),fa="both",n.iter=100,main="Scree plots with parallel analysis")
fa<-fa(correlations,nfactors=n,rotate="none",fm="pa")
print(fa)
fa.varimax<-fa(correlations,nfactors= n,rotate="varimax",fm="pa")
print(fa.varimax)
library(GPArotation)
fa.promax<-fa(correlations,nfactors=n,rotate="promax",fm="pa")
print(fa.promax)
  上述进行的是主成分分析,对因子进行降维,因子一般为数值型变量 。
fsm<-function(oblique){
if(class(oblique)=="fa"&is.null(oblique$Phi)){
    warning("Object doesn't look like oblique EFA")
}else{
    P<-unclass(oblique$loading)
    F<-P%*%oblique$Phi
    colnames(F)<-c("PA1","PA2")
    return (F)
}
}
fsm(fa.promax)
factor.plot(fa.promax,labels=rownames(fa.promax$loadings))
fa.diagram(fa.promax,simple=TRUE)
print(fa.promax$weights)
  上述是对因子进行了因子旋转降维,最终可以查看因子载荷和相关系数。

  
页: [1]
查看完整版本: R语言变量降维分析