巧用Matlab进行主成分降维

巧用Matlab进行主成分降维
巧用Matlab进行主成分降维

巧用Matlab 实现主成分分析

1.概述

Matlab 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是

最有活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言的便捷接口的功能。Matlab 语言在各国高校与研究单位起着重大的作用。主成分分析是把原来多个变量划为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。

1.1主成分分析计算步骤PCA

① 计算相关系数矩阵

??

?

????

????

???=pp p p p p r r r r r r r r r R 2

1

22221

11211

(1)

在(3.5.3)式中,r ij (i ,j=1,2,…,p )为原变量的xi 与xj 之间的相关系数,其计算公式为

∑∑∑===----=

n k n

k j kj i ki n

k j kj i ki

ij x x x x x x x x

r 1

12

2

1)()

()

)(( (2)

因为R 是实对称矩阵(即r ij =r ji ),所以只需计算上三角元素或下三角元素即可。

② 计算特征值与特征向量

首先解特征方程0=-R I λ,通常用雅可比法(Jacobi )求出特征值

),,2,1(p i i =λ,并使其按大小顺序排列,即0,21≥≥≥≥p

λλλ ;然后分别求

出对应于特征值i λ的特征向量),,2,1(p i e i =。这里要求i e =1,即112

=∑=p

j ij e ,其

中ij e 表示向量i e 的第j 个分量。

③ 计算主成分贡献率及累计贡献率 主成分i z 的贡献率为 累计贡献率为

一般取累计贡献率达85—95%的特征值m λλλ,,,21 所对应的第一、第二,…,第m (m ≤p )个主成分。

④ 计算主成分载荷 其计算公式为

)

,,2,1,(),(p j i e x z p l ij i j i ij ===λ (3)

得到各主成分的载荷以后,还可以按照(3.5.2)式进一步计算,得到各主成分的得分

?

?

???

???????=nm n n m m z z z z z z z z z Z 2

1222

21

11211

(4)

2.程序结构及函数作用

在软件Matlab 中实现主成分分析可以采取两种方式实现:一是通过编程来实现;二是直接调用Matlab 种自带程序实现。下面主要主要介绍利用Matlab 的矩阵计算功能编程实现主成分分析。

2.1程序结构

主函数 子函数

2.2函数作用

Cwstd.m ——用总和标准化法标准化矩阵

Cwfac.m ——计算相关系数矩阵;计算特征值和特征向量;对主成分进行排序;计算各特征值贡献率;挑选主成分(累计贡献率大于85%),输出主成分个数;计算主成分载荷

Cwscore.m ——计算各主成分得分、综合得分并排序 Cwprint.m ——读入数据文件;调用以上三个函数并输出结果

读者注意,在做主成分分析时一定要看清原理,两个重点,一个是选取85%,

一个是matalab 严格区分大小写。这是编者读完网上代码后改写的正确代码。

3.源程序

3.1 cwstd.m

%cwstd.m,用总和标准化法标准化矩阵 function std=cwstd(vector)

cwsum=sum(vector,1); %对列求和

[a,b]=size(vector); %矩阵大小,a 为行数,b 为列数

for i=1:a

for j=1:b

std(i,j)= vector(i,j)/cwsum(j);

end

end

3.2 cwfac.m

%cwfac.m

function result=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')

for z=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=[];

for k=length(y):-1:1

sumrate=sumrate+rate(k);

newi(length(y)+1-k)=i(k);

if sumrate>0.85 break;

end

end %记下累积贡献率大85%的特征值的序号放入newi中fprintf('主成分数:%g\n\n',length(newi));

fprintf('主成分载荷:\n')

for p=1:length(newi)

for q=1:length(y)

result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));

end

end %计算载荷

disp(result)

3.3 cwscore.m

%cwscore.m,计算得分

function score=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.4 cwprint.m

%cwprint.m

function print=cwprint(filename,a,b);

%filename为文本文件文件名,a为矩阵行数(样本数),b为矩阵列数(变量指标数) fid=fopen(filename,'r')

vector=fscanf(fid,'%g',[a b]);

fprintf('标准化结果如下:\n')

v1=cwstd(vector)

result=cwfac(v1);

cwscore(v1,result);

4.程序测试

4.1原始数据

中国大陆35个大城市某年的10项社会经济统计指标数据见下表。

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.3444 0.8425 0.3603 0.7390 0.6215 0.4039 0.4967 0.6761 0.4689 -0.3444 1.0000 -0.4750 0.3096 -0.3539 0.1971 0.3571 0.2600 0.1570 0.3090 0.8425 -0.4750 1.0000 0.3358 0.5891 0.5056 0.3236 0.4456 0.5575 0.3742

0.3603 0.3096 0.3358 1.0000 0.1507 0.7664 0.9412 0.8480 0.7320 0.8614 0.7390 -0.3539 0.5891 0.1507 1.0000 0.4294 0.1971 0.3182 0.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.9396 1.0000

特征向量(vec):

vec =

-0.1367 0.2282 -0.2628 0.1939 0.6371 -0.2163 0.3176 -0.1312 -0.4191 0.2758 -0.0329 -0.0217 0.0009 0.0446 -0.1447 -0.4437 0.4058 -0.55620.5487 0.0593 -0.0522 -0.0280 0.2040 -0.0492 -0.5472 -0.4225 0.3440 0.3188 -0.4438 0.2401 0.0067 -0.4176 -0.2856 -0.2389 0.1926 -0.4915 -0.4189 0.2726 0.2065 0.3403 0.0404 0.1408 0.0896 0.0380 -0.1969 -0.0437 -0.4888 -0.6789 -0.4405 0.1861 -0.0343 0.2360 0.0640 -0.8294 0.0377 0.2662 0.1356 -0.1290 0.0278 0.3782 0.2981 0.4739 0.5685 0.2358 0.1465 -0.1502 -0.2631 0.1245 0.2152 0.3644 0.1567 0.3464 -0.6485 0.2489 -0.4043 0.2058 -0.0704 0.0462 0.1214 0.3812 0.4879 -0.5707 0.1217 0.1761 0.0987 0.3550 0.3280 -0.0139 0.0071 0.3832 -0.7894 -0.1628 0.1925 0.2510 -0.0422 0.2694 0.0396 0.0456 0.1668 0.3799 特征值(val)

