文档库 最新最全的文档下载
当前位置:文档库 › 主成分分析法例子与matlab中的应用

主成分分析法例子与matlab中的应用

主成分分析法例子与matlab中的应用
主成分分析法例子与matlab中的应用

主成分分析法例子与matlab 中的应运

可联系我邮箱 beautybaoji@https://www.wendangku.net/doc/c97815151.html,

1.概述

主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。在实证问题研究中,为了全面、系统地分析问题,我们必须考虑众多影响因素。这些涉及的因素一般称为指标,在多元统计分析中也称为变量。因为每个变量都在不同程度上

反映了所研究问题的某些信息,并且指标之间彼此有一定的相关性,因而所得的统计数据反映的信息在一定程度上有重叠。在用统计方法研究多变量问题时,变量太 多会增加计算量和增加分析问题的复杂性,人们希望在进行定量分析的过程中,涉及的变量较少,得到的信息量较多。

1.1主成分分析计算步骤

① 计算相关系数矩阵

???????????

???=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

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,即11

2=∑=p

j ij e ,其

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

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

),,2,1(1

p i p

k k

i

=∑=λ

λ

累计贡献率为

)

,,2,1(1

1p 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)

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

?????

?

???

???=nm n n m

m z z z z z z z z z Z

2

1

22221

11211

(4)

2.算法与例子

.2.1程序结构的实现

我们用以下函数来实现。(matlab 的函数)

cwstd ——用总和标准化法标准化矩阵 cwstd ——计算相关系数矩阵;如

A=[1 2 3;4 0 -1;1 3 9] A = 1 2 3 4 0 -1 1 3 9

>> C1=corrcoef(A) %求矩阵A 的相关系数矩阵 C1 =

1.0000 -0.9449 -0.8030 -0.9449 1.0000 0.9538 -0.8030 0.9538 1.0000

eig(A)%——计算相关系数矩阵特征值和特征向量;

A=[1 2 3; 4 5 6; 7 8 9]

[V,D]=eig(A)%

输入到matlab中可得到特征值与特征向量。

2.2 . 用模型解决问题

1.首先,我们可以知道09年到目前,17次调价时6个变量的指标,原油价格;石油进口量;石油出口量;国家生产石油量;CPI ,油轮运费系数。

17 次调价时的各项数据列表如下(可忽略其单位)

原油价格进口量出口量油轮运价指数CPI 国家生产

2009.01.15. 40.16 1282 47 611 101 1431.83

2009.01.16. 52.01 1634 45 395 98.8 1582.29

2009.01.17. 65.32 1709 47 479 98.6 1603.17

2009.01.18. 70.12 1661 30 465 98.3 1571.37

2009.01.19. 68.24 1963 43 450 98.2 1614.31

2009.01.20. 69 1847 55 449 98.8 1632.21

2009.01.21. 67.38 1720 39 519 99.2 1572.36

2009.01.22. 77.45 1934 42 437 100.6 1606.2

2009.01.23. 84.5 2117 19 676 102.8 1626.2

2009.01.24. 72.16 2227 13 669 102.6 1715.3

2009.01.25. 81.7 1639 26 635 103.6 1775.5

2009.01.26. 90.8 2086 24 638 105.2 1989.4

2009.01.27. 96.7 1995 8 643 105.4 2011.5

2009.01.28. 116.6 2154 34 823 105.3 2355.9

2009.01.29. 93.8 2080 33 710 105.3 2543.6

2009.01.30. 107.7 2304 30 655 103.2 2641.3

2009.01.31. 116.8 2354 31 653 103.6 2671.4

2. 用以上方法计算的:得标准化矩阵;

A = 0.0114 0.3649 0.0134 0.1739 0.0288 0.4076

0.0137 0.4292 0.0118 0.1038 0.0260 0.4156

0.0163 0.4270 0.0117 0.1197 0.0246 0.4006

