每日一题【20200806】

主成分分析法

30个市经济各项水平统计如下,请针对各市经济水平做综合评价。
指标如下:GDP、居民消费水平、固定资产投资、职工平均工资、货物周转量、居民消费价格指数、商品零售价格指数、工业总产值

1
2
3
4
5
6
7
8
9
10
11
%1.对原始资料矩阵进行标准化处理
zef_data = xlsread('zhengfu.xlsx','A1:H30');
z = zscore(zef_data)
%2.计算相关系数矩阵
cor = corrcoef(z)
%3.计算该相关系数矩阵的特征值和特征向量,并对特征值进行排序
[vec, val] = eig(cor) %特征向量vec 特征值val
newval = diag(val); %取主对角线上的数值,排成一列数组
newy = sort(newval, 'descend')
%4.确定主成分个数
newrate = newy./sum(newy) %求方差贡献率
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
vec =
0.0109 0.5539 0.4080 -0.1042 0.0890 0.2307 0.6671 0.0977
-0.0771 -0.3504 0.3043 -0.4476 -0.4496 -0.4534 0.2001 0.3613
0.4191 0.4359 -0.5288 -0.2359 -0.2482 0.0325 -0.1290 0.4688
-0.6966 0.2717 0.0032 0.4111 -0.1323 -0.0710 -0.1781 0.4665
-0.2552 -0.2215 0.0281 -0.5299 0.4367 0.5087 -0.1960 0.3411
0.5152 -0.1608 0.5043 0.4166 0.1020 0.1151 -0.2373 0.4482
-0.0497 0.0252 0.2152 -0.0557 -0.6998 0.5873 -0.2350 -0.2401
-0.0024 -0.4806 -0.3998 0.3266 -0.1415 0.3438 0.5626 0.2183
val =
0.0119 0 0 0 0 0 0 0
0 0.0489 0 0 0 0 0 0
0 0 0.0721 0 0 0 0 0
0 0 0 0.1662 0 0 0 0
0 0 0 0 0.5028 0 0 0
0 0 0 0 0 1.1819 0 0
0 0 0 0 0 0 1.9446 0
0 0 0 0 0 0 0 4.0716
newy =
4.0716
1.9446
1.1819
0.5028
0.1662
0.0721
0.0489
0.0119
newrate =
0.5089
0.2431
0.1477
0.0629
0.0208
0.0090
0.0061
0.0015

由方差贡献率可知:0.5089+0.2431+0.1477>0.8,因此7、6、5后三项作为主成分。
下图所示为特征向量值,所以7、6、5倒数3列为各省主成分。