val =

0.0039 0 0 0 0 0 0 0 0 0

0 0.0240 0 0 0 0 0 0 0 0

0 0 0.0307 0 0 0 0 0 0 0

0 0 0 0.0991 0 0 0 0 0 0

0 0 0 0 0.1232 0 0 0 0 0

0 0 0 0 0 0.2566 0 0 0 0

0 0 0 0 0 0 0.3207 0 0 0

0 0 0 0 0 0 0 0.5300 0 0

0 0 0 0 0 0 0 0 2.3514 0

0 0 0 0 0 0 0 0 0 6.2602

特征根排序:

6.26022

2.35138

0.530047

0.320699

0.256639

0.123241

0.0990915

0.0307088

0.0240355

0.00393387

各主成分贡献率:

newrate =

0.6260 0.2351 0.0530 0.0321 0.0257 0.0123 0.0099 0.0031 0.0024 0.0004 第一、二主成分的载荷:

0.690 1 -0.6427

0.148 3 0.8414

0.600 7 -0.6805

0.851 5 0.3167

0.465 6 -0.6754

0.946 3 0.0426

0.911 7 0.3299

0.953 7 0.1862

0.958 9 0.0109

0.950 6 0.2558

第一、二、三、四主成分的得分:

score =

0.718 5 0.049 9 0.768 4 2.0000

0.380 6 0.038 6 0.419 2 4.0000

0.184 8 -0.043 3 0.141 4 21.0000

0.118 6 0.031 1 0.149 7 20.0000

0.054 9 0.011 5 0.066 4 33.0000

0.228 8 0.007 0 0.235 8 7.000 0

0.2364 -0.0081 0.2283 10.0000

0.1778 -0.0167 0.1611 16.0000

0.2292 -0.0337 0.1955 14.0000

0.8382 0.1339 0.9721 1.0000

0.2276 0.0064 0.2340 8.0000

0.2279 -0.0222 0.2056 12.0000

0.1989 -0.0382 0.1607 18.0000

0.0789 -0.0061 0.0728 32.0000

0.1711 -0.0317 0.1394 23.0000

0.0926 0.0266 0.1192 25.0000

0.0900 -0.0000 0.0899 28.0000

0.1692 -0.0082 0.1610 17.0000

0.2441 -0.0318 0.2124 11.0000

0.1507 -0.0108 0.1399 22.0000

0.2316 0.0012 0.2328 9.0000

0.1294 -0.0211 0.1083 27.0000

0.4716 0.0328 0.5045 3.0000

0.2737 0.0834 0.3570 5.0000

0.0754 -0.0013 0.0741 31.0000

0.0448 0.0349 0.0797 30.0000

0.4759 -0.2028 0.2731 6.0000

0.2907 -0.0883 0.2024 13.0000

0.0944 -0.0118 0.0826 29.0000 0.1546 0.0035 0.1581 19.0000 0.1718 -0.0092 0.1626 15.0000 0.0865 0.0230 0.1095 26.0000 0.0349 0.0216 0.0566 35.0000 0.0343 0.0228 0.0572 34.0000 0.0889 0.0422 0.1310 24.0000

主成分分析法matlab实现,实例演示