0.0180 0.4264 0.0077 0.1194 0.0252 0.4034

0.0161 0.4633 0.0101 0.1062 0.0232 0.3810

0.0166 0.4450 0.0132 0.1082 0.0238 0.3932

0.0168 0.4282 0.0097 0.1292 0.0247 0.3914

0.0185 0.4608 0.0100 0.1041 0.0240 0.3827

0.0183 0.4577 0.0041 0.1461 0.0222 0.3516

0.0150 0.4640 0.0027 0.1394 0.0214 0.3574

0.0192 0.3847 0.0061 0.1490 0.0243 0.4167

0.0184 0.4228 0.0049 0.1293 0.0213 0.4033

0.0199 0.4105 0.0016 0.1323 0.0217 0.4139

0.0209 0.3854 0.0061 0.1473 0.0188 0.4215

0.0169 0.3737 0.0059 0.1276 0.0189 0.4570

0.0184 0.3944 0.0051 0.1121 0.0177 0.4522

0.0197 0.3970 0.0052 0.1101 0.0175 0.4505 3.进一步求的相关系数矩阵

C1 =

1.0000 -0.0624 -0.6109 -0.1570 -0.6588 0.2349

-0.0624 1.0000 0.0616 -0.4653 0.1704 -0.8001

-0.6109 0.0616 1.0000 -0.1884 0.6860 -0.0880

-0.1570 -0.4653 -0.1884 1.0000 0.2080 -0.1389

-0.6588 0.1704 0.6860 0.2080 1.0000 -0.4573

0.2349 -0.8001 -0.0880 -0.1389 -0.4573 1.0000

4.求相关系数矩阵的特征向量和特征值。

特征向量V =

0.0487 -0.0423 0.8196 -0.0617 -0.2994 0.4802

0.6679 -0.0318 -0.1127 -0.0171 -0.6712 -0.2990

0.0757 -0.6238 0.3530 0.4636 0.2375 -0.4574

0.4049 -0.2937 0.0696 -0.7481 0.4302 -0.0136

0.0633 0.6821 0.4247 -0.0653 0.2064 -0.5509

0.6147 0.2379 -0.0756 0.4659 0.4192 0.4087

特征值D =

0.0000 0 0 0 0 0

0 0.1564 0 0 0 0

0 0 0.3691 0 0 0 0 0 0 1.1979 0 0 0 0 0 0 1.6958 0 0 0 0 0 0 2.5809 5. 特征值及主成分贡献率

一般取累计贡献率达85—95%的特征值123,,λλλ,

主成分分析法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)

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 =

主成分分析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=

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 中实现主成分分析可以采取两种方式实现:一是通过编程来

主成分分析实施报告matlab程序

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

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

主成分分析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-');%绘制方差贡献山麓图

主成分分析方法及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 个较大的特征值所对应的特征向量。 二、主成分分析的计算步骤 通过上述主成分分析的基本原理的介绍,我们可以把主成分分析计算步骤归纳如

主成分分析和MATLAB应用

