如何用R输出MFA的因子载荷

Python010

如何用R输出MFA的因子载荷,第1张

需要设置的参数是R,因子个数m,后面会讲到m如何选取)

下面给出主成分法的R程序(factor.analy1.R)

factor.analy1<-function(S, m){

p<-nrow(S)diag_S<-diag(S)sum_rank<-sum(diag_S)

rowname<-paste("X", 1:p, sep="")

colname<-paste("Factor", 1:m, sep="")

A<-matrix(0, nrow=p, ncol=m,

dimnames=list(rowname, colname))

eig<-eigen(S)

for (i in 1:m)

A[,i]<-sqrt(eig$values[i])*eig$vectors[,i]

h<-diag(A%*%t(A))

rowname<-c("SS loadings", "Proportion Var", "Cumulative Var")

B<-matrix(0, nrow=3, ncol=m,

dimnames=list(rowname, colname))

for (i in 1:m){

B[1,i]<-sum(A[,i]^2)

B[2,i]<-B[1,i]/sum_rank

B[3,i]<-sum(B[1,1:i])/sum_rank

}

method<-c("Principal Component Method")

list(method=method, loadings=A,

var=cbind(common=h, spcific=diag_S-h), B=B)

}

函数输入值S是样本方差阵或相关矩阵,m是主因子的个数,函数的输出值是列表形式,其内容有估计参数的办法(主成分法),因子载荷(loadings),共性方差和特殊方差,以及因子F对变量X的贡献、贡献率和累积贡献率。

#调用因子分析主成分法的函数

source("factor.analy1.R")

#显示结果.估计参数的方法为主成分法,loadings-因子载荷,var-共性方差和特殊方差

例:

1 2 3

3 1 2

2 3 1

>>[d,v]=eig([1 2 33 1 22 3 1])

d =

-0.5774 -0.2887 + 0.5000i -0.2887 - 0.5000i

-0.5774 0.5774 0.5774

-0.5774 -0.2887 - 0.5000i -0.2887 + 0.5000i

v =

6.0000 0 0

0 -1.5000 + 0.8660i 0

0 0 -1.5000 - 0.8660i

v 的对角线上元素是矩阵的特征值

d 中的列向量是对应的特征向量

PCA(Principal Component Analysis),即主成分分析方法,是一种使用广泛的数据降维算法。详细的概念可以参照 https://zhuanlan.zhihu.com/p/37777074

一般将多个样本降维就可以得到二维的分布,相似的样本成为一群,但有时候我们想知道哪些特征导致了这样的分群。

这里我们主要讨论怎么样用R实现以及提取我们需要的特征:

用R实现PCA有多个方法:

prcomp() and princomp() [built-in R stats package],

PCA() [FactoMineR package],

dudi.pca() [ade4 package],

and epPCA() [ExPosition package]

decathlon2是一个27行,13列的data.frame,分析之前需要用scale()函数进行标准化,消除不同量纲之间的差距。在计算PCA的时候也有很多内置的scale参数,如:FactoMineR包里函数PCA(X, scale.unit = TRUE, ncp = 5, graph = TRUE)里面的 scale.unit = TRUE,则进行标准化,或者

降维的分群图(这个没有明显的分群)

作为分群依据的特征值和特征向量

我们可以通过这些函数提取需要的数据:

get_eigenvalue(res.pca): 提取特征值

fviz_eig(res.pca): 可视化特征值

从中我们看到前两个PC可以涵盖59.6%variance,一般用涵盖百分之八十以上的variance就够了,也可以用碎石图展示。

cos2cos2 (square cosine, squared coordinates) 能够代表某个PC的代表性的特征值:

欢迎关注~

参考: http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/118-principal-component-analysis-in-r-prcomp-vs-princomp/