利用Matlab 编程实现主成分分析 1.概述 Matlab 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是 最有活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言的便捷接口的功能。Matlab 语言在各国高校与研究单位起着重大的作用。主成分分析是把原来多个变量划为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。 1.1主成分分析计算步骤 ① 计算相关系数矩阵 ?? ? ???? ???? ?? ?=pp p p p p r r r r r r r r r R 2 122221 11211 (1) 在(3.5.3)式中,r ij (i ,j=1,2,…,p )为原变量的xi 与xj 之间的相关系数,其计算公式为 ∑∑∑===----= n k n k j kj i ki n k j kj i ki ij x x x x x x x x r 1 1 2 2 1 )() () )(( (2) 因为R 是实对称矩阵(即r ij =r ji ),所以只需计算上三角元素或下三角元素即可。

② 计算特征值与特征向量 首先解特征方程0=-R I λ,通常用雅可比法(Jacobi )求出特征值 ),,2,1(p i i =λ,并使其按大小顺序排列,即0,21≥≥≥≥p λλλ ;然后分别求 出对应于特征值i λ的特征向量),,2,1(p i e i =。这里要求i e =1,即112 =∑=p j ij e ,其 中ij e 表示向量i e 的第j 个分量。 ③ 计算主成分贡献率及累计贡献率 主成分i z 的贡献率为 ),,2,1(1 p i p k k i =∑=λ λ 累计贡献率为 ) ,,2,1(11 p i p k k i k k =∑∑==λ λ 一般取累计贡献率达85—95%的特征值m λλλ,,,21 所对应的第一、第二,…,第m (m ≤p )个主成分。 ④ 计算主成分载荷 其计算公式为 ) ,,2,1,(),(p j i e x z p l ij i j i ij ===λ (3)

主成分分析案例

姓名:XXX 学号:XXXXXXX 专业:XXXX 用SPSS19软件对下列数据进行主成分分析: ……

一、相关性 通过对数据进行双变量相关分析,得到相关系数矩阵,见表1。 表1 淡化浓海水自然蒸发影响因素的相关性 由表1可知: 辐照、风速、湿度、水温、气温、浓度六个因素都与蒸发速率在0.01水平上显著相关。 分析:各变量之间存在着明显的相关关系,若直接将其纳入分析可能会得到因多元共线性影响的错误结论,因此需要通过主成份分析将数据所携带的信息进行浓缩处理。 二、KMO和球形Bartlett检验 KMO和球形Bartlett检验是对主成分分析的适用性进行检验。 KMO检验可以检查各变量之间的偏相关性,取值范围是0~1。KMO的结果越接近1,表示变量之间的偏相关性越好,那么进行主成分分析的效果就会越好。实际分析时,KMO统计量大于0.7时,效果就比较理想;若当KMO统计量小于0.5时,就不适于选用主成分分析法。 Bartlett球形检验是用来判断相关矩阵是否为单位矩阵,在主成分分析中,若拒绝各变量独立的原假设,则说明可以做主成分分析,若不拒绝原假设,则说明这些变量可能独立提供一些信息,不适合做主成分分析。

由表2可知: 1、KMO=0.631<0.7,表明变量之间没有特别完美的信息的重叠度,主成分分析得到的模型又可能不是非常完善,但仍然值得实验。 2、显著性小于0.05,则应拒绝假设,即变量间具有较强的相关性。 三、公因子方差 公因子方差表示变量共同度。表示各变量中所携带的原始信息能被提取出的主成分所体现的程度。 由表3可知: 几乎所有变量共同度都达到了75%,可认为这几个提取出的主成分对各个变量的阐释能力比较强。 四、解释的总方差 解释的总方差给出了各因素的方差贡献率和累计贡献率。

PCA降维方法(主成分分析降维)

一、简介 PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题,在一个几万或者几百万甚至更大的数据库中查询一幅相近的图像。这时,我们通常的方法是对图像库中的图片提取响应的特征,如颜色,纹理,sift,surf,vlad等等特征,然后将其保存,建立响应的数据索引,然后对要查询的图像提取相应的特征,与数据库中的图像特征对比,找出与之最近的图片。这里,如果我们为了提高查询的准确率,通常会提取一些较为复杂的特征,如sift,surf等,一幅图像有很多个这种特征点,每个特征点又有一个相应的描述该特征点的128维的向量,设想如果一幅图像有300个这种特征点,那么该幅图像就有300*vector(128维)个,如果我们数据库中有一百万张图片,这个存储量是相当大的,建立索引也很耗时,如果我们对每个向量进行PCA处理,将其降维为64维,是不是很节约存储空间啊?对于学习图像处理的人来说,都知道PCA是降维的,但是,很多人不知道具体的原理,为此,我写这篇文章,来详细阐述一下PCA及其具体计算过程: 二、PCA原理 1、原始数据: 为了方便,我们假定数据是二维的,借助网络上的一组数据,如下: x=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1,1.5, 1.1]T y=[2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9]T 2、计算协方差矩阵 什么是协方差矩阵?相信看这篇文章的人都学过数理统计,一些基本的常识都知道,但是,也许你很长时间不看了,都忘差不多了,为了方便大家更好的理解,这里先简单的回顾一下数理统计的相关知识,当然如果你知道协方差矩阵的求法你可以跳过这里。 (1)协方差矩阵: 首先我们给你一个含有n个样本的集合,依次给出数理统计中的一些相关概念: 均值: 标准差:

matlab主成分分析案例

1?设随机向量X= (X i , X 2, X 3)T 的协方差与相关系数矩阵分别为 1 4 ,R 4 25 分别从,R 出发,求X 的各主成分以及各主成分的贡献率并比较差异况。 解答: >> S=[1 4;4 25]; >> [P C,vary,ex plain ed]=p cacov(S); 总体主成分分析: >> [P C,vary,ex plain ed]=p cacov(S) 主成分交换矩阵: PC = -0.1602 -0.9871 -0.9871 0.1602 主成分方差向量: vary = 25.6491 0.3509 各主成分贡献率向量 explained = 98.6504 1.3496 则由程序输出结果得出,X 的主成分为: Y 1=-0.1602X 1-0.9871X 2 Y 2=-0.9871X 1+0.1602X 2 两个主成分的贡献率分别为:98.6504%, 1.3496%;贝U 若用第一个主成分代替原 来的变量,信息损失率仅为1.3496,是很小的。 2.根据安徽省2007年各地市经济指标数据,见表 5.2,求解: (1) 利用主成分分析对17个地市的经济发展进行分析,给出排名; (2) 此时能否只用第一主成分进行排名?为什么? 1 0.8 0.8 1

1.0000 0.9877 0.9980 0.9510 0.9988 0.9820 0.4281 0.9999 解答: (1) >> clear >> A=[491.70,380.31,158.39,121.54,22.74,439.65,344.44,17.43; 21.12,30.55,6.40,12.40,3.31,21.17,17.71,2.03; 1.71, 2.35,0.57,0.68,0.13,1.48,1.36,-0.03; 9.83,9.05,3.13,3.43,0.64,8.76,7.81,0.54; 64.06,77.86,20.63,30.37,5.96,63.57,52.15,4.71; 30.38,46.90,9.19,9.83,17.87,28.24,21.90,3.80; 31.20,70.07,8.93,18.88,33.05,31.17,26.50,2.84; 79.18,62.09,20.78,24.47,3.51,71.29,59.07,6.78; 47.81,40.14,17.50,9.52,4.14,45.70,34.73,4.47; 104.69,78.95,29.61,25.96,5.39,98.08,84.81,3.81; 21.07,17.83,6.21,6.22,1.90,20.24,16.46,1.09; 214.19,146.78,65.16,41.62,4.39,194.98,171.98,11.05; 31.16,27.56,8.80,9.44,1.47,28.83,25.22,1.05; 12.76,14.16,3.66,4.07,1.57,11.95,10.24,0.73; 6.45,5.37,2.39,2.20,0.40,5.97,4.79,0.52; 39.43,44.60,15.17,15.72,3.27,36.03,27.87,3.48; 5.02,3.62,1.63,1.42,0.53,4.45,4.04,0.02]; 得到的相关系数矩阵为: >> R=corrcoef(A) R =

matlab主成分分析法

§10.利用Matlab 编程实现主成分分析 1.概述 Matlab 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是 最有活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言的便捷接口的功能。Matlab 语言在各国高校与研究单位起着重大的作用。主成分分析是把原来多个变量划为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。 1.1主成分分析计算步骤 ① 计算相关系数矩阵 ?? ? ???? ???? ?? ?=pp p p p p r r r r r r r r r R 2 122221 11211 (1) 在(,r ij (i ,j=1,2,…,p )为原变量的xi 与xj 之间的相关系数,其计算公式为 ∑∑∑===----= n k n k j kj i ki n k j kj i ki ij x x x x x x x x r 1 1 2 2 1 )() () )(( (2) 因为R 是实对称矩阵(即r ij =r ji ),所以只需计算上三角元素或下三角元素即可。 ② 计算特征值与特征向量

首先解特征方程0=-R I λ,通常用雅可比法(Jacobi )求出特征值 ),,2,1(p i i =λ,并使其按大小顺序排列,即0,21≥≥≥≥p λλλ ;然后分别求 出对应于特征值i λ的特征向量),,2,1(p i e i =。这里要求i e =1,即112 =∑=p j ij e ,其 中ij e 表示向量i e 的第j 个分量。 ③ 计算主成分贡献率及累计贡献率 主成分i z 的贡献率为 累计贡献率为 一般取累计贡献率达85—95%的特征值m λλλ,,,21 所对应的第一、第二,…,第m (m ≤p )个主成分。 ④ 计算主成分载荷 其计算公式为 ) ,,2,1,(),(p j i e x z p l ij i j i ij ===λ (3) 得到各主成分的载荷以后,还可以按照(,得到各主成分的得分 ? ? ??? ???????=nm n n m m z z z z z z z z z Z 2 1 22221 11211 (4) 2.程序结构及函数作用 在软件Matlab 中实现主成分分析可以采取两种方式实现:一是通过编程来

主成分分析PCA(含有详细推导过程以及案例分析matlab版)

主成分分析法(PCA) 在实际问题中,我们经常会遇到研究多个变量的问题,而且在多数情况下,多个变量之间常常存在一定的相关性。由于变量个数较多再加上变量之间的相关性,势必增加了分析问题的复杂性。如何从多个变量中综合为少数几个代表性变量,既能够代表原始变量的绝大多数信息,又互不相关,并且在新的综合变量基础上,可以进一步的统计分析,这时就需要进行主成分分析。 I. 主成分分析法(PCA)模型 (一)主成分分析的基本思想 主成分分析是采取一种数学降维的方法,找出几个综合变量来代替原来众多的变量,使这些综合变量能尽可能地代表原来变量的信息量,而且彼此之间互不相关。这种将把多个变量化为少数几个互相无关的综合变量的统计分析方法就叫做主成分分析或主分量分析。 主成分分析所要做的就是设法将原来众多具有一定相关性的变量,重新组合为一组新的相互无关的综合变量来代替原来变量。通常,数学上的处理方法就是将原来的变量做线性组合,作为新的综合变量,但是这种组合如果不加以限制,则可以有很多,应该如何选择呢?如果将选取的第一个线性组合即第一个综合变量记为1F ,自然希望它尽可能多地反映原来变量的信息,这里“信息”用方差来测量,即希望)(1F Var 越大,表示1F 包含的信息越多。因此在所有的线性组合中所选取的1F 应该是方差最大的,故称1F 为第一主成分。如果第一主成分不足以代表原来p 个变量的信息,再考虑选取2F 即第二个线性组合,为了有效地反映原来信息,1F 已有的信息就不需要再出现在2F 中,用数学语言表达就是要求 0),(21=F F Cov ,称2F 为第二主成分,依此类推可以构造出第三、四……第p 个主成分。 (二)主成分分析的数学模型 对于一个样本资料,观测p 个变量p x x x ,,21,n 个样品的数据资料阵为: ??????? ??=np n n p p x x x x x x x x x X 21 222 21112 11()p x x x ,,21=

R语言主成分分析的案例

R 语言主成分分析的案例
R 语言也介绍到案例篇了,也有不少同学反馈说还是不是特别明白一些基础的东西,希望能 够有一些比较浅显的可以操作的入门。其实这些之前 SPSS 实战案例都不少,老实说一旦用 上了开源工具就好像上瘾了,对于以前的 SAS、clementine 之类的可视化工具没有一点 感觉了。本质上还是觉得要装这个、装那个的比较麻烦,现在用 R 或者 python 直接简单 安装下,导入自己需要用到的包,活学活用一些命令函数就可以了。以后平台上集成 R、 python 的开发是趋势,包括现在 BAT 公司内部已经实现了。 今天就贴个盐泉水化学分析资料的主成分分析和因子分析通过 R 语言数据挖掘的小李 子: 有条件的同学最好自己安装下 R,操作一遍。 今有 20 个盐泉,盐泉的水化学特征系数值见下表.试对盐泉的水化学分析资料作主成分分 析和因子分析.(数据可以自己模拟一份)
其中 x1:矿化度(g/L);

x2:Br?103/Cl; x3:K?103/Σ 盐; x4:K?103/Cl; x5:Na/K; x6:Mg?102/Cl; x7:εNa/εCl.
1.数据准备
导入数据保存在对象 saltwell 中 >saltwell<-read.table("c:/saltwell.txt",header=T) >saltwell
2.数据分析

1 标准误、方差贡献率和累积贡献率
>arrests.pr<- prcomp(saltwell, scale = TRUE) >summary(arrests.pr,loadings=TRUE)
2 每个变量的标准误和变换矩阵
>prcomp(saltwell, scale = TRUE)
3 查看对象 arests.pr 中的内容
>> str(arrests.pr)

主成分分析法的步骤和原理 (1)

(一)主成分分析法的基本思想 主成分分析(Principal Component Analysis )是利用降维的思想,将多个变量转化为少数几个综合变量(即主成分),其中每个主成分都是原始变量的线性组合,各主成分之间互不相关,从而这些主成分能够反映始变量的绝大部分信息,且所含的信息互不重叠。[2] 采用这种方法可以克服单一的财务指标不能真实反映公司的财务情况的缺点,引进多方面的财务指标,但又将复杂因素归结为几个主成分,使得复杂问题得以简化,同时得到更为科学、准确的财务信息。 (二)主成分分析法代数模型 假设用p 个变量来描述研究对象,分别用X 1,X 2…X p 来表示,这p 个变量构成的p 维随机向量为X=(X 1,X 2…X p )t 。设随机向量X 的均值为μ,协方差矩阵为Σ。对X 进行线性变化,考虑原始变量的线性组合: Z 1=μ11X 1+μ12X 2+…μ1p X p Z 2=μ21X 1+μ22X 2+…μ2p X p …… …… …… Z p =μp1X 1+μp2X 2+…μpp X p 主成分是不相关的线性组合Z 1,Z 2……Z p ,并且Z 1是X 1,X 2…X p 的线性组合中方差最大者,Z 2是与Z 1不相关的线性组合中方差最大者,…,Z p 是与Z 1,Z 2 ……Z p-1都不相关的线性组合中方差最大者。 (三)主成分分析法基本步骤 第一步:设估计样本数为n ,选取的财务指标数为p ,则由估计样本的原始数据可得矩阵X=(x ij )m ×p ,其中x ij 表示第i 家上市公司的第j 项财务指标数据。 第二步:为了消除各项财务指标之间在量纲化和数量级上的差别,对指标数据进行标准化,得到标准化矩阵(系统自动生成)。 第三步:根据标准化数据矩阵建立协方差矩阵R ,是反映标准化后的数据之间相关关系密切程度的统计指标,值越大,说明有必要对数据进行主成分分析。其中,R ij (i ,j=1,2,…,p )为原始变量X i 与X j 的相关系数。R 为实对称矩阵 (即R ij =R ji ),只需计算其上三角元素或下三角元素即可,其计算公式为: 2211)()() ()(j kj n k i kj j kj n k i kj ij X X X X X X X X R -=--=-=∑∑ 第四步:根据协方差矩阵R 求出特征值、主成分贡献率和累计方差贡献率,确定主成分个数。解特征方程0=-R E λ,求出特征值λi (i=1,2,…,p )。 因为R 是正定矩阵,所以其特征值λi 都为正数,将其按大小顺序排列,即λ1≥λ2≥…≥λi ≥0。特征值是各主成分的方差,它的大小反映了各个主成分的影响力。主成分Z i 的贡献率W i =∑=p j j j 1λλ,累计贡献率为

SPSS软件进行主成分分析的应用例子

SPSS软件进行主成分分析的应用例子

SPSS软件进行主成分分析的应用例子 2002年16家上市公司4项指标的数据[5]见表2,定量综合赢利能力分析如下: 公司销售净利率(X1)资产净利率(X2)净资产收益率(X3)销售毛利率(X4) 歌华有线五粮液用友软件太太药业浙江阳光烟台万华方正科技红河光明贵州茅台中铁二局红星发展伊利股份青岛海尔湖北宜化雅戈尔福建南纸43.31 17.11 21.11 29.55 11.00 17.63 2.73 29.11 20.29 3.99 22.65 4.43 5.40 7.06 19.82 7.26 7.39 12.13 6.03 8.62 8.41 13.86 4.22 5.44 9.48 4.64 11.13 7.30 8.90 2.79 10.53 2.99 8.73 17.29 7.00 10.13 11.83 15.41 17.16 6.09 12.97 9.35 14.3 14.36 12.53 5.24 18.55 6.99 54.89 44.25 89.37 73 25.22 36.44 9.96 56.26 82.23 13.04 50.51 29.04 65.5 19.79 42.04 22.72 第一,将EXCEL中的原始数据导入到SPSS软件中; 注意: 导入Spss的数据不能出现空缺的现象,如出现可用0补齐。 【1】“分析”|“描述统计”|“描述”。 【2】弹出“描述统计”对话框,首先将准备标准化的变量移入变量组中,此时,最重要的一步就是勾选“将标准化得分另存为变量”,最后点击确定。 【3】返回SPSS的“数据视图”,此时就可以看到新增了标准化后数据的字段。 所做工作: a. 原始数据的标准化处理

主成分分析 实例

§8 实例 实例1 计算得 1x =71.25,2x =67.5 分析1:基于协差阵∑ 求主成分。 369.6117.9117.9214.3S ?? = ??? 特征根与特征向量(S无偏,用SPSS ) Factor 1 Factor 2 11x x - 0.880 -0.474 22x x - 0.474 0.880 特征值 433.12 150.81 贡献率 0.7417 0.2583 注:样本协差阵为无偏估计11(11)1n n n S X I X n n ''= --, 所以,第一、二主成分的表达式为 112212 0.88(71.25)0.47(67.5) 0.47(71.25)0.88(67.5)y x x y x x =-+-?? =--+-? 第一主成分是英语与数学的加权和(反映了综合成绩),且英语的权数要大于数学的权数。1y 越大,综合成绩越好。(综合成分) 第二主成分的两个系数异号(反映了两科成绩的均衡性)。不妨将英语称为文科,数学称为理科。2y 越大,说明偏科(文、理成绩不均衡),2y 越小,越接近于零,说明不偏科(文、理成绩均衡)。(结构成分)

问题:英语的权数为何大?如何解释? 分析2: 基于相关阵R 求主成分。因为 1x =71.25,2x =67.5 所以相关阵 11R ? =? ? ? 解得R 的特征根为:1λ=1.419,2λ=0.581,对应的单位特征向量分别为: Factor 1 Factor 2 11 1x x s - 0.707 0.707 22 2 x x s - 0.707 -0.707 特征根 1.419 0.581 贡献率 0.709 0.291 所以,第一、二主成分的表达式为 12112271.2567.50.7070.70717.9813.6971.2567.50.7070.70717.9813.69x x y x x y --? =+=+?? ? --?=-=-?? 1122120.039(71.25)0.052(67.5) 0.039(71.25)0.052(67.5)y x x y x x =-+-?? =---? 112212 0.0390.052 6.273 0.0390.0520.671y x x y x x =+-?? =-+? * 2*11707.0707.0x x y += *2*12707.0707.0x x y -= 基于相关阵的更说明了: 第一主成分是英语与数学的加权总分。 第二主成分是对两科成绩均衡性的度量。 此例说明:基于协差阵与基于相关阵的主成分分析的结果不一致。结合此例的实际背景,经对比分析可知,基于协差阵的主成分分析更符合实际。

主成分分析操作步骤

主成分分析操作步骤 1)先在spss中录入原始数据。 2)菜单栏上执行【分析】——【降维】——【因子分析】,打开因素分析对话框,将要分析的变量都放入【变量】窗口中。

3)设计分析的统计量 点击【描述】:选中“Statistics”中的“原始分析结果”和“相关性矩阵”中的“系数”。(选中原始分析结果,SPSS自动把原始数据标准差标准化,但不显示出来;选中系数,会显示相关系数矩阵)然后点击“继续”。 点击【抽取】:“方法”里选取“主成分”;“分析”、“输出”、“抽取”均选中各自的第一个选项即可。