主成分分析 类型:一种处理高维数据的方法。 降维思想:在实际问题的研究中,往往会涉及众多有关的变量。但是,变量太多不但会增加计算的复杂性,而且也会给合理地分析问题和解释问题带来困难。一般说来,虽然每个变量都提供了一定的信息,但其重要性有所不同,而在很多情况下,变量间有一定的相关性,从而使得这些变量所提供的信息在一定程度上有所重叠。因而人们希望对这些变量加以“改造”,用为数极少的互补相关的新变量来反映原变量所提供的绝大部分信息,通过对新变量的分析达到解决问题的目的。 一、总体主成分 1.1 定义 设 X 1,X 2,…,X p 为某实际问题所涉及的 p 个随机变量。记 X=(X 1,X 2,…,Xp)T ,其协方差矩阵为 ()[(())(())],T ij p p E X E X X E X σ?∑==-- 它是一个 p 阶非负定矩阵。设 1111112212221122221122T p p T p p T p p p p pp p Y l X l X l X l X Y l X l X l X l X Y l X l X l X l X ?==+++? ==+++?? ??==+++? (1) 则有 ()(),1,2,...,, (,)(,),1,2,...,. T T i i i i T T T i j i j i j Var Y Var l X l l i p C ov Y Y C ov l X l X l l j p ==∑===∑= (2) 第 i 个主成分: 一般地,在约束条件 1T i i l l = 及 (,)0,1,2,..., 1. T i k i k C ov Y Y l l k i =∑==- 下,求 l i 使 Var(Y i )达到最大,由此 l i 所确定的 T i i Y l X = 称为 X 1,X 2,…,X p 的第 i 个主成分。 1.2 总体主成分的计算 设 ∑是12(,,...,)T p X X X X =的协方差矩阵, ∑的特征值及相应的正交单位化特征向量分别为 120p λλλ≥≥≥≥ 及 12,,...,,p e e e 则 X 的第 i 个主成分为

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的实现

MATLAB 结 课 作 业 指导老师:张肃 班级:信管121 姓名:桂亚东 学号:4118

利用Matlab 编程实现主成分分析 概述 Matlab 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是 最有活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言的便捷接口的功能。Matlab 语言在各国高校与研究单位起着重大的作用。主成分分析是把原来多个变量划为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。 主成分分析计算步骤 ① 计算相关系数矩阵 ??????? ???? ???=pp p p p p r r r r r r r r r R ΛM M M M ΛΛ212222111211 (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) 得到各主成分的载荷以后,还可以按照(3.5.2)式进一步计算,得到各主成分的得分

matlab中主成分分析的函数1

matlab中主成分分析的函数 1.princomp函数 功能:主成分分析 格式:PC=princomp(X) [PC,SCORE,latent,tsquare]=princomp(X) 说明:[PC,SCORE,latent,tsquare]=princomp(X)对数据矩阵(即样本观测值矩阵)X进行主成分分析,给出各主成分 (PC)、所谓的Z-得分(SCORE)、X的方差矩阵的特征值(latent)和每个数据点的服务霍特林(Hotelling)T2统计量(tsquare)。 2.pcacov函数 功能:运用协方差矩阵或相关系数矩阵进行主成分分析 格式:PC=pcacov(X) [PC,latent,explained]=pcacov(X) 说明:[PC,latent,explained]=pcacov(X)通过协方差矩阵X或相关系数矩阵进行主成分分析,返回主成分(PC)、协方差矩阵X的特征值(latent)和每个特征向量表征在观测量总方差中所占的百分数(explained)(即是主成分的贡献向量)。 3.pcares函数

功能:主成分分析的残差 格式:residuals=pcares(X,ndim) 说明:pcares(X,ndim)返回保留X的ndim个主成分所获的残差。注意,ndim是一个标量,用来指定所用的主成分的个数,必须小于X 的列数。而且,X是数据矩阵,而不是协方差矩阵。 4.barttest 功能:主成分的巴特力特检验 格式:ndim=barttest(X,alpha) [ndim,prob,chisquare]=barttest(X,alpha) 说明:巴特力特检验是一种等方差性检验。 ndim=barttest(X,alpha)是在显著性水平alpha下,给出满足数据矩阵X的非随机变量的n维模型,ndim即模型维数,它由一系列假设检验所确定,ndim=1表明数据X对应于每个主成分的方差是相同的;ndim=2表明数据X对应于第二成分及其余成分的方差是相同的。 例1:从样本观测值矩阵出发求解主成分 表中列出了2007年我国31个省、市、自治区和直辖市的农村居民家庭平均每人全年消费性支出的8个主要变量数据。数据文件保存在A.xls中。试根据这8个

9利用Matlab和SPSS实现主成分分析

