主成分分析报告matlab程序.docx
《主成分分析报告matlab程序.docx》由会员分享,可在线阅读,更多相关《主成分分析报告matlab程序.docx(20页珍藏版)》请在冰豆网上搜索。
主成分分析报告matlab程序
Matlab编程实现主成分分析
.程序结构及函数作用
在软件Matlab中实现主成分分析可以采取两种方式实现:
一是通过编程来实现;二是直接调用Matlab种自带程序实现。
下面主要主要介绍利用Matlab的矩阵计算功能编程实现主成分分析。
1程序结构
2函数作用
Cwstd.m――用总和标准化法标准化矩阵
Cwfac.m计算相关系数矩阵;计算特征值和特征向量;对主成分进行排
序;计算各特征值贡献率;挑选主成分(累计贡献率大于85%),输出主成分个
数;计算主成分载荷
Cwscore.计算各主成分得分、综合得分并排序
Cwprint.m读入数据文件;调用以上三个函数并输出结果
3.源程序
3.1cwstd.m总和标准化法标准化矩阵
%cwstd.m用总和标准化法标准化矩阵
functionstd=cwstd(vector)
cwsum=sum(vector,1);%对歹U求和
[a,b]=size(vector);%矩阵大小,a为行数,b为列数
fori=1:
a
forj=1:
b
std(i,j)=vector(i,j)/cwsum(j);
end
end
3.2cwfac.m计算相关系数矩阵
%cwfac.m
functionresult=cwfac(vector);
fprintf('相关系数矩阵:
\n')
std=CORRCOEF(vector)%计算相关系数矩阵
fprintf('特征向量(vec)及特征值(val):
\n')
[vec,val]=eig(std)%求特征值(val)及特征向量(vec)
newval=diag(val);
[y,i]=sort(newval);%对特征根进行排序,y为排序结果,i为索引
fprintf('特征根排序:
\n')forz=1:
length(y)
newy(z)=y(length(y)+1-z);
end
fprintf('%g\n',newy)
rate=y/sum(y);
fprintf('\n贡献率:
\n')
newrate=newy/sum(newy)
sumrate=0;
newi=[];
fork=length(y):
-1:
1
sumrate=sumrate+rate(k);
newi(length(y)+1-k)=i(k);
ifsumrate>0.85break;
end
end%记下累积贡献率大85%的特征值的序号放入newi中
fprintf('主成分数:
%g\n\n',length(newi));
fprintf('主成分载荷:
\n')
forp=1:
length(newi)
forq=1:
length(y)result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));
end
end%计算载荷
disp(result)
3.3cwscore.m
%cwscore.m计算得分
functionscore=cwscore(vector1,vector2);sco=vector1*vector2;
csum=sum(sco,2);[newcsum,i]=sort(-1*csum);
[newi,j]=sort(i);
fprintf('计算得分:
\n')score=[sco,csum,j]
%得分矩阵:
sco为各主成分得分;csum为综合得分;j为排序结果
3.4cwprint.m
%cwprint.m
functionprint=cwprint(filename,a,b);
%filename为文本文件文件名,a为矩阵行数(样本数),b为矩阵列数(变量指标数)
fid=fopen(filename,'r')
vector=fscanf(fid,'%g',[ab]);
fprintf('标准化结果如下:
\n')v1=cwstd(vector)result=cwfac(v1);
cwscore(v1,result);
4.程序测试例题
4.1原始数据
中国大陆35个大城市某年的10项社会经济统计指标数据见下表。
城市名称
年底
总人口
(万人)
非农业人口
比
(%)
农业总产值(万元)
工业总产值
(万元)
客运总量
(万
人)
货运
总量
(万吨)
地方财政
预算内
收入(万元)
城乡居民年底储蓄余额
(万元)
在岗职工人数
(万人)
在岗职工工资总额
(万元)
北
1
0.597
1843
19999
20
45
2790
26806
aanQf
5773
京
249.90
8
427
706
323
562
863
646
410.80
301
天
0.580
1501
22645
3
26
1128
11301
2254
910.17
202.68
津
9
136
502
259
317
073
931
343
石家
0.233
2918
6885
2
1
7095
875.40
352348
95.60
758877
庄
2
680
768
929
911
875
太
0.656
2737
1
11
3943
299.92
2360381
203277
88.65
654023
原
3
750
937
895
100
呼和浩
0.441
2
2
1396
207.78
3653431
816452
105783
42.11
309337
特
2
351
623
588
沈
0.629
1295
5826
7
15
9016
1152
677.08
567919
135.45
阳
9
418
733
782
412
998
811
0.494
1879
8426
10
19
7556
545.31
709227
94.15
965922
6
739
385
780
187
796
0.406
1853
5966
4
9
4803
691.23
357096
102.63
884447
8
210
343
810
532
744
哈尔
0.462
2663
4186
6
7
6450
1309
927.09
481443
172.79
滨
7
855
123
720
520
020
151
上
1
0.738
2069
54529
6
44
4318
25971
QQOaA
5605
海
313.12
4
019
098
406
485
500
200
336.84
445
南
0.534
13072
14
11
5680
1357
537.44
9891991
664299
113.81
京
1
737
269
193
472
861
杭
0.355
1414
12000
17
11
7425
1180
616.05
449593
96.90
州
6
737
796
883
684
967
947
/宁
0.254
1428
10622
22
10
5246
538.41
501723
62.15
824034
波
7
235
866
215
298
350
合
0.318
2514
4
1
1622
429.95
6287641
233628
47.27
369577
肥
4
125
893
517
931
福
0.273
2152
6555
8
7
5030
583.13
467524
69.59
680607
州
3
288
351
851
190
220
厦
0.486
5751
3
2
2108
>—r
128.99
3333741
418758
46.93
657484
门
5
124
728
570
331
南
0.398
2305
3
3
2640
424.20
6882891
167714
62.08
479,555
昌
8
881
674
189
460
济南
557.63
0.408
5
1486
302
6285
882
5
915
11
775
460690
4126
970
83.31
756696
702.97
0.369
3
2382
320
11492
036
13
408
17
038
658435
4978
045
103.52
961704
郑州
615.36
0.342
4
677425
5287
601
10
433
6
768
387252
5135
338
84.66
696848
武汉
740.20
0.586
9
1211
291
7506
085
9
793
15
442
604658
5748
055
149.2C
1314
766
长沙
582.47
0.310
7
1146
367
3098
179
8
706
5
718
323660
3461
244
69.57
596986
广
685.00
0.621
1600
23348
22
23
1761
20401
182.81
3047
州
4
738
139
007
854
499
811
594
深圳
119.85
0.793
1
299662
20368
295
8
754
4
274
1847
908
9519
900
91.26
1890
338
南
/宁
285.87
0.406
4
720486
1149
691
5
130
3
293
149700
2190
918
45.09
371809
海口
54.38
0.835
4
44815
717461
5
345
2
356
115174
1626
800
19.01
198138
重
3
0.206
4168
8585
52
25
898,912
9090
223.73
1606
庆
072.34
7
780
525
441
124
969
804
成都
1
003.56
0.335
1935
590
5894
289
40
140
19
632
561189
7479
684
132.89
1200
671
贵阳
321.50
0.455
7
362061
2247
934
15
703
4
143
197908
1787
748
55.28
419681
昆明
473.39
0.386
5
793356
3605
729
5
604
12
042
524216
4127
900
88.11
842321
西安
674.50
0.409
4
739905
3665
942
10
311
9
766
408896
5863
980
114.01
885169
州
287.59
0.544
5
259444
2940
884
1
832
4
749
169540
2641
568
65.83
550890
西
/宁
133.95
0.522
7
65848
711310
1
746
1
469
49134
855051
27.21
219251
银川
95.38
0.570
9
171603
661226
2
106
1
193
74758
814103
23.72
178621
乌鲁木齐
158.92
0.824
4
78513
1847
241
2
668
9
041
254870
2365
508
55.27
517622
4.2运行结果
>>cwprint('cwbook.txt',35,10)
fid=
6
数据标准化结果如下:
v1=
0.0581
0.0356
0.0435
0.0680
0.0557
0.1112
0.1194
0.1184
0.1083
0.1392
0.0423
0.0346
0.0354
0.0770
0.0089
0.0642
0.0483
0.0499
0.0534
0.0544
0.0407
0.0139
0.0688
0.0234
0.0080
0.0047
0.0151
0.0314
0.0252
0.0183
0.0139
0.0391
0.0056
0.0093
0.0053
0.0290
0.0087
0.0174
0.0234
0.0158
0.0097
0.0263
0.0086
0.0028
0.0064
0.0064
0.0045
0.0062
0.0111
0.0075
0.0315
0.0375
0.0305
0.0198
0.0213
0.0376
0.0243
0.0398
0.0357
0.0278
0.0253
0.0295
0.0443
0.0286
0.0295
0.0468
0.0304
0.0334
0.0248
0.0233
0.0321
0.0242
0.0437
0.0203
0.0132
0.0233
0.0153
0.0212
0.0270
0.0213
0.0431
0.0276
0.0628
0.0142
0.0184
0.0184
0.0206
0.0285
0.0455
0.0316
0.0610
0.0440
0.0488
0.1853
0.0176
0.1086
0.1848
0.1148
0.0888
0.1352
0.0250
0.0318
0.0233
0.0444
0.0391
0.0273
0.0284
0.0251
0.0300
0.0327
0.0286
0.0212
0.0334
0.0408
0.0490
0.0285
0.0192
0.0328
0.0255
0.0285
0.0250
0.0152
0.0337
0.0361
0.0609
0.0251
0.0215
0.0232
0.0164
0.0199
0.0200
0.0190
0.0148
0.0085
0.0134
0.0037
0.0100
0.0072
0.0125
0.0089
0.0271
0.0163
0.0508
0.0223
0.0243
0.0175
0.0200
0.0222
0.0183
0.0164
0.0060
0.0290
0.0079
0.0195
0.0102
0.0063
0.0179
0.0093
0.0124
0.0159
0.0197
0.0237
0.0162
0.0078
0.0101
0.0078
0.0072
0.0117
0.0164
0.0116
0.0259
0.0243
0.0350
0.0214
0.0162
0.0287
0.0197
0.0182
0.0220
0.0182
0.0327
0.0220
0.0562
0.0391
0.0367
0.0416
0.0282
0.0220
0.0273
0.0232
0.0286
0.0204
0.0160
0.0180
0.0286
0.0165
0.0166
0.0227
0.0223
0.0168
0.0344
0.0349
0.0286
0.0255
0.0268
0.0377
0.0259
0.0254
0.0393
0.0317
0.0271
0.0185
0.0270
0.0105
0.0239
0.0140
0.0139
0.0153
0.0183
0.0144
0.0318
0.0370
0.0377
0.0793
0.0603
0.0582
0.0754
0.0901
0.0482
0.0735
0.0056
0.0472
0.0071
0.0692
0.0240
0.0104
0.0791
0.0421
0.0240
0.0456
0.0133
0.0242
0.0170
0.0039
0.0141
0.0080
0.0064
0.0097
0.0119
0.0090
0.0025
0.0497
0.0011
0.0024
0.0146
0.0057
0.0049
0.0072
0.0050
0.0048
0.1428
0.0123
0.0983
0.0292
0.1437
0.0613
0.0385
0.0402
0.0590
0.0387
0.0466
0.0199
0.0456
0.0200
0.1100
0.0479
0.0240
0.0331
0.0350
0.0290
0.0149
0.0271
0.0085
0.0076
0.0430
0.0101
0.0085
0.0079
0.0146
0.0101
0.0220
0.0230
0.0187
0.0123
0.0154
0.0294
0.0224
0.0182
0.0232
0.0203
0.0313
0.0244
0.0174
0.0125
0.0283
0.0238
0.0175
0.0259
0.0300
0.0213
0.0134
0.0324
0.0061
0.0100
0.0050
0.0116
0.0073
0.0117
0.0173
0.0133
0.0062
0.0311
0.0016
0.0024
0.0048
0.0036
0.0021
0.0038
0.0072
0.0053
0.0044
0.0340
0.0040
0.0022
0.0058
0.0029
0.0032
0.0036
0.0063
0.0043
0.0074
0.0491
0.0019
0.0063
0.0073
0.0221
0.0109
0.0105
0.0146
0.0125
相关系数矩阵:
std=
1.0000-0.34440.84250.36030.73900.62150.40390.49670.67610.4689
-0.34441.0000-0.47500.3096-0.35390.19710.35710.26000.15700.3090
0.8425-0.47501.00000.33580.58910.50560.32360.44560.55750.3742
0.36030.30960.33581.00000.15070.76640.94120.8480
0.73200.8614
0.7390-0.35390.58910.15071.00000.42940.19710.31820.3893
0.2595
0.6215
0.1971
0.5056
0.7664
0.4294
1.0000
0.8316
0.8966
0.9302
0.9027
0.4039
0.3571
0.3236
0.9412
0.1971
0.8316
1.0000
0.9233
0.8376
0.9527
0.4967
0.2600
0.4456
0.8480
0.3182
0.8966
0.9233
1.0000
0.9201
0.9731
0.6761
0.1570
0.5575
0.7320
0.3893
0.9302
0.8376
0.9201
1.0000
0.9396
0.4689
0.3090
0.3742
0.8614
0.2595
0.9027
0.9527
0.9731
0.93961.0000
特征向量(vec):
vec=
-0.1367
0.2282
-0.2628
0.1939
0.6371
-0.2163
0.3176
-0.1312
-0.4