点击【旋转】:选取第一个选项“无”。(当因子分析的抽取方法选择主成分法时,且不进行因子旋转,则其结果即为主成分分析) 点击【得分】:选中“保存为变量”,方法中选“回归”;再选中“显示因子得分系数矩阵”。 点击【选项】:选择“按列表排除个案”。

4)结果解读 5)A. 相关系数矩阵:是6个变量两两之间的相关系数大小的方阵。通过相关系 数可以看到各个变量之间的相关,进而了解各个变量之间的关系。 相關性矩陣 食品衣着燃料住房交通和通讯娱乐教育文化相關食品 1.000 .692 .319 .760 .738 .556 衣着.692 1.000 -.081 .663 .902 .389 燃料.319 -.081 1.000 -.089 -.061 .267 住房.760 .663 -.089 1.000 .831 .387 交通和通讯.738 .902 -.061 .831 1.000 .326 娱乐教育文化.556 .389 .267 .387 .326 1.000 B. 共同度:给出了这次主成分分析从原始变量中提取的信息,可以看出交通和 通讯最多,而娱乐教育文化损失率最大。 Communalities 起始擷取 食品 1.000 .878 衣着 1.000 .825 燃料 1.000 .841 住房 1.000 .810 交通和通讯 1.000 .919 娱乐教育文化 1.000 .584 擷取方法:主體元件分析。 C. 总方差的解释:系统默认方差大于1的为主成分。如果小于1,说明这个主 因素的影响力度还不如一个基本的变量。所以只取前两个,且第一主成分的方差 为3.568,第二主成分的方差为1.288,前两个主成分累加占到总方差的80.939%。 說明的變異數總計 元件 起始特徵值擷取平方和載入 總計變異的% 累加% 總計變異的% 累加% 1 3.568 59.474 59.474 3.568 59.474 59.474 2 1.288 21.466 80.939 1.288 21.466 80.939 3 .600 10.001 90.941 4 .358 5.97 5 96.916 5 .142 2.372 99.288 6 .043 .712 100.000 擷取方法:主體元件分析。

