一、 什么是主成分分析
主成分分析(principal components analysis)也称主分量分析,是由霍特林于1933年首次提出的。主成分分析是利用降维的思想,在损失很少信息的前提下,把多个指标转化为几个综合指标的多元统计方法。
简单地说,主成分分析就是在研究问题选取的指标比较多、研究的问题比较复杂时,可以把原来研究的指标做几个线性组合,即主成分,来解释原来变量绝大对数信息的一种多元统计方法。
二、 主成分分析的意义
通过主成分分析,可以从事物间错综复杂的关系中找出一些主要成分,从而能有效利用大量统计数据进行定量分析,揭示变量之间的内在关系,得到对事物特征发展规律的一些深层次的启发,把研究工作引向深入。
三、 主成分分析的步骤
(1) 根据研究问题选取初始分析变量;
(2) 根据初始变量特性判断由协方差阵求主成分还是由相关阵求主成分;
(3) 求协方差阵或相关阵的特征根与相应标准特征向量;
(4) 判断是否存在明显的多重共线性,若存在,则返回第(1)步;
(5) 得到主成分的表达式并确定主成分个数,选取主成分;
(6) 结合主成分对研究问题进行分析并深入研究。
四、 全国各地区公用设施水平主成分分析实例
4.1 案例描述
为了了解全国各个地区的公用设施建设水平,选取了九个指标来描述各个地区的公用设施水平,分别是人口密度、人均生活用水量、供水普及率、燃气普及率、人均道路面积、排水管道暗渠密度、人均公园绿地面积、绿化覆盖率、绿地率,原始数据如下表所示,由于衡量各地区公用设施建设水平的指标比较多,有9个,我们的目的是使用少数几个主成分去代替原始变量的绝大对数信息,达到降低指标数量,降低分析难度的作用。(注:数据来源于2013年的《中国统计年鉴》)。
表1分地区建制镇市政公用设施水平
地区 |
人口密度(人/平方公里) |
人均日生活用水量 |
供水普及率(%) |
燃气普及率(%) |
人均道路面积(平方米) |
排水管道暗渠密度(公里/平方公里) |
人均公园绿地面积(平方米) |
绿化覆盖率(%) |
绿地率(%) |
全国 |
4947 |
98.58 |
81.73 |
46.44 |
12.26 |
6.75 |
2.37 |
15.42 |
8.64 |
北京 |
4139 |
102.31 |
85.43 |
57.32 |
13.92 |
7.13 |
5.27 |
21.97 |
12.77 |
天津 |
4219 |
88.7 |
94.93 |
66.95 |
16.25 |
6.45 |
1.21 |
18.19 |
7.46 |
河北 |
4582 |
65.82 |
81.59 |
37.44 |
10.84 |
2.67 |
0.52 |
9.6 |
4.38 |
山西 |
5240 |
72.98 |
86.57 |
14.28 |
12.48 |
5.12 |
0.91 |
20.17 |
8.03 |
内蒙古 |
3185 |
75.77 |
60.38 |
15.8 |
10.23 |
1.99 |
1.58 |
9.43 |
4.46 |
辽宁 |
3726 |
81.34 |
72.27 |
29.92 |
12.24 |
3.96 |
1.14 |
10.62 |
3.17 |
吉林 |
3880 |
76.1 |
73.25 |
20.9 |
10.83 |
1.99 |
0.94 |
5.45 |
2.13 |
黑龙江 |
3680 |
66.04 |
81.83 |
18.88 |
15.34 |
2.14 |
1.16 |
5.31 |
2.32 |
上海 |
4914 |
144.82 |
91.56 |
85.39 |
10.25 |
4.41 |
2.13 |
16.26 |
10.92 |
江苏 |
5714 |
103.07 |
96.38 |
84.73 |
17.65 |
9.84 |
5.84 |
25.75 |
18.69 |
浙江 |
4925 |
123.06 |
78.55 |
52.62 |
13.18 |
6.97 |
2.29 |
14.1 |
9.05 |
安徽 |
4933 |
99.79 |
68.69 |
43.94 |
11.32 |
6.94 |
3.28 |
19.62 |
11.39 |
福建 |
6239 |
115.13 |
87.49 |
62.73 |
12.59 |
6.16 |
7.14 |
25.18 |
16.26 |
江西 |
5081 |
111.41 |
67.62 |
36.56 |
10.6 |
5.51 |
1.56 |
9.93 |
5.35 |
山东 |
4335 |
74.31 |
90.5 |
56.67 |
17.19 |
7.21 |
4.64 |
24.93 |
15.44 |
河南 |
5530 |
81.5 |
74.68 |
7.38 |
10.46 |
4.34 |
1.7 |
21.6 |
4.31 |
湖北 |
4856 |
99.2 |
84.43 |
40.94 |
9.88 |
5.58 |
0.92 |
14.74 |
7.57 |
湖南 |
4950 |
102.1 |
70.16 |
33.11 |
9.05 |
4.37 |
0.87 |
10.8 |
6.06 |
广东 |
5098 |
140.21 |
85.93 |
68.28 |
13.61 |
19.77 |
2.6 |
15.11 |
9.71 |
广西 |
6997 |
106.21 |
85.31 |
70.22 |
11.37 |
7.84 |
0.43 |
8.55 |
4.02 |
海南 |
3846 |
101.08 |
85.85 |
75.98 |
13.47 |
5.02 |
2.49 |
21.22 |
13.41 |
重庆 |
6882 |
93.98 |
91.65 |
53.65 |
8.24 |
7.05 |
0.66 |
9.11 |
5.08 |
四川 |
5248 |
92.45 |
78.49 |
45.2 |
9.9 |
5.6 |
0.63 |
7.95 |
3.84 |
贵州 |
5016 |
91.96 |
82.62 |
12.73 |
8.95 |
4.14 |
0.29 |
10.39 |
4.04 |
云南 |
6001 |
88.1 |
83.88 |
13.58 |
8.68 |
4.66 |
0.82 |
5.96 |
3.77 |
西藏 |
|
|
|
|
|
|
|
|
|
陕西 |
4986 |
57.59 |
75.92 |
17.22 |
9.06 |
4.35 |
0.54 |
7.48 |
2.94 |
甘肃 |
4311 |
53.91 |
72.19 |
5.3 |
11.65 |
2.69 |
0.56 |
6.75 |
3.1 |
青海 |
4585 |
73.96 |
55.37 |
16.67 |
9.53 |
2.28 |
1.87 |
10.78 |
6.27 |
宁夏 |
3557 |
80.61 |
66.96 |
21.12 |
12.89 |
4.71 |
0.56 |
6.26 |
3.1 |
新疆 |
3071 |
78.92 |
83.9 |
14.6 |
20.89 |
2.31 |
1.3 |
15.41 |
11.38 |
——《中国统计年鉴》25-14 分地区建制镇市政公用设施水平(2013年)
4.2 R软件实现主成分分析的过程
(a) 数据的读入
>data<-read.csv("LeveOfPublicFacilities.csv")
>data
需要做主成分分析的数据如上面所示,本数据对原数据做了一些简单的处理,因为原数据中,西藏地区的各个自变量之间是没有数值的,所以我们将其去掉了。其中x1、x2、…、x9分别代表人口密度、人均生活用水量、供水普及率、燃气普及率、人均道路面积、排水管道暗渠密度、人均公园绿地面积、绿化覆盖率、绿地率,这与原数据一一对应。
(b) 原始变量之间的相关系数
主成分分析对做主成分分析的变量是有要求的,一是变量之间要有显著的相关性,即变量之间存在多重共线性,二是变量的数目比较多,这样的变量比较适合做主成分分析。
我们在决定做主成分分析之前,应该诊断一下原始变量是否符合要求,当原始数据大部分变量的相关系数都小于0.3时,运用主成分分析不会取得很好的效果,所以绝大多数变量之间的相关系数应该大于0.3。
>cor.X<-cor(scale(data[-1]))
表2原始变量之间的相关系数
|
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
x8 |
x9 |
x1 |
1 |
0.366919 |
0.356696 |
0.318776 |
-0.40331 |
0.388599 |
0.112081 |
0.107512 |
0.082418 |
x2 |
0.366919 |
1 |
0.330397 |
0.717997 |
-0.01422 |
0.625438 |
0.373364 |
0.34225 |
0.459575 |
x3 |
0.356696 |
0.330397 |
1 |
0.619211 |
0.410604 |
0.414863 |
0.311693 |
0.476118 |
0.503077 |
x4 |
0.318775 |
0.717997 |
0.619211 |
1 |
0.271008 |
0.590691 |
0.535355 |
0.523075 |
0.660545 |
x5 |
-0.40331 |
-0.01422 |
0.410604 |
0.271008 |
1 |
0.191204 |
0.43309 |
0.490108 |
0.568386 |
x6 |
0.388599 |
0.625438 |
0.414863 |
0.590691 |
0.191204 |
1 |
0.366842 |
0.363108 |
0.416927 |
x7 |
0.112081 |
0.373364 |
0.311693 |
0.535355 |
0.43309 |
0.366842 |
1 |
0.792072 |
0.866017 |
x8 |
0.107512 |
0.34225 |
0.476118 |
0.523075 |
0.490108 |
0.363108 |
0.792072 |
1 |
0.885868 |
x9 |
0.082418 |
0.459575 |
0.503077 |
0.660546 |
0.568386 |
0.416927 |
0.866017 |
0.885868 |
1 |
由变量间的相关系数矩阵表2可以看出,有绝大多数变量间的相关系数都大于0.3,甚至有的达到了0.88,所以使用这些变量的数据做主成分的分析是合适的。
(c) 主成分的计算
主成分就是变量之间相关系数矩阵的特征值对应的特征向量,所以我们只需要计算出变量的相关系数矩阵的特征值对应的特征向量即可。
>lambda<-eigen(cor.X)
>allComp<-lambda$vectors #所有的主成分
> allComp
表3所有主成分
|
Comp.1 |
Comp.2 |
Comp.3 |
Comp.4 |
Comp.5 |
Comp.6 |
Comp.7 |
Comp.8 |
Comp.9 |
x1 |
0.14074 |
0.576306 |
-0.05082 |
0.56223 |
-0.21515 |
-0.18676 |
0.367644 |
-0.33579 |
-0.0171 |
x2 |
0.310085 |
0.363998 |
-0.15576 |
-0.4887 |
0.327468 |
0.333877 |
0.511211 |
0.129641 |
-0.10683 |
x3 |
0.32049 |
0.07543 |
0.666194 |
0.366312 |
0.195206 |
0.174937 |
-0.05649 |
0.491495 |
0.011413 |
x4 |
0.393945 |
0.180587 |
0.12678 |
-0.19451 |
0.447723 |
-0.45725 |
-0.4367 |
-0.37358 |
-0.13597 |
x5 |
0.234115 |
-0.51896 |
0.428713 |
-0.15882 |
-0.20503 |
-0.18472 |
0.506239 |
-0.3265 |
-0.16676 |
x6 |
0.313822 |
0.291716 |
0.141675 |
-0.38918 |
-0.73903 |
0.039621 |
-0.28607 |
0.093268 |
0.081311 |
x7 |
0.375628 |
-0.20476 |
-0.45711 |
0.13498 |
-0.10132 |
-0.46194 |
0.080729 |
0.526095 |
-0.28786 |
x8 |
0.389015 |
-0.22877 |
-0.24152 |
0.265721 |
-0.06184 |
0.602784 |
-0.25114 |
-0.29916 |
-0.38425 |
x9 |
0.424748 |
-0.21998 |
-0.20523 |
0.086832 |
0.074959 |
0.039217 |
0.04358 |
-0.08796 |
0.839491 |
表3为九个主成分与原始自变量之间的关系,数字代表相关程度。
(d) 主成分之间多重共线性的判断
>cor(allComp)
表4主成分之间的相关系数
|
Comp.1 |
Comp2 |
Comp3 |
Comp4 |
Comp5 |
Comp6 |
Comp7 |
Comp8 |
Comp9 |
Comp.1 |
1 |
-0.40489 |
-0.32387 |
-0.23632 |
0.354978 |
0.127968 |
-0.61912 |
0.233275 |
0.21285 |
Comp2 |
-0.40489 |
1 |
-0.00895 |
-0.00653 |
0.009809 |
0.003536 |
-0.01711 |
0.006446 |
0.005882 |
Comp3 |
-0.32387 |
-0.00895 |
1 |
-0.00522 |
0.007846 |
0.002829 |
-0.01368 |
0.005156 |
0.004705 |
Comp4 |
-0.23632 |
-0.00653 |
-0.00522 |
1 |
0.005725 |
0.002064 |
-0.00999 |
0.003762 |
0.003433 |
Comp5 |
0.354978 |
0.009809 |
0.007846 |
0.005725 |
1 |
-0.0031 |
0.014999 |
-0.00565 |
-0.00516 |
Comp6 |
0.127969 |
0.003536 |
0.002829 |
0.002064 |
-0.0031 |
1 |
0.005407 |
-0.00204 |
-0.00186 |
Comp7 |
-0.61912 |
-0.01711 |
-0.01368 |
-0.00999 |
0.014999 |
0.005407 |
1 |
0.009857 |
0.008994 |
Comp8 |
0.233275 |
0.006446 |
0.005156 |
0.003762 |
-0.00565 |
-0.00204 |
0.009857 |
1 |
-0.00339 |
Comp9 |
0.21285 |
0.005882 |
0.004705 |
0.003433 |
-0.00516 |
-0.00186 |
0.008994 |
-0.00339 |
1 |
(e) 主成分的选取与分析
我们关心选取多少个主成分,通常我们以选取主成分m个,使主成分的累积方差贡献率达到85%以上,下面计算各个主成分的累积方差贡献率
>pr<-princomp(scale(data[-1]),cor=TRUE)
>summary(pr,loadings=TRUE)
表5主成分的累积方差贡献率
|
Comp.1 |
Comp.2 |
Comp.3 |
Comp.4 |
Comp.5 |
标准差 |
2.133914 |
1.350649 |
0.907954 |
0.859404 |
0.678231 |
方差贡献率 |
0.505954 |
0.202695 |
0.091598 |
0.082064 |
0.051111 |
方差累计贡献率 |
0.505954 |
0.708649 |
0.800247 |
0.882311 |
0.933421 |
|
Comp.6 |
Comp.7 |
Comp.8 |
Comp.9 |
|
标准差 |
0.471128 |
0.4242 |
0.364099 |
0.254424 |
|
方差贡献率 |
0.024662 |
0.019994 |
0.01473 |
0.007192 |
|
方差累计贡献率 |
0.958084 |
0.978078 |
0.992808 |
1 |
|
由表5可以看出,主成分1(Comp.1)的累积方差贡献率为50.595%,说明主成分1包含原始变量50.595%的信息,主成分1至主成分4的累积方差贡献率为88.23%,说明这四个主成分包含了原始变量88.23%的信息。根据主成分个数的选取原则,使累积方差贡献率达到85%以上的主成分个数都是比较合适的。
#碎石图
>screeplot(pr, type ="lines", main = "碎石图")
>box()
由碎石图也可以看出,从第四个主成分的方差变化逐渐趋于平稳,因此,取前四个主成分是比较合适的。所以我们选取的主成分为主成分1(Comp.1)、主成分2(Comp.2)、主成分3(Comp.3)、主成分4(Comp.4),一共4个。
(f) 结果与分析
根据表3求出的各个主成分,我们可以得出各个主成分的表达式为:
主成分1(Comp.1)= 0.1407 + 0.3101 + 0.3205 + 0.3939 + 0.2341 + 0.3138 + 0.3756 + 0.3890 + 0.4247;
主成分2(Comp.2)= 0.5763 + 0.3640 + 0.0754 + 0.1806 - 0.5190 + 0.2917 - 0.2048 - 0.2288 - 0.2200;
主成分3(Comp.3)= -0.0508 - 0.1558 + 0.6662 + 0.1268+ 0.4287 + 0.1417 - 0.4571 - 0.2415 - 0.2052;
主成分4(Comp.4)= 0.5622 - 0.4887 + 0.3663 - 0.1945- 0.1588 - 0.3892 + 0.1350 + 0.2657 + 0.0868,其中,,,,,,,,,表示对原始变量标准化后的变量。
主成分的经济意义由各线性组合中权数较大的几个综合指标的总和意义来确定。根据上述所选择的主成分,其中主成分1主要由燃气普及率、人均公园绿地面积、绿化覆盖率、绿地率4个指标综合反映,它主要从绿化环保角度考虑。由于主成分1已有50.60%的把握评价各地区的公用设施建设水平,所以该4项指标可视为主要指标。同时,考虑到其所占权重相当,故这4项指标用于评价公用设施建设水平时每一项都是必不可少的;主成分2从人口密度和人均道路面积考虑,可归为人文因素;主成分3是从供水普及率的角度去评价公用设施建设水平,供水普及率越高,则在一定方面暗示公用设施建设水平越完善;主成分4可归为人均生活用水量因素,主要反映水的消耗,从人均用水量反作用于公用设施建设水平,用这4个综合因子来考核公用设施建设水平具有88.23%的可靠性。
为了根据不同的公用设施建设水平实现对各省份的划分,我们可以用样本主成分得分进行排序,进而得到各省份公用设施建设水平排序情况。构造综合评价函数,由于第一主成分系数全为正,且第一主成分与原变量综合相关度最强,包含数据量信息较多,因此用第一主成分进行排序可计算出各省市的公用设施建设水平,得出样品的第一主成分得分排名如下表:
表6各地区主成分得分排名表
由上表6可知,江苏、福建、广东的公用设施建设水平较高,其中江苏的公用设施建设水平最高,为5.0567,陕西、青海、内蒙古和甘肃等省份的公用设施建设水平较低,尤其是甘肃最低为-2.7790,而其他省份的公用设施建设水平一般。
五、 结论
本文简单的介绍了主成分分析法的思想以及主成分的求解步骤,以全国城镇公用设施水平为例,系统的介绍了如何用主成分方法对实际问题进行分析,为生活中如何运用主成分进行变量分析提供了依据。