因子分析在STATA中实现和案例.docx
《因子分析在STATA中实现和案例.docx》由会员分享,可在线阅读,更多相关《因子分析在STATA中实现和案例.docx(16页珍藏版)》请在冰豆网上搜索。
因子分析在STATA中实现和案例
第13章因子分析
因子分析始于1904年CharsSpearman对学生成绩的分析,在经济领域有着极为广泛的用途。
在多个变量的变化过程中,除了一些特定因素之外,还受到一些共同因素的影响。
因此,每个变量可以拆分成两部分,一是共同因素,二是特殊因素。
这些共同因素称为公因子,特殊因素称为特殊因子。
因子分析即是提出多个变量的公共影响因子的一种多元统计方法,它是主成分分析的推广。
因子分析主要解决两类问题:
一是寻求基本结构,简化观察系统。
给定一组变量或观察数据,是否存在一个子集,特别是一个加权子集,来解释整个问题,即将为数众多的变量减少为几个新的因子,以再现它们之间的内在联系。
二是用于分类,将变量或样本进行分类,根据因子得分值,在因子轴所构成的空间中进行分类处理。
p个变量X的因子模型表达式为:
f称为公因子,
称为因子载荷。
X的相关系数矩阵分解为:
对于未旋转的因子,
。
称为特殊度,即每个变量中不属于共性的部分。
因子估计
Stata可以通过变量进行因子分析,也可以通过矩阵进行。
命令为factor或factormat。
webusebg2,clear
describe
factorbg2cost1-bg2cost6
factorbg2cost1-bg2cost6,factors
(2)
*pf主因子方法,用复相关系数的平方作为因子载荷的估计量(默认选项)
factorbg2cost1-bg2cost6,factors
(2)pcf
*pcf主成分因子,假定共同度=1
factorbg2cost1-bg2cost6,factors
(2)ipf
*ipf迭代主因子,重复估计共同度
factorbg2cost1-bg2cost6,factors
(2)ml
*ml极大似然因子,假定变量(至少3个)服从多元正态分布,对偏相关矩阵的行列式进行最优化求解,等价于Rao的典型因子方法
预测
Stata可以通过predict预测变量得分、拟合值和残差等。
webusebg2,clear
factorbg2cost1-bg2cost6
predictf1f2
*factor1factor2因子分得分
predictstdpresiduals
*预测标准差和残差
Estat
Eatat给出了几个非常有用的工具,包括KMO、SMC等指标。
webusebg2,clear
factorbg2cost1-bg2cost6
estatanti
estatkmo
estatresiduals
estatsmc
estatsummarize
因子旋转与作图
因子分析的旋转方法以及碎石图、得分图、因子载荷图与主成分分析的方法相同,请参见”主成分分析”一章。
webusebg2,clear
factorbg2cost1-bg2cost6
screeplot/*碎石图*/
scoreplot/*得分图*/
loadingplot/*因子载荷图*/
rotate/*旋转*/
例:
利用2009年的数据对中国社会发展状况进行综合考察,原始数据如下表:
省份
人均GDP(元)
新增固定资产(亿元)
城镇居民人均年可支配收入(元)
农村居民家庭人均纯收入(元)
高等学校数(所)
卫生机构数(个)
area
x1
x2
x3
x4
x5
x6
北京
63029
85
6497
天津
55473
55
2784
河北
23239
105
15632
山西
20398
69
9431
内蒙古
32214
39
7162
辽宁
31259
104
14627
吉林
23514
55
9659
黑龙江
21727
78
7928
上海
73124
66
2822
江苏
39622
146
13357
浙江
42214
98
15290
安徽
14485
104
7837
福建
30123
81
4478
江西
14781
82
8229
山东
33083
125
14973
河南
19593
6414
94
11683
湖北
19860
118
10305
湖南
17521
115
14455
广东
37589
125
15819
广西
14966
1419
68
10427
海南
17175
16
2220
重庆
18025
47
6265
四川
15378
90
20738
贵州
8824
903
45
5848
云南
12587
1551
59
9249
西藏
13861
6
1326
陕西
18246
88
8812
甘肃
12110
39
10534
青海
17389
9
1582
宁夏
17892
15
1629
新疆
19893
37
6739
程序:
clear
*定义变量的标签
labelvararea省份
labelvarx1"人均GDP(元)"
labelvarx2"新增固定资产(亿元)"
labelvarx3"城镇居民人均年可支配收入(元)"
labelvarx4"农村居民家庭人均纯收入(元)"
labelvarx5"高等学校数(所)"
labelvarx6"卫生机构数(个)"
describe
factorx1-x6
screeplot/*碎石图(特征值等于1处的水平线标示保留主成分的分界点)*/
*检验
estatkmo/*KMO检验,越高越好*/
estatsmc/*SMC检验,值越高越好*/
rotate/*旋转*/
loadingplot,yline(0)xline(0)/*载荷图*/
*预测
predictscorefitresidualq/*预测变量得分、拟合值和残差以及残差的平方和*/
predictf1f2
labelvarf1收入因子
labelvarf2"投资、社会因子"
listareaf1f2
summarizef1f2
correlatef1f2
scoreplot,xtitle("收入因子")ytitle("投资、社会因子")
--------------------------------------------------------------------------
LRtest:
independentvs.saturated:
chi2(15)=Prob>chi2=
Factorloadings(patternmatrix)anduniquevariances
-----------------------------------------------------------
Variable|Factor1Factor2Factor3|Uniqueness
-------------+------------------------------+--------------
x1_s||
x2_s||
x3_s||
x4_s||
x5_s||
x6_s||
-----------------------------------------------------------
从上面的分析可以看出,只有两个成分大于1大于的特征值,同时两个成分解释了全部六个变量组合的方差还多。
不重要的第2到6个主成分在随后的分析中可以放心地省略去。
运行factor命令后,我们可以接着运行screeplot命令画出碎石图。
碎石图中特征值等于1处的水平线标示了保留主成分的常用分界点,同时再次强调了本例中的成分3到成分6并不重要。
碎石图
检验的方法还是跟上一章的主成分分析一样,由于我们都是选用实际的数据来进行分析,所以在一般情况下,检验都是通得过的,可以忽略,觉得有需要的再进行检验。
旋转会进一步简化因子结构。
在提取因子之后,键入rotate命令进行旋转。
Factoranalysis/correlationNumberofobs=31
Method:
principalfactorsRetainedfactors=3
Rotation:
orthogonalvarimax(Kaiseroff)Numberofparams=15
--------------------------------------------------------------------------
Factor|VarianceDifferenceProportionCumulative
-------------+------------------------------------------------------------
Factor1|
Factor2|
Factor3|.
--------------------------------------------------------------------------
LRtest:
independentvs.saturated:
chi2(15)=Prob>chi2=
Rotatedfactorloadings(patternmatrix)anduniquevariances
-----------------------------------------------------------
Variable|Factor1Factor2Factor3|Uniqueness
-------------+------------------------------+--------------
x1||
x2||
x3||
x4||
x5||
x6||
-----------------------------------------------------------
Factorrotationmatrix
-----------------------------------------
|Factor1Factor2Factor3
-------------+---------------------------
Factor1|
Factor2|
Factor3|
-----------------------------------------
结合实际情况,我们通过上面的分析整理出前两个主因子的正交因子表。
表:
正交因子表
因子
指标
Factor
Factor
1
2
x1
x2
x3
x4
x5
x6
根据上表将六个指标按高载荷分成两类,并结合专业知识对各因子命名,如下表:
表:
高载荷分类
高载荷指标
因子命名
1
人均GDP
城镇居民人均年可支配收入
农村居民家庭人均纯收入
收入因子
2
高等学校数
卫生机构数
新增固定资产
投资、社会因子
接着进行一个后续因子分析的制图命令loadingplote有助于将其可视化。
从图中我们就可以直观的看出在主因子1中x1、x3、x4明显取得较大值,而对于主因子2则是x2、x5、x6取得较大的值。
载荷图
因子分是通过将每个变量标准化为平均数等于0和方差等于1,然后以因子分系数进行加权合计为每个因子构成的线性组合。
基于最近的rotate或factor结果,predict会自动进行这些计算。
通过命令predictf1f2,我们得到了各个观察变量的主因子1、主因子2的得分情况。
.listareaf1f2
+--------------------------------+
|areaf1f2|
|--------------------------------|
1.|北京|
2.|天津|
3.|河北|
4.|山西|
5.|内蒙古.0597282|
|--------------------------------|
6.|辽宁.0589154|
7.|吉林|
8.|黑龙江.0518705|
9.|上海|
10.|江苏.7713872|
|--------------------------------|
11.|浙江.5580102|
12.|安徽.5026094|
13.|福建.5376554|
14.|江西.2467043|
15.|山东.1589503|
|--------------------------------|
16.|河南|
17.|湖北.7986803|
18.|湖南.8609527|
19.|广东.6425342|
20.|广西|
|--------------------------------|
21.|海南|
22.|重庆|
23.|四川.9108785|
24.|贵州|
25.|云南|
|--------------------------------|
26.|西藏|
27.|陕西.1913275|
28.|甘肃|
29.|青海|
30.|宁夏|
|--------------------------------|
31.|新疆|
+--------------------------------+
.summarizef1f2
Variable|ObsMeanStd.Dev.MinMax
-------------+--------------------------------------------------------
f1|31.988557
f2|31.9464783
在这些因子分之间是存在着相关,在默认选项中,promax旋转允许因子分之间存在相关。
通过运行命令correlatef1f2可得。
从运行出来的结果看到,两个因子分相关关系是很小的。
.correlatef1f2
(obs=31)
|f1f2
-------------+------------------
f1|
f2|
另一个后因子分析制图命令,scoreplot可绘出这些观测案例的因子分的散点图。
在本例的得分图中,我们可以看到,上海、北京、浙江、天津这些城市的主因子1的得分相对于其他城市高,因为主因子1是收入因子,这些城市的收入在全国是排在前列的。
而我们可以看到北京、上海的在主因子2(即投资、社会因子)的得分是较低,这是因为这两个城市的经济总量相对较小。
在江苏、山东、广东这些经济总量名列前茅的省份,它们的主因子2的得分也是相应位于其他城市前面。
得分图
练习:
将上一章的主成分分析的例子的数据进行因子分析。
省份
GDP(亿元)
居民消费水平(元)
固定资产投资(亿元)
职工平均工资(元)
货物周转量(亿吨公里)
居民消费价格指数(上年100)
商品零售价格指数(上年100)
工业总产值(亿元)
area
x1
x2
x3
x4
x5
x6
x7
x8
北京
20346
56328
10413
天津
14000
41748
12503
河北
6570
24756
23031
山西
6187
25828
10024
内蒙古
8108
26114
辽宁
9625
27729
24769
吉林
7591
23486
黑龙江
8310
7039
3656
23046
上海
27343
56565
25121
江苏
11013
31667
67799
浙江
13893
9323
34146
105
40832
安徽
6377
6747
26363
11162
福建
10361
25702
15213
江西
5753
21000
106
山东
9573
26404
62959
河南
5877
24816
107
26028
湖北
7406
5647
22739
13455
湖南
7145
5534
24870
106
11553
广东
14390
33110
106
65425
广西
6103
25660
2079
6072
海南
6550
21864
重庆
9835
26985
105
四川
6072
25038
14762
贵州
4426
24602
云南
4553
24030
西藏
3504
47280
陕西
6290
25942
2027
甘肃
4869
24017
青海
5830
30983
宁夏
7193
30719
新疆
5542
2260
24687
1273