主成分分析报告matlab程序

Matlab编程实现主成分分析 .程序结构及函数作用 在软件Matlab中实现主成分分析可以采取两种方式实现:一是通过编程来实现;二是直接调用Matlab种自带程序实现。下面主要主要介绍利用Matlab的矩阵计算功能编程实现主成分分析。 1程序结构 2函数作用 Cwstd.m——用总和标准化法标准化矩阵 Cwfac.m——计算相关系数矩阵;计算特征值和特征向量;对主成分进行排序;计算各特征值贡献率;挑选主成分(累计贡献率大于85%),输出主成分个数;计算主成分载荷 Cwscore.m——计算各主成分得分、综合得分并排序 Cwprint.m——读入数据文件;调用以上三个函数并输出结果

3.源程序 3.1 cwstd.m总和标准化法标准化矩阵 %cwstd.m,用总和标准化法标准化矩阵 function std=cwstd(vector) cwsum=sum(vector,1); %对列求和 [a,b]=size(vector); %矩阵大小,a为行数,b为列数 for i=1:a for j=1:b std(i,j)= vector(i,j)/cwsum(j); end end 3.2 cwfac.m计算相关系数矩阵 %cwfac.m function result=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') for z=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=[]; for k=length(y):-1:1 sumrate=sumrate+rate(k); newi(length(y)+1-k)=i(k); if sumrate>0.85 break; end end %记下累积贡献率大85%的特征值的序号放入newi中fprintf('主成分数:%g\n\n',length(newi)); fprintf('主成分载荷:\n') for p=1:length(newi)

