R语言因子分析

今天才算搞懂因子分析到底是干了什么事情。废话少说,看R语言的强大吧!

因子分析(factor analysis)是主成分分析的推广和发展,也是一种降维的方法。一种用来分析隐藏在表面现象背后的因子作用的一类统计模型。因子分析是研究相关矩阵或协方差矩阵的内部依赖关系,它将多个变量综合为少数几个因子,以再现原始变量与因子之间的相关关系。
注意:隐藏在表面现象背后因子

一个例子搞懂什么叫因子分析

假设有n个学生p个科目的成绩,用X1,X2,……,Xp表示p个科目,Xi=(xi1,xi2,……,xip)其中i=1,2,3……n。表示第i个学生的p科目的成绩,现要分析主要由哪些因素决定学生的学习能力。

科目X所有的因子有m个,如数学推导因子,记忆因子,计算因子等,分别记为f1,f2,……,fm,即
Xi=ai1*f1+ai2*f2+……+aim*fm+@,i=1,2,……,p
用这m个不可观测的互不相关的公共因子f1,f2,……,fm(也称为潜因子)和一个特殊因子@来描述原始可测的相关变量(科目)X1,X2,……,Xp。并解释分析学生的学习能力,他们的系数ai1,ai2,……,aip称为因子载荷,表示第i个科目在m个方面的表现。
以上就是构建的因子模型。


综上:因子分析主要应用于两个方面:
①寻求基本结构,简化观测系统,将具有错综复杂关系的对象(变量或样本)综合为少数几个因子(不可观测的随机变量),以再现因子与原始变量之间的内在联系;
②用于分类,对于p个变量或n个样本进行分类;
因子分析根据研究对象的不同可以分为R型和Q型因子分析。
R型因子分析研究 变量(指标) 之间的相关关系,通过对变量的相关矩阵或协方差矩阵内部结构的研究,找出控制所有变量的几个公共因子(或称为主因子,潜在因子)用以对变量或样本进行分类。
Q型因子分析研究 样本 之间的相关关系,通过对样本的相似矩阵内部结构的研究找出控制样本的几个主要因素(或称为主因子)。
这两种因子分析的处理方法是一样的,只是出发点不同,R型从变量的相关阵出发,Q型从样本的相似矩阵出发。


因子分析的计算函数
在R软件中,提供了做因子分析计算的函数-factanal()函数,它可以从样本数据,样本的方差矩阵和相关矩阵出发对数据做因子分析,并可直接给出方差最大的载荷因子矩阵。

factanal(x, factors, data = NULL, covmat = NULL, n.obs = NA,
subset, na.action, start = NULL,
scores = c("none", "regression", "Bartlett"),
rotation = "varimax", control = NULL, ...)
参数介绍:
x:数据的公式,或者是由数据(每个样本按照行输入)构成矩阵,或者是数据框
factors:因子的个数
d

ata:数据框,当x由公式给出时使用
covmat:样本的协方差矩阵或样本的相关矩阵,此时不必输入变量x
scores:因子defender方法,scores="regression",表示用回归方法计算因子得分;当scores="Bartlett"时,表示用Bartlett方法计算因子得分;缺省值为"none"时,即不计算因子得分。
rotation:表示旋转,缺省值为方差最大旋转,当rotation="none"时,不作旋转变换。


例子:48名应聘者应聘某公司的某职位,公司为这些应聘者的15项指标打分,其指标与得分情况见data数据框,试用因子分析的方法对15想指标做因子分析,在因子分析中选择5个因子。
15项指标说明:
求职信形式:FL
外貌:APP
专业能力:AA
讨人喜欢:LA
自信心:SC
洞察力:LC
诚实:HON
推销能力:SMS
经验:EXP
驾驭水平:DRV
事业心:AMB
理解能力:GSP
潜在能力:POT
交际能力:KJ
适应性:SUIT