§9. 利用Matlab 和SPSS 实现主成分分析 1.直接调用Matlab 软件实现 在软件Matlab 中实现主成分分析可以采取两种方式实现:一是通过编程来实现;二是直接调用Matlab 中自带程序实现。 通过直接调用Matlab 中的程序可以实现主成分分析: )(]2,var ,,[X princomp t iance score pc = 式中:X 为输入数据矩阵 ? ? ??? ???????=nm n n m m x x x x x x x x x X 2 1 22221 11211 (一般要求n>m ) 输出变量: ①pc 主分量f i 的系数,也叫因子系数;注意:pc T pc=单位阵 ②score 是主分量下的得分值;得分矩阵与数据矩阵X 的阶数是一致的; ③variance 是score 对应列的方差向量,即A 的特征值;容易计算方差所占的百分比 percent-v = 100*variance/sum(variance); ④t2表示检验的t2-统计量(方差分析要用) 计算过程中应用到计算模型:

ξ+????????????=??????????????m T p x x x A f f f 2121 (要求p

主成分分析法介绍

主成分分析方法 我们进行系统分析评估或医学上因子分析等时,多变量问题是经常会遇到的。变量太多,无疑会增加分析问题的难度与复杂性,而且在许多实际问题中,多个变量之间是具有一定的相关关系的。因此,我们就会很自然地想到,能否在各个变量之间相关关系研究的基础上,用较少的新变量代替原来较多的变量,而且使这些较少的新变量尽可能多地保留原来较多的变量所反映的信息事实上,这种想法是可以实现的,本节拟介绍的主成分分析方法就是综合处理这种问题的一种强有力的方法。 第一节 主成分分析方法的原理 主成分分析是把原来多个变量化为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。假定有n 样本,每个样本共有p 个变量描述,这样就构成了一个n×p 阶的数据矩阵: 11121212221 2 .....................p p n n np x x x x x x X x x x ?? ? ? = ? ? ??? (1)

如何从这么多变量的数据中抓住事物的内在规律性呢要解决这一问题,自然要在p 维空间中加以考察,这是比较麻烦的。为了克服这一困难,就需要进行降维处理,即用较少的几个综合指标来代替原来较多的变量指标,而且使这些较少的综合指标既能尽量多地反映原来较多指标所反映的信息,同时它们之间又是彼此独立的。那么,这些综合指标(即新变量)应如何选取呢显然,其最简单的形式就是取原来变量指标的线性组合,适当调整组合系数,使新的变量指标之间相互独立且代表性最好。 如果记原来的变量指标为p x x x ,,21Λ,它们的综合指标——新变量指标为Λ21,z z ,m z (m≤p)。则 )2.........(..........22112222121212121111??? ?? ? ?+++=+++=+++=p mp m m m p p p p x l x l x l z x l x l x l z x l x l x l z ΛΛ ΛΛΛΛΛΛΛΛΛΛΛΛΛ 在(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 的所有线性组合中方差最大者。

主成分分析matlab源程序代码

263.862 1.61144 2.75468 0.266575 268.764 2.07218 2.61756 0.182597 261.196 1.59769 2.35037 0.182114 248.708 2.09609 2.85279 0.257724 253.365 1.69457 2.9492 0.189702 268.434 1.56819 2.78113 0.13252 258.741 2.14653 2.69111 0.136469 244.192 2.02156 2.22607 0.298066 219.738 1.61224 1.88599 0.166298 244.702 1.91477 2.25945 0.187569 245.286 2.12499 2.35282 0.161602 251.96 1.83714 2.53519 0.240271 251.164 1.74167 2.62961 0.211887 251.824 2.00133 2.62665 0.211991 257.68 2.14878 2.65686 0.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-'); %绘制方差贡献山麓图

9利用Matlab和SPSS实现主成分分析

§9.利用Matlab 和SPSS 实现主成分分析 1.直接调用Matlab 软件实现 在软件Matlab 中实现主成分分析可以采取两种方式实现:一是通过编程来 实现;二是直接调用Matlab 中自带程序实现。 通过直接调用Matlab 中的程序可以实现主成分分析: [pc,score, variance,t2] = princomp (X) 式中:X 为输入数据矩阵 _x i x 1m x 2m Xnm -(一般要求 n>m ) ① pc 主分量f i 的系数,也叫因子系数;注意:pc T pc=单位阵 ② score 是主分量下的得分值;得分矩阵与数据矩阵 X 的阶数是一致的; ③ v arianee 是score 对应列的方差向量,即 A 的特征值;容易计算方差所占 的百分比 1 X 12 X 21 X 22 _Xni X n2 输出变量: perce nt-v = 100*varia nce/sum(varia nee); ④t2表示检验的t2-统计量(方差分析要用) 计算过程中应用到计算模型

例:表1为某地区农业生态经济系统各区域单元相关指标数据, 运用主成分 分析方法可以用更少的指标信息较为精确地描述该地区农业生态经济的发展状 况。 表1某农业生态经济系统各区域单元的有关数据 样本 序号 X 1:人口密度 2 (人/km ) X 2:人均耕 地面积(ha) X 3:森林覆 盖率(%) X 4:农民人 均纯收入(元 /人) X 5:人均粮 食产量(kg/ 人) X 6:经济作 物占农作物 播面比例 (%) X 7:耕地占 土地面积比 率(% ) X 8:果园与 林地面积之 比(%) X 9:灌溉田 占耕地面积 之比(%) 1 363.912 0.352 16.101 192.11 295.34 26.724 18.492 2.231 26.262 2 141.503 1.684 24.301 1 752.35 452.26 32.314 14.464 1.455 27.066 3 100.695 1.067 65.601 1 181.54 270.12 18.266 0.162 7.474 12.489 4 143.739 1.336 33.205 1 436.12 354.26 17.486 11.805 1.892 17.534 5 131.412 1.623 16.607 1 405.09 586.59 40.683 14.401 0.303 22.932 6 68.337 2.032 76.204 1 540.29 216.39 8.128 4.065 0.011 4.861 7 95.416 0.801 71.106 926.35 291.52 8.135 4.063 0.012 4.862 8 62.901 1.652 73.307 1 501.24 225.25 18.352 2.645 0.034 3.201 9 86.624 0.841 68.904 897.36 196.37 16.861 5.176 0.055 6.167 10 91.394 0.812 66.502 911.24 226.51 18.279 5.643 0.076 4.477 11 76.912 0.858 50.302 103.52 217.09 19.793 4.881 0.001 6.165 12 51.274 1.041 64.609 968.33 181.38 4.005 4.066 0.015 5.402 13 68.831 0.836 62.804 957.14 194.04 9.110 4.484 0.002 5.790 14 77.301 0.623 60.102 824.37 188.09 19.409 5.721 5.055 8.413 15 76.948 1.022 68.001 1 255.42 211.55 11.102 3.133 0.010 3.425 16 99.265 0.654 60.702 1 251.03 220.91 4.383 4.615 0.011 5.593 17 118.505 0.661 63.304 1 246.47 242.16 10.706 6.053 0.154 8.701 18 141.473 0.737 54.206 814.21 193.46 11.419 6.442 0.012 12.945 19 137.761 0.598 55.901 1 124.05 228.44 9.521 7.881 0.069 12.654 20 117.612 1.245 54.503 805.67 175.23 18.106 5.789 0.048 8.461 21 122.781 0.731 49.102 1 313.11 236.29 26.724 7.162 0.092 10.078 对于上述例子,Matlab 进行主成分分析,可以得到如下结果 ①以及每一个主成分的贡献率和累计贡献率,如表 2和图1 表2.特征根及主成分贡献率 ■f j [ x j f2 a T X2 I- =A Jp 一 1 x m (要求 p

相关文档
相关文档 最新文档