主成分分析法概念及例题

主成分分析法 主成分分析(principal components analysis,PCA)又称:主分量分析,主成分回归分析法 [编辑] 什么是主成分分析法 主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。 在统计学中,主成分分析(principal components analysis,PCA)是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但是,这也不是一定的,要视具体应用而定。 [编辑] 主成分分析的基本思想

在实证问题研究中,为了全面、系统地分析问题,我们必须考虑众多影响因素。这些涉及的因素一般称为指标,在多元统计分析中也称为变量。因为每个变量都在不同程度上反映了所研究问题的某些信息,并且指标之间彼此有一定的相关性,因而所得的统计数据反映的信息在一定程度上有重叠。在用统计方法研究多变量问题时,变量太多会增加计算量和增加分析问题的复杂性,人们希望在进行定量分析的过程中,涉及的变量较少,得到的信息量较多。主成分分析正是适应这一要求产生的,是解决这类题的理想工具。 同样,在科普效果评估的过程中也存在着这样的问题。科普效果是很难具体量化的。在实际评估工作中,我们常常会选用几个有代表性的综合指标,采用打分的方法来进行评估,故综合指标的选取是个重点和难点。如上所述,主成分分析法正是解决这一问题的理想工具。因为评估所涉及的众多变量之间既然有一定的相关性,就必然存在着起支配作用的因素。根据这一点,通过对原始变量相关矩阵内部结构的关系研究,找出影响科普效果某一要素的几个综合指标,使综合指标为原来变量的线性拟合。这样,综合指标不仅保留了原始变量的主要信息,且彼此间不相关,又比原始变量具有某些更优越的性质,就使我们在研究复杂的科普效果评估问题时,容易抓住主要矛盾。上述想法可进一步概述为:设某科普效果评估要素涉及个指标,这指标构成的维随机向量为。对作正交变换,令,其中为正交阵,的各分量是不相关的,使得的各分量在某个评估要素中的作用容易解释,这就使得我们有可能从主分量中选择主要成分,削除对这一要素影响微弱的部分,通过对主分量的重点分析,达到对原始变量进行分析的目的。的各分量是原始变量线性组合,不同的分量表示原始变量之间不同的影响关系。由于这些基本关系很可能与特定的作用过程相联系,主成分分析使我们能从错综复杂的科普评估要素的众多指标中,找出一些主要成分,以便有效地利用大量统计数据,进行科普效果评估分析,使我们在研究科普效果评估问题中,可能得到深层次的一些启发,把科普效果评估研究引向深入。 例如,在对科普产品开发和利用这一要素的评估中,涉及科普创作人数百万人、科普作品发行量百万人、科普产业化(科普示范基地数百万人)等多项指标。经过主成分分析计算,最后确定个或个主成分作为综合评价科普产品利用和开发的综合指标,变量数减少,并达到一定的可信度,就容易进行科普效果的评估。 [编辑] 主成分分析法的基本原理 主成分分析法是一种降维的统计方法,它借助于一个正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机向量,这在代数上表现为将原随机向量的协方差阵变换成对角形阵,在几何上表现为将原坐标系变换成新的正交坐标系,使之指向样本点散布最开的p 个正交方向,然后对多维变量系统进行降维处理,使之能以一个较高的精度转换成低维变量系统,再通过构造适当的价值函数,进一步把低维系统转化成一维系统。 [编辑] 主成分分析的主要作用