> data
FL APP AA LA SC LC HON SMS EXP DRV AMB GSP POT KJ SUIT
1 6 7 2 5 8 7 8 8 3 8 9 7 5 7 10
2 9 10 5 8 10 9 9 10 5 9 9 8 8 8 10
3 7 8 3 6 9 8 9 7 4 9 9 8 6 8 10
4 5 6 8 5 6 5 9 2 8 4 5 8 7 6 5
5 6 8 8 8 4 4 9 5 8 5 5 8 8 7 7
6 7 7 7 6 8 7 10 5 9 6 5 8 6 6 6
7 9 9 8 8 8 8 8 8 10 8 10 8 9 8 10
8 9 9 9 8 9 9 8 8 10 9 10 9 9 9 10
9 9 9 7 8 8 8 8 5 9 8 9 8 8 8 10
10 4 7 10 2 10 10 7 10 3 10 10 10 9 3 10
11 4 7 10 0 10 8 3 9 5 9 10 8 10 2 5
12 4 7 10 4 10 10 7 8 2 8 8 10 10 3 7
13 6 9 8 10 5 4 9 4 4 4 5 4 7 6 8
14 8 9 8 9 6 3 8 2 5 2 6 6 7 5 6
15 4 8 8 7 5 4 10 2 7 5 3 6 6 4 6
16 6 9 6 7 8 9 8 9 8 8 7 6 8 6 10
17 8 7 7 7 9 5 8 6 6 7 8 6 6 7 8
18 6 8 8 4 8 8 6 4 3 3 6 7 2 6 4
19 6 7 8 4 7 8 5 4 4 2 6 8 3 5 4
20 4 8 7 8 8 9 10 5 2 6 7 9 8 8 9
21 3 8 6 8 8 8 10 5 3 6 7 8 8 5 8
22 9 8 7 8 9 10 10 10 3 10 8 10 8 10 8
23 7 10 7 9 9 9 10 10 3 9 9 10 9 10 8
24 9 8 7 10 8 10 10 10 2 9 7 9 9 10 8
25 6 9 7 7 4 5 9 3 2 4 4 4 4 5 4
26 7 8 7 8 5 4 8 2 3 4 5 6 5 5 6
27 2 10 7 9 8 9 10 5 3 5 6 7 6 4 5
28 6 3 5 3 5 3 5 0 0 3 3 0 0 5 0
29 4 3 4 3 3 0 0 0 0 4 4 0 0 5 0
30 4 6 5 6 9 4 10 3 1 3 3 2 2 7 3
31 5 5 4 7 8 4 10 3 2 5 5 3 4 8 3
32 3 3 5 7 7 9 10 3 2 5 3 7 5 5 2
33 2 3 5 7 7 9 10 3 2 2 3 6 4 5

2
34 3 4 6 4 3 3 8 1 1 3 3 3 2 5 2
35 6 7 4 3 3 0 9 0 1 0 2 3 1 5 3
36 9 8 5 5 6 6 8 2 2 2 4 5 6 6 3
37 4 9 6 4 10 8 8 9 1 3 9 7 5 3 2
38 4 9 6 6 9 9 7 9 1 2 10 8 5 5 2
39 10 6 9 10 9 10 10 10 10 10 8 10 10 10 10
40 10 6 9 10 9 10 10 10 10 10 10 10 10 10 10
41 10 7 8 0 2 1 2 0 10 2 0 3 0 0 10
42 10 3 8 0 1 1 0 0 10 0 0 0 0 0 10
43 3 4 9 8 2 4 5 3 6 2 1 3 3 3 8
44 7 7 7 6 9 8 8 6 8 8 10 8 8 6 5
45 9 6 10 9 7 7 10 2 1 5 5 7 8 4 5
46 9 8 10 10 7 9 10 3 1 5 7 9 9 4 4
47 0 7 10 3 5 0 10 0 0 2 2 0 0 0 0
48 0 6 10 1 5 0 10 0 0 2 2 0 0 0 0

> factanal(~.,factors=5,data=data)

Call:
factanal(x = ~., factors = 5, data = data)