1
2
3
4
5
6
7
8
9
vec =
0.0109 0.5539 0.4080 -0.1042 0.0890 0.2307 0.6671 0.0977
-0.0771 -0.3504 0.3043 -0.4476 -0.4496 -0.4534 0.2001 0.3613
0.4191 0.4359 -0.5288 -0.2359 -0.2482 0.0325 -0.1290 0.4688
-0.6966 0.2717 0.0032 0.4111 -0.1323 -0.0710 -0.1781 0.4665
-0.2552 -0.2215 0.0281 -0.5299 0.4367 0.5087 -0.1960 0.3411
0.5152 -0.1608 0.5043 0.4166 0.1020 0.1151 -0.2373 0.4482
-0.0497 0.0252 0.2152 -0.0557 -0.6998 0.5873 -0.2350 -0.2401
-0.0024 -0.4806 -0.3998 0.3266 -0.1415 0.3438 0.5626 0.2183
1
2
3
4
5
%5.计算主成分得分
sco = z * vec
%6.建立排序指标,进行排序
nowsco = sco(:, end) .* newrate(1) + sco(:, end-1) .* newrate(2)+ sco(:, end-2) .* newrate(3)
[a,x] = sort(nowsco, 'descend')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
%倒数第一列是第一主成分在30个城市中的得分,倒数第二列是是第二主成分在30个城市中的得分
sco =
-0.2671 0.4404 -0.1319 0.7683 0.0348 -1.0019 -0.8083 3.1053
-0.1212 -0.0731 0.1029 0.5436 0.9089 -1.9800 -0.7629 2.6881
-0.0113 0.4556 -0.3883 -1.0661 0.9795 2.9656 -1.0149 3.3810
0.0458 0.1186 0.2694 0.6032 0.2964 0.8737 -1.5556 1.3791
0.0503 0.0518 0.6655 0.2457 -0.0388 1.0481 -2.0285 1.0424
-0.2491 -0.7849 0.0103 -0.2186 0.6038 1.4134 0.4535 3.2715
0.2483 -0.0634 0.2053 0.5152 0.2555 -0.0685 -1.0577 1.6799
0.3040 -0.2936 0.0847 -0.0270 0.1158 0.5102 -0.2808 2.5044
0.0840 0.0376 -0.3266 -0.4305 -2.3921 -1.8753 0.8014 5.5768
0.0004 -0.0170 0.0486 0.2251 -0.0212 0.6055 3.1295 -0.2001
-0.0152 0.1412 0.3801 -0.4242 0.2755 -0.7199 1.4977 -0.4861
0.0839 0.0399 -0.4196 0.1720 1.0203 -0.7362 0.5886 -0.9374
-0.0532 0.0089 0.4601 -0.6610 -0.0587 -0.9762 0.3208 -0.8409
0.0016 0.0192 -0.1305 0.0309 -0.1090 0.0185 -0.4284 -1.5195
0.0368 -0.0624 -0.2698 0.5473 0.1708 0.8670 3.1543 -0.2973
0.0512 0.0868 -0.3433 0.4549 0.2526 0.5363 1.2403 -1.0387
-0.0414 -0.1997 -0.0449 0.1098 -0.6326 0.6207 0.7261 -1.1425
-0.0019 0.0704 -0.0080 0.0072 -0.0855 0.0907 0.3834 -1.2070
0.0062 0.2360 0.5092 -0.4653 0.7371 -0.9719 3.1392 0.2452
-0.0202 0.1367 0.0953 -0.0901 -0.3339 0.1565 -0.2945 -1.5072
0.0614 -0.1975 -0.3144 -0.3866 1.3292 -2.1673 -0.5809 -0.9178
-0.0205 0.1694 0.0782 0.2735 -0.6234 1.1873 1.3348 -1.1501
-0.0142 0.1213 -0.0579 0.0199 -0.4379 0.3117 -1.1431 -1.9150
-0.0636 -0.1021 0.0482 0.0060 -0.9963 0.7430 -0.5425 -1.7106
0.0281 0.0692 -0.1999 -0.1376 0.3650 -0.7658 -1.3861 -1.7108
-0.0311 -0.0777 -0.0733 0.0158 -0.5475 0.3302 -0.6233 -1.6505
-0.0028 -0.0617 -0.2341 0.0926 -0.2533 0.1336 -0.9374 -1.7505
-0.0382 -0.0898 0.0388 -0.3045 -0.3436 -0.4329 -1.3358 -1.7028
-0.0039 -0.0719 -0.1110 -0.2239 0.0702 -0.6892 -1.2226 -1.6105
-0.0471 -0.1084 0.0569 -0.1955 -0.5414 -0.0271 -0.7662 -1.5784

下面展示的为各个市按照上面计算得到的结果以及原数据排名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
nowsco =
1.2360
0.8902
1.9122
0.4528
0.1923
1.9841
0.5877
1.2817
2.7561
0.7483
0.0103
-0.4428
-0.4942
-0.8748
0.7435
-0.1479
-0.3133
-0.5077
0.7443
-0.8155
-0.9285
-0.0855
-1.2065
-0.8927
-1.3208
-0.9428
-1.0990
-1.2553
-1.2187
-0.9936
a =
2.7561
1.9841
1.9122
1.2817
1.2360
0.8902
0.7483
0.7443
0.7435
0.5877
0.4528
0.1923
0.0103
-0.0855
-0.1479
-0.3133
-0.4428
-0.4942
-0.5077
-0.8155
-0.8748
-0.8927
-0.9285
-0.9428
-0.9936
-1.0990
-1.2065
-1.2187
-1.2553
-1.3208
x =
9
6
3
8
1
2
10
19
15
7
4
5
11
22
16
17
12
13
18
20
14
24
21
26
30
27
23
29
28
25

参考


每日一题【20200806】
https://blog.baixf.tk/2020/08/06/每日一题/每日一题【20200806】/
作者
白小飞
发布于
2020年8月6日
许可协议