matlab主成分分析案例

1.设随机向量X=(X 1,X 2,X 3)T 的协方差与相关系数矩阵分别为 ???? ??=∑25441,??? ? ??=18.08.01R 分别从∑,R 出发,求X 的各主成分以及各主成分的贡献率并比较差异况。 解答: >> S=[1 4;4 25]; >> [PC,vary,explained]=pcacov(S); 总体主成分分析: >> [PC,vary,explained]=pcacov(S) 主成分交换矩阵: PC = -0.1602 -0.9871 -0.9871 0.1602 主成分方差向量: vary = 25.6491 0.3509 各主成分贡献率向量 explained = 98.6504 1.3496 则由程序输出结果得出,X 的主成分为: Y 1=-0.1602X 1-0.9871X 2 Y 2=-0.9871X 1+0.1602X 2 两个主成分的贡献率分别为:98.6504%,1.3496%;则若用第一个主成分代替原来的变量,信息损失率仅为1.3496,是很小的。 2.根据安徽省2007年各地市经济指标数据,见表5.2,求解: (1)利用主成分分析对17个地市的经济发展进行分析,给出排名; (2)此时能否只用第一主成分进行排名?为什么?

解答: (1) >> clear >> A=[491.70,380.31,158.39,121.54,22.74,439.65,344.44,17.43; 21.12,30.55,6.40,12.40,3.31,21.17,17.71,2.03; 1.71, 2.35,0.57,0.68,0.13,1.48,1.36,-0.03; 9.83,9.05,3.13,3.43,0.64,8.76,7.81,0.54; 64.06,77.86,20.63,30.37,5.96,63.57,52.15,4.71; 30.38,46.90,9.19,9.83,17.87,28.24,21.90,3.80; 31.20,70.07,8.93,18.88,33.05,31.17,26.50,2.84; 79.18,62.09,20.78,24.47,3.51,71.29,59.07,6.78; 47.81,40.14,17.50,9.52,4.14,45.70,34.73,4.47; 104.69,78.95,29.61,25.96,5.39,98.08,84.81,3.81; 21.07,17.83,6.21,6.22,1.90,20.24,16.46,1.09; 214.19,146.78,65.16,41.62,4.39,194.98,171.98,11.05; 31.16,27.56,8.80,9.44,1.47,28.83,25.22,1.05; 12.76,14.16,3.66,4.07,1.57,11.95,10.24,0.73; 6.45,5.37,2.39,2.20,0.40,5.97,4.79,0.52; 39.43,44.60,15.17,15.72,3.27,36.03,27.87,3.48; 5.02,3.62,1.63,1.42,0.53,4.45,4.04,0.02]; 得到的相关系数矩阵为: >> R=corrcoef(A) R = 1.0000 0.9877 0.9988 0.9820 0.4281 0.9999 0.9980 0.9510

主成分分析matlab源程序代码

263.862 1.61144 2.754680.266575 268.764 2.07218 2.617560.182597 261.196 1.59769 2.350370.182114 248.708 2.09609 2.852790.257724 253.365 1.69457 2.94920.189702 268.434 1.56819 2.781130.13252 258.741 2.14653 2.691110.136469 244.192 2.02156 2.226070.298066 219.738 1.61224 1.885990.166298 244.702 1.91477 2.259450.187569 245.286 2.12499 2.352820.161602 251.96 1.83714 2.535190.240271 251.164 1.74167 2.629610.211887 251.824 2.00133 2.626650.211991 257.68 2.14878 2.656860.203846] stdr=std(dataset);%求个变量的标准差 [n,m]=size(dataset);%定义矩阵行列数 sddata=dataset./stdr(ones(n,1),:);%将原始数据采集标准化 sddata%输出标准化数据 [p,princ,eigenvalue,t2]=princomp(sddata);%调用前三个主成分系数 p3=p(:,1:3);%提取前三个主成分得分系数,通过看行可以看出对应的原始数据的列,每个列在每个主成分的得分 p3%输出前三个主成分得分系数 sc=princ(:,1:3);%提取前三个主成分得分值 sc%输出前三个主成分得分值 e=eigenvalue(1:3)';%提取前三个特征根并转置 M=e(ones(m,1),:).^0.5;%输出前三个特征根并转置 compmat=p3.*M;%利用特征根构造变换矩阵 per=100*eigenvalue/sum(eigenvalue);%求出成分载荷矩阵的前三列 per %求出各主成分的贡献率 cumsum(per);%列出各主成分的累积贡献率 figure(1) pareto(per);%将贡献率绘成直方图 t2 figure(2) %输出各省与平局距离 plot(eigenvalue,'r+');%绘制方差贡献散点图 hold on %保持图形 plot(eigenvalue,'g-');%绘制方差贡献山麓图