Uniquenesses:
FL APP AA LA SC LC HON SMS EXP DRV AMB GSP
0.439 0.597 0.509 0.197 0.118 0.005 0.292 0.140 0.365 0.223 0.098 0.119
POT KJ SUIT
0.084 0.005 0.267

Loadings:
Factor1 Factor2 Factor3 Factor4 Factor5 自行添加备注
FL 0.127 0.722 0.102 -0.117 Factor2
APP 0.451 0.134 0.270 0.206 0.258
AA 0.129 0.686 Factor4
LA 0.222 0.246 0.827 Factor3
SC 0.917 0.167 Factor1
LC 0.851 0.125 0.279 -0.420 Factor1
HON 0.228 -0.220 0.777 Factor3
SMS 0.880 0.266 0.111 Factor1
EXP 0.773 0.171 Factor2
DRV 0.754 0.393 0.199 0.114 Factor1
AMB 0.909 0.187 0.112 0.165 Factor1
GSP 0.783 0.295 0.354 0.148 -0.181 Factor1
POT 0.717 0.362 0.446 0.267 Factor1
KJ 0.418 0.399 0.563 -0.585 Factor4
SUIT 0.351 0.764 0.148 Factor2

Factor1 Factor2 Factor3 Factor4 Factor5
SS loadings 5.490 2.507 2.188 1.028 0.331
Proportion Var 0.366 0.167 0.146 0.069 0.022
Cumulative Var 0.366 0.533 0.679 0.748 0.770

Test of the hypothesis that 5 factors are sufficient.
The chi square statistic is 60.97 on 40 degrees of freedom.
The p-value is 0.0179

在得到的结果中,公共因子还有比较鲜明的实际意义:
第一公共因子中,系数绝对值大的变量主要是: 自信心,洞察力,推销能力,驾驭水平,事业心,理解能力,潜在能力,这些主要表现求职者外漏能力
第二公共因子中,系数绝对值大的变量主要是:求职信的形式,经验,适应性,这些主要反映了求职者的经验
第三公共因子中,系数绝对值大的变量主要是:讨人喜欢,诚实,这些主要反映了求职者是否

讨人喜欢
第四、第五公共因子系数绝对值较小,这说明这两个公共因子相对次要一些。
第四公共因子中,系数绝对值大的变量主要是:专业能力,交际能力,这些主要反映了求职者的专业能力
第五公共因子中,系数绝对值较大的变量主要是:外貌,洞察力,这些主要反映了求职者的外貌。




通过以上分析,我们得到公共因子和因子载荷,就应当反过来考察每一个样本,如上例,在得到五个公共因子后,应当考察48名应聘者在5个因子得分情况,这样就可以为公司挑选合适本公司的人员。

有两种估计因子得分的方法,加权最小二乘发,回归方法
R软件中,作因子分析的函数factanal()同时给出了这两种方法,当参数为scores="regression"时,采用回归法,当参数为scores="Bartlett"时,采用的是加权最小二乘法。但是,到目前为止,计算因子得分的两种估计方法到底哪一个好还没有结论。

在上例中,计算48名应聘者的因子得分:

> fa<-factanal(~.,factors=5,data=data,scores="regression")
> fa$scores
Factor1 Factor2 Factor3 Factor4 Factor5
1 0.800717544 0.18668478 -0.851460896 -1.02805665 0.52205818
2 1.116241580 0.47700243 0.001629454 -0.43629124 0.36113830
3 0.879369406 0.29478854 -0.314716179 -1.02965924 0.33082062
4 -0.523388290 0.43753019 0.560799973 0.25097714 0.40522224
5 -0.846808386 1.21550502 1.085816718 0.45502930 1.07029291
6 0.003185837 0.27885951 0.243258421 0.12109434 -0.27226717
7 0.703922279 1.33861950 0.111053822 0.01088589 0.64206809
8 0.896108099 1.37342978 0.232713178 -0.35982102 0.35349535
9 0.455395763 1.17038462 0.244111085 -0.19242716 0.17911705
10 1.843009744 -0.18285199 -1.451198021 1.43700462 0.02806712
11 1.781056933 -0.22818096 -2.089052424 1.48488398 0.95136053
12 1.403740004 -0.53727939 -0.605003245 1.66579885 -0.39726150
13 -0.838419356 0.45881416 1.103624446 0.56651271 0.93295036
14 -0.765006924 0.30471946 0.836846379 0.95059097 1.57972186
15 -0.948618470 0.14818660 0.761841309 1.18822261 0.41131508
16 0.670346434 0.62562847 -0.275204781 0.28878032 -0.58926497
17 0.308422895 0.41267618 -0.135936211 -0.42814543 1.56803728
18 0.295571360 -0.46281204 -0.728936475 -1.16500937 -1.31962760
19 0.184298026 -0.21956636 -0.825069511 -0.55179100 -1.51372977
20 0.372855990 0.03579921 1.021768751 -0.31575185 -0.57686133
21 0.402538565 -0.46066903 0.589465103 0.86890942 -0.14399060
22 0.927698958 0.60250660 0.673815357 -1.14036612 -0.33194886
23 0.931887149 0.47998903 0.990087831 -0.83545711 0.59726767
24 0.585842905 0.66244517 1.202381977 -0.86524797 -0.62640797
25 -0.798685118 -0.23749354 0.480395810 0.05836780 -0.34004466
26 -0.781584615 0.15450648 0.518109233 0.43972335 0.54299850
27 0.372094679 -1.12074511 0.59549629

4 0.95822481 -1.09577912
28 -0.948459790 -0.81527906 -0.922269220 -1.77326821 -0.35738899
29 -1.213604298 -0.13087983 -1.503827903 -1.92660112 1.10293874
30 -0.484101748 -1.21181187 0.367311077 -1.68214807 0.52310776
31 -0.397976947 -0.69999678 0.622508916 -1.63410675 1.01452372
32 -0.173713063 -1.10108335 0.608407659 -0.12745790 -2.26318679
33 -0.256281136 -1.33038515 0.560781422 -0.40338235 -2.53222879
34 -1.183167544 -0.49422381 -0.008024526 -0.81458656 -0.10274921
35 -1.665000629 -0.33809240 0.059885560 -0.88500404 1.19916519
36 -0.514907574 -0.19120917 0.370984444 -0.45888647 -0.61709089
37 1.321163395 -1.72531922 -1.052264142 0.39130820 0.21100177
38 1.237411113 -1.32542774 -0.635392434 -0.30674409 -0.33706339
39 0.687041364 1.55535677 0.960484537 -0.39006072 -0.30682688
40 0.923821287 1.49189358 0.792049416 -0.40120250 0.04739454
41 -1.740662685 1.55241481 -2.301529543 1.10997918 -0.54355251
42 -1.946665869 1.74562267 -2.660094728 0.70599496 -1.13003023
43 -1.601371579 0.70912444 -0.096524877 0.77685896 -1.29579679
44 0.960832458 0.10579350 -0.315491319 0.20738885 0.51793979
45 -0.309142913 -0.38559454 1.071709950 1.49287914 -0.45272845
46 0.155406236 -0.52531271 1.194207841 1.80067575 -0.93031173
47 -1.182605366 -2.06429652 -0.395197469 1.05832124 1.50773379
48 -1.099807701 -2.02977096 -0.694352061 0.86306058 1.47640173
> plot(fa$scores[,1:2],type="n")
> text(fa$scores[,1],fa$scores[,2])
用以上两个语句绘制关于因子1,2的散点图
由前面的分析知,第一因子主要是求职者的外露能力,第二公共因子主要表现求职者的经验,公司可以选择两者得分都比较高的应聘者,若偏重外露能力,则选择第一公共因子得分较大的应聘者,如偏重经验,则可以考虑第二公共因子得分较大的应聘者。

相关主题
相关文档
最新文档