主成分分析法的步骤和原理

主成分分析(Principal Component Analysis)是利用降维的思想,将多个变量转化为少数几个综合变量(即主成分),其中每个主成分都是原始变量的线性组合,各主成分之间互不相关,从而这些主成分能够反映始变量的绝大部分信息,且所含的信息互不重叠。[2] 采用这种方法可以克服单一的财务指标不能真实反映公司的财务情况的缺点,引进多方面的财务指标,但又将复杂因素归结为几个主成分,使得复杂问题得以简化,同时得到更为科学、准确的财务信息。 (二)主成分分析法代数模型 假设用p个变量来描述研究对象,分别用X 1,X 2 …X p 来表示,这p个变量构 成的p维随机向量为X=(X 1,X 2 …X p )t。设随机向量X的均值为μ,协方差矩阵为 Σ。假设 X 是以 n 个标量随机变量组成的列向量,并且μk 是其第k个元素的期望值,即,μk= E(xk),协方差矩阵然后被定义为: Σ=E{(X-E[X])(X-E[X])}=(如图 对X进行线性变化,考虑原始变量的线性组合: Z1=μ11X1+μ12X2+…μ1p X p Z2=μ21X1+μ22X2+…μ2p X p ……………… Z p=μp1X1+μp2X2+…μpp X p 主成分是不相关的线性组合Z 1,Z 2 ……Z p ,并且Z 1 是X1,X2…X p的线性组合 中方差最大者,Z 2是与Z 1 不相关的线性组合中方差最大者,…,Z p是与Z 1 ,Z 2 …… Z p-1 都不相关的线性组合中方差最大者。 (三)主成分分析法基本步骤 第一步:设估计样本数为n,选取的财务指标数为p,则由估计样本的原始 数据可得矩阵X=(x ij ) m×p ,其中x ij 表示第i家上市公司的第j项财务指标数据。 第二步:为了消除各项财务指标之间在量纲化和数量级上的差别,对指标数据进行标准化,得到标准化矩阵(系统自动生成)。 第三步:根据标准化数据矩阵建立协方差矩阵R,是反映标准化后的数据之

主成分分析方法及matlab运用解释

主成分分析方法 在许多实际问题中,多个变量之间就是具有一定的相关关系的。因此,我们就会很自然地想到,能否在各个变量之间相关关系研究的基础上,用较少的新变量代替原来较多的变量,而且使这些较少的新变量尽可能多地保留原来较多的变量所反映的信息?事实上,这种想法就是可以实现的,这里介绍的主成分分析方法就就是综合处理这种问题的一种强有力的方法。 一、主成分分析的基本原理 主成分分析就是把原来多个变量化为少数几个综合指标的一种统计分析方法,从数学角度来瞧,这就是一种降维处理技术。假定有n 个地理样本,每个样本共有p 个变量描述,这样就构成了一个n×p 阶的地理数据矩阵: 111212122212p p n n np x x x x x x X x x x ???=????L L L L L L L (1) 如何从这么多变量的数据中抓住地理事物的内在规律性呢?要解决这一问题,自然要在p 维空间中加以考察,这就是比较麻烦的。为了克服这一困难,就需要进行降维处理,即用较少的几个综合指标来代替原来较多的变量指标,而且使这些较少的综合指标既能尽量多地反映原来较多指标所反映的信息,同时它们之间又就是彼此独立的。那么,这些综合指标(即新变量)应如何选取呢?显然,其最简单的形式就就是取原来变量指标的线性组合,适当调整组合系数,使新的变量指标之间相互独立且代表性最好。 如果记原来的变量指标为x 1,x 2,…,x p ,它们的综合指标——新变量指标为z 1,z 2,…,zm(m≤p)。则 11111221221122221122,,......................................... ,p p p p m m m mp p z l x l x l x z l x l x l x z l x l x l x =+++??=+++????=+++?L L L (2) 在(2)式中,系数l ij 由下列原则来决定: (1)z i 与z j (i≠j ;i,j=1,2,…,m)相互无关; (2)z 1就是x 1,x 2,…,x p 的一切线性组合中方差最大者;z 2就是与z 1不相关的x 1,x 2,…,x p 的所有线性组合中方差最大者;……;z m 就是与z 1,z 2,……z m-1都不相关的x 1,x 2,…,x p 的所有线性组合中方差最大者。 这样决定的新变量指标z 1,z 2,…,zm 分别称为原变量指标x 1,x 2,…,x p 的第一,第二,…,第m 主成分。其中,z 1在总方差中占的比例最大,z 2,z 3,…,z m 的方差依次递减。在实际问题的分析中,常挑选前几个最大的主成分,这样既减少了变量的数目,又抓住了主要矛盾,简化了变量之间的关系。 从以上分析可以瞧出,找主成分就就是确定原来变量x j (j=1,2,…,p)在诸主成分z i (i=1,2,…,m)上的载荷l ij (i=1,2,…,m;j=1,2,…,p),从数学上容易知道,它们分别就是x 1,x 2,…,x p 的相关矩阵的m 个较大的特征值所对应的特征向量。 二、主成分分析的计算步骤 通过上述主成分分析的基本原理的介绍,我们可以把主成分分析计算步骤归纳如

相关文档
最新文档