搜档网
当前位置:搜档网 › MATLAB 主成分数据处理

MATLAB 主成分数据处理

MATLAB 主成分数据处理
MATLAB 主成分数据处理

第11章 主成分

主成分分析(principal component Analysis )又称主分量分析,是由皮尔逊

(pearson )于1901年首先引入,后来由霍特林(hotelling )于1933年进行了发展。主成分分析是一种通过降维技术把多个变量化为少数几个主成分(即综合变量)的多元统计方法,这些主成分能够反映原始变量的大部分信息,通常表示为原始变量的线性组合,为使得这些主成分所包含的信息互不重叠,要求各主成分之间互不相关。主成分分析在很多领域有着广泛的应用,一般来说,当研究的问题涉及很多变量,并且变量间相关性明显,即包含的信息有所重叠时,可以考虑用主成分分析的方法,这样容易抓住事物的主要矛盾,使得问题得到简化。

本章主要内容包括:主成分分析的理论简介,主成分分析的MATLAB 实现,主成分分析的主要具体案例。

11.1主成分分析简介

11.1.1主成分分析的几何意义 假设从二元总体

12(,)'x x x =中抽取容量为n 的样本,绘出样本观测值的散点图,如图11-1所

示。从图上可以看出,散点大致分布在一个椭圆内1x 与2x 呈现出明显的线性相关。这n 个样品

1x 轴方向和2x 方向具有相似的离散度,离散度可以用1x 和2x 包含了近视相等的信息量,丢掉其中任意一个变量,都会损失比较多的信息。图11-1中坐标按逆时针旋转一个角度θ,使得

1x 轴旋转到椭圆的长轴方向1y ,2x 轴旋转到椭圆的短轴2y ,则有

112212cos sin sin cos y x x y x x θθθθ

=+??

=-+? (11.1)

此时可以看到,n 个点在新坐标系下的坐标1y 和2y 几乎不相关,并且1y 的方差要比2y 的方

差大得多,也就是说1

y 包含了原始数据中大部分的信息,此时丢掉变量

2y ,信息的损失是比较

小的。这里称

1y 为第一主成分2y 为第二主成分。

主成分分析的过程其实就是坐标系旋转的过程,新坐标系的各个坐标系的轴的方向是原始数据变差最大的方向,各主成分表达式就是新旧坐标转换关系式。

11.1.2 总体的主成分

1从总体协方差矩阵出发求解主成分 设

'

(,,,)

p x x x x = 为一个p 维总体,假定

x 期望和协方差矩阵均存在并已知,记

()E x μ

=,var()

x =∑

,考虑如下线性变换

1111122112211222221122...'...'...'p p p m p

p p pp p p y a x a x a x a x y a x a x a x a x y a x a x a x a x

=+++=??

=+++=??

?

?=+++=?

其中,12,,,p a a a 均为单位向量。下面求1a ,使得1y 的方差达到最大。

设1

20p λλλ≥≥≥≥ 为∑

p

个特征值,12,,p

t t t

为相应的正交单位特征

向量,即

i i i

t t λ∑=,'1i

i t t =,'0

i j t t =,

i j ≠,,1,2,,i j p =

由矩阵知识可知

1

''

p

i i

i

i T T t t λ=∑=Λ=

其中12(,,)p T t t t = 为正交矩阵,Λ

是对角元素为12,,,p

λλλ 的对角矩阵。

考虑

1y 的方差

11111

11

var()var(')'var()'

'p

i

i i i y a x c x a a t t a λ====

22

111111

1

1

1(')(')''p

p

p i i i i i i i i a t a t a t t a λλλ===??

=

≤= ???

∑∑

1111111'''a TT a a a λλλ=== (11.3)

由式(11.3)可知,当1

1a t =时,11'y t x =的方差达到最大,最大值为1λ。称

11'y t x =为第一主成分。如果第一主成分从数据中提取的信息还不够多,还应考虑第二主

成分。下面求2a ,在12cov(,

)0

y y =条件下使得

2y 的方差达到最大。由

12121221121cov(,)cov(',')'''0y y t x a x t a a t a t λ==∑=∑==

可得21'0a

t =,于是

12222

2

1

var()var(')'var()'

'p

i

i i i y a x a x a a t t a λ====

2

2

2222221

1

1

(')(')''p p

p i

i i i i

i i i a t a t a t t a λ

λλ===??=

≤= ???

∑∑

∑ 2222222'''a TT a a a λλλ=== (11.4)

由式(11.4)可知,当2

2a t =时,22'y t x

=的方差达到最大,最大值为2λ。称

22'y t x =为第二主成分。类似的,在约束cov(,)0(1,2,,1)k i y y k i ==- 下可

得,当

i i a t =时'i i y t x =的方差达到最大,最大值为。i λ称'(1,2,,)i i y t x i p ==

为第i 主成分。 2主成分的性质

(1)主成分向量的协方差矩阵为对角阵 记

112212''(,,,)'''p p p y t x y t x y t t t x T x y t x ???? ? ? ? ?

=

=== ? ?

? ?

? ??

???

(11.5) 则

()(')'E y E T x T μ

==,var()

var(')'var()'y T x T x T T T ===∑=Λ

即主成分向量的协方差矩阵为对角矩阵。

(2)主成分的总方差等于原始变量的总方差: 设协方差矩阵()ij σ∑

=,则var()(1,2,,)i ij x i p σ== ,于是

1

1

1

1

var()()var()

p

p

p

p

i

i

ij

i

i i i i y

tr x

λ

σ

=====

=∑=

=

∑∑∑∑

由此可见,原始数据的总方差等于

p

个互不相关的主成分的方差之和,也就是说

p

个互不相关

的主成分包含了原始数据中的全部信息,但是主成分所包含的信息更为集中。

总方差中第i 个主成分

i y 的方差所占的比例1

(1,2,,)p

i j j i p λλ==∑ 称为主成分i y 的

贡献率。主成分的贡献率反映了主成分综合原始变量信息的能力,也可理解为解释原始变量的能

力。由贡献率定义知,

p

个主成分的贡献率依次递减,即综合原始变量信息的能力依次递减。第

一个主成分的贡献率最大,即第一个主成分综合原始变量信息的能力强。

()m m p ≤个主成分的贡献率之和1

1

p

m i

j

i j λλ==∑∑

称为前m 个主成分的累积

贡献率,它反映了前m 个主成分综合原始变量信息(或解释原始变量)的能力。由于主成分分析的主要目的是降维,所以需要在信息损失不太多的情况下,用少数几个主成分来代替原始变量

12,,,p

x x x ,以进行后续的分析,究竟用几个主成分来代替原始变量才合适呢?通常的

做法是取较小的m ,使得恰前m 个主成分的累积贡献率不低于某一水平(如85%以上),这样就达到了降维的目的。

(3)原始变量

i

x 与主成分

i y 之间的相关系数(,)

i i x y ρ

由式(11.5)可知

x Ty =于是

1122i i i ip p

x t y t y t y =+++ (11.6)

从而

cov(,)cov(,)cov(,)i i ij i j ij j j ij j x y t y y t y y t λ

===

cov(,)(,),,1,2,,i i ij x y x y t i j p

ρ=

=

=

(4)前m 个主成分对变量i

x 的贡献率

2

2

1

1

1

(,)m

m

i i j ij

j j ii

x y t ρλσ===

为前m 个主成分对变量i

x 的贡献率。这个贡献率反映了前m 个主成分从变量

i

x 中提取的信息的多少。由式(11.6)可知2

22

1122ii i i p ip t t t σλλλ=+++ ,固所有p 个主成分

对变量

i

x 的贡献率为

2

2

1

1

1

(,)1p

p

i i j ij j j ii

x y t ρλσ===

=∑

(5)原始变量对主成分i y 的贡献

主成分

i y 的表达式为

1122',1,2,,j j j j pj p y t t x t x t x j p ==+++=

ij

t 为第j 个主成分

j y 在第i

个原始变量

i

x 上的载荷,它反映了

i

x 对

j y 的重

要程度。在实际问题中,通常根据载荷

ij

t 解释主成分的实际意义。

3,从总体相关系数矩阵出发求解主成分

当总体各变量取值的单位或数量级不同时,从总体协方差矩阵出发求解主成分就显得不合适了,此时应将每个变量标准化。记标准化变量为

(),1,2,,x E x x

i p

*

-=

=

则可以从标准化总体

*

*

*

12(,,)'

p x x x x *

= 的协方差矩阵求解主成分,即从总体

x 的相关系数矩阵出发求解主成分,因为总体x *协方差矩阵就是x 的相关系数矩阵。

设总体x 的相关系数矩阵为R

,从R 出发求解主成分的步骤与从∑出发求解主成分的步骤

一样,设*

*

*

1

20p λλλ≥≥≥ 为R

p

个特征值,*

**

1

2,,,p

t t t 为相应的正交单位

特征向量。则

p

个主成分为

*

*

',1,2,,i i y t x i p *

== (11.7)

1

12***212''(,,,)''p p p y t x t x y y t t t x t x y ****

**

*

*

***???? ? ? ? ?=

==

? ? ? ? ? ???

?

? (11.8) 则有以下结论

()0E y *

=,****

12var()(,,,)p y

diag t t t *

=Λ=

*1

()p

i i tr R P λ===∑

*

*

**

*

cov(,)(,),,1,2,,i j ij x y x y i j p

ρ=

=

=

此时前m

个主成分的累积贡献率为

*1

1m

i

i p

λ

=∑。

11.1.3 样本的主成分

在实际生活问题中,总体

x 的协方差矩阵∑或相关系数矩阵R

往往是未知的,需要由样本

进行估计。设12,,,n x x x 为取自总体x 的样本,其中

12(,,,)'(1,2,,)i i i ip x x x x i n == 。记样本观测值矩阵为

11121212221

2

p p

n n np x x x x x x X x x x ??

? ?= ? ? ???

X 的每一行对应一个样品,每一列对应一个变量。记样本协方差矩阵和样本相关系数矩阵分别为

1

1

()()'()1

n

i

i ij i S x x x x s n ==

--=-∑

()ij R r ∧

=

,ij s r =

其中1

1

n

i

i x x n

==

∑为样本均值。将S 作为∑的估计,R ∧

作为R 的估计,从S 或R 出发可

求得样本的主成分

1.从样本协方差矩阵S 出发求解主成分

120

p

λλλ∧

∧≥≥≥ 为S 的

p

个特征值,

12,,,p

t t t

∧∧∧ 为相应的正交单位特征向

量,则样本的

p

个主成分为

',1,2,,i i y t x i p ∧

== (11.9) 将样品

i x 的观测值带入第

j 个主成分,称得到的值

',(1,2,,;1,2,,)

j ij y t x i n j p ∧

=== 为样品i x 的观测值带入第

j

主成分得

分。

从样本相关系数矩阵

R 出发求解主成分

设1

2

0p

λλλ∧∧∧***≥≥≥≥ 为R ∧

的p

个特征值,,,,12

p t t t ∧

∧∧

***

为相应的正交单位

特征向量,则样本的

p

个主成分为

',1,2,,i

i

y t x i p

∧∧***

== (11.10)

将样品

i x 标准化后的观测值i x 带入第

j 个主成分,即可得样品i

x

的第

j

主成分得分

',1,2,,;1,2,,ij

j

y t x i n j p

∧∧***

===

3,由主成分得分重建(恢复)原始数据

假定从样本协方差矩阵S 出发求解主成分,记Y ∧

为样本的主成分得分值矩阵,则

11

12

111

12121

222212221212

1

2

(,,,)p p p p p n n np n n np y y y x

x x x x x y y y Y t t t X T

x x x y y y ∧∧

∧∧

∧∧

∧∧∧

??

??

? ? ? ?

?=== ?

? ? ? ???

??

?

(11.11) 注意到T ∧

为正交矩阵,则有1

'T T ∧∧

-=,于是由式(11.11)可得'X Y T ∧∧

=,也就是说根据

主成分得分和主成分表达式,可以重建(恢复)原始数据,这在数据压缩与解压缩中有着重要的作用。当然在实际应用中,可能不会得到全部的p

个主成分,假定只用前

()m m p ≤个主成

分记样本的前m 个主成分的得分矩阵为

1112

121

22

212

p p m n n np y y L y y y L

y Y M M M y y L

y ∧

∧∧∧

∧∧∧

?? ? ? ?= ? ?

???

当前m 个主成分的累积贡献率达到一个比较高的水平时,由'm

m X Y

T ∧∧

=得到的矩阵m X 可

以作为原始样本观测值矩阵X 的一个很好的近视,此时m X X -为样本的残差,MATLAB 统计工

具箱中提供了重建数据和求残差的函数pcares 。若m Y ∧

和'T ∧

的数据量小于原始样本观测值矩阵X 的数据量,就能起到数据压缩的目的。

以上讨论的是从样本协方差矩阵S 出发求解主成分,然后由样本的主成分得分重建原始数据。

若从样本的相关系数矩阵R ∧

出发求解主成分,同样可以由样本的主成分得分重建原始数据,只是此时需要进行逆标准化变换,这里不再作详细讨论。

11.1.4关于主成分表达式的两点说明

这里需要说明的是,即使限定了方差矩阵或相关系数矩阵的p 个特征值对应的特征向量为正交单

位向量,它们也是不唯一的,从而主成分的表达式也是不唯一的,假如若'y t x =是总体或样本的一个主成分,则'y t x =-也是总体或样本的一个主成分。主成分表达式的不唯一对后续分析没有太大影响。

若第

p

个主成分的贡献率非常非常小,可认为第

p

个主成分p y 的方差var()0p y ≈,即

p y c =(c 为一个常数),这揭示了变量之间的一个共线性关系:'

p t x c =。

11.2 主成分分析的MATLAB 函数

与主成分相关的MATLAB 函数主要有pcacov,princomp 和pcares,下面分别介绍。 11.2.1 pcacov 函数

pcacov 函数用来根据协方差矩阵或相关系数矩阵进行主成分分析,其调用格式如下: COEFF=pacov(v)

[COEFF,latent]= pcacov(v)

[COEFF,latent,explained]=pcacov(v)

以上调用的输入参数V 是总体或样本的协方差矩阵或相关系数矩阵,对于p

维总体,V 是

p p ?的矩阵。输出参数COEFF 是

p

个主成分的系数矩阵,它是p p ?的矩阵,它的第i 列是

第i 个主成分的系数向量。输出参数latent 是p

个主成分的方差构成的列向量,即V 的

p

特征值(从大到小)构成的向量。输出参数explained 是

p

个主成分的贡献率向量,已经转化

为百分比。

11.2.2 princomp 函数

princomp 函数用来根据样本观测值矩阵进行主成分分析,其调用格式如下: 1)[COEFF,SCORE]=princomp(x)

根据样本观测值矩阵X 进行主成分分析。输入参数X 是n 行p 列的矩阵,每一行对应一个观测(样品),每一列对应一个变量。输出参数COEFF 是

p

个主成分的系数矩阵,它是p p ?的

矩阵,它的第i 列是第i 个主成分的系数向量。输出参数SCORE 是n 个样品的

p

个主成分的得

分矩阵,它是n 行p 列的矩阵,每一行对应一个观测值,每一列对应一个主成分,第i 行第j 列元素是i 个样品的第j 个主成分得分。

2)[COEFF,SCORE,latent]=princomp(x)

返回样本协方差矩阵的特征向量latent ,它是由p 个特征值构成的列向量,其中特征值按降序排列。

3)[COEFF,SCORE,latent,tsqure]=princomp(x)

返回一个包含p 个元素的列向量tsqure ,它的第i 个元素是第i 个观测对应的霍特林(Hotelling )2

T 统计量,描述了第i 个观测与数据集(样本观测矩阵)的中心之间的距离,可用来寻找远离中心的极端数据。

120

p

λλλ∧

∧≥≥≥ 为样本协方差矩阵的p 个特征值,并设第i 个样品的第j 个主成

分得分(1,2,,;1,2,,)ij y i n j p == ,则第i 个样品对应的(Hotelling )2

T 统计量为

2

2

1

,1,2,,p

ij

i j j

y T i n

λ

==

=∑

注意:princomp 函数对样本数据进行了中心化处理,即把X 中的每一个元素减去其所在列的均值,相应地,princomp 函数返回的主成分就是中心化的主成分得分。

当n p ≤,即观测的个数小于或等于维数时,SCORE 矩阵的第n 列到第p 列元素均为0,latent 第n 到第p 个元素均为0。

4)[...]=princomp(x,'econ')

通过设置'econ'参数,使得当n p ≤时,只返回latent 中的前n-1个元素(去掉不必要的0元素)及COEFF 和SCORE 矩阵中相应的列。

11.2.3 pcares 函数

在11.1.3节曾讨论过由样本的主成分得分重建(恢复)原始数据的问题,若只用前

()m m p ≤个主成分的得分来重建原始数据,则可能会有一定的误差,前面称之为残差。

MATLAB 统计工具箱中提供了pcares 函数,用来重建数据,并求样本观测值矩阵中每个观测的每一个分量所对应的残差,其调用格式如下:

residuals=pcares(x,ndim)

[residuals,reconstructed]=pcares(x,ndim)

上述调用中X 是n 行p 列的样本观测值矩阵,它的每一行对应一个观测(样品),每一列对应一个变量,ndim 参数用来指定所用的主成分的个数,它是一个小于或等于p 的正的标量,最好取为正整数。输出参数residuals 是一个与X 同样大小的矩阵,其元素为X 中相应元素所对应的残差。输出参数reconstructed 为用前ndim 个主成分的得分重建的观测数据,它是X 的一个近似。

注意:pcares 调用了 princomp 函数,它只能接受原始样本观测数据作为他的输入,并且它不会自动对数据作标准化变换,若需要对数据作标准化变换,可以先用zscore 函数将数据标准化,然后调用pcares 函数重建观测数据并求残差。若从协方差矩阵或相关系数矩阵出发求解主成分,请用pcacov 函数,此时无法重建观测数据和求残差。

11.3 案例32:从协方差矩阵或相关系数矩阵出发求解主成分

在制定服装标准的过程中,对128名成年男子的身材进行了测量,每日测了六项指标,身高(

1x ),座高(2x ),胸围(3x ),手臂长(4x ),肋围(5x )和腰围(6

x ),样本

相关系数矩阵如表11-1所列。试根据样本相关系数矩阵进行主成分分析。

13.3.1 调用pcacov 函数作主成分分析

对于本案例,调用pacov 函数作主成分分析的命令与结果如下: %定义相关系数矩阵PHO

PHO=[1 0.79 0.36 0.76 0.25 0.51 0.79 1 0.31 0.55 0.17 0.35 0.36 0.31 1 0.35 0.64 0.58 0.76 0.55 0.35 1 0.16 0.38 0.25 0.17 0.64 0.16 1 0.63

0.51 0.35 0.58 0.38 0.63 1];

%利用pacov函数根据相关系数矩阵作主成分分析,返回主成分分析表达式的系数矩阵COEFF,%返回相关系数矩阵的特征向量latent和主成分分析贡献率向量explained [COEFF,latent,explained]=pcacov(PHO)

>> [COEFF,latent,explained]=pcacov(PHO)

COEFF =

-0.4689 -0.3648 0.0922 -0.1224 -0.0797 0.7856

-0.4037 -0.3966 0.6130 0.3264 0.0270 -0.4434

-0.3936 0.3968 -0.2789 0.6557 0.4052 0.1253

-0.4076 -0.3648 -0.7048 -0.1078 -0.2346 -0.3706

-0.3375 0.5692 0.1643 -0.0193 -0.7305 -0.0335

-0.4268 0.3084 0.1193 -0.6607 0.4899 -0.1788

latent =

3.2872

1.4062

0.4591

0.4263

0.2948

0.1263

explained =

54.7867

23.4373

7.6516

7.1057

4.9133

2.1054

%为了更直观,以元胞数组形式显示结果

result1(1,:)={'特征值','差值','贡献率','累积贡献率'};

result1(2:7,1)=num2cell(latent);

result1(2:6,2)=num2cell(-diff(latent));

result1(2:7,3:4)=num2cell([explained,cumsum(explained)])

result1 =

'特征值' '差值' '贡献率' '累积贡献率'

[3.2872] [1.8810] [54.7867] [ 54.7867]

[1.4062] [0.9471] [23.4373] [ 78.2240]

[0.4591] [0.0328] [ 7.6516] [ 85.8756]

[0.4263] [0.1315] [ 7.1057] [ 92.9813]

[0.2948] [0.1685] [ 4.9133] [ 97.8946]

[0.1263] [] [ 2.1054] [ 100]

%以元胞数组形式显示前3个主成分表达式

>> s={'标准化变量';'x1:身高';'x2:座高';'x3:胸围';'x4:手臂长';'x5:肋围';'x6:腰围'};

>> result2(:,1)=s;

>> result2(1,2:4)={'prin1','prin2','prin3'};

>> result2(2:7,2:4)=num2cell(COEFF(:,1:3))

result2 =

'标准化变量' 'prin1' 'prin2' 'prin3'

'x1:身高' [-0.4689] [-0.3648] [ 0.0922]

'x2:座高' [-0.4037] [-0.3966] [ 0.6130]

'x3:胸围' [-0.3936] [ 0.3968] [-0.2789]

'x4:手臂长' [-0.4076] [-0.3648] [-0.7048]

'x5:肋围' [-0.3375] [ 0.5692] [ 0.1643]

'x6:腰围' [-0.4268] [ 0.3084] [ 0.1193]

为了结果看上去更加直观,上面定义了两个元胞数组:result1和result2,用result1存放特征值,贡献率和累积贡献率,用result2存放3个主成分表达式的系数数据,即COEFF 矩阵的前3列。这样做的目的仅是为了直观,读者也可以直接对pcacov 函数返回的结果进行分析。

11.3.2 结果分析

从result1的结果来看,前3个主成分的累积贡献率达到了85.8756%,因此可以用前3个主成分后续的分析i ;这样做虽然会有一定的信息损失,但损失不大,不影响大局。result2中列出了前3个主成分的相关结果,可知前3个主成分的表达式分别为

11234560.46890.40370.39360.40760.33750.4268y x x x x x x ******

=------

21234560.36480.39660.39680.36480.56920.3084y x x x x x x *

*

*

*

*

*

=--+-++

31234560.09220.61300.27890.70480.16430.1193y x x x x x x ******

=+--++

从第一主成分1y 的表达式来看,它在每个标准化变量上有近似的负载荷,说明每个标准化变量对1y 的重要性都差不多。当一个人的身材“五大三粗”,也就是说又高又胖时,1

x *

,2x *

L

,6x *都比较大,此时1y 的值就比较小,反之,当一个人又矮又瘦时1

x *

,2x *

,L

,6

x *

都比较小,此时1y 的值就比较大,所以可以认为第一主成分是身材的综合成分(或魁梧成

分)。

从第二主成分2y 的表达式来看,它在标准化变量1

x *

,2x *

,和4x *

上有近似的负载荷,在

3x *,5x *

6x *

上有近似的正载荷,说明当1

x *

2x *,和4x *

增大时,2y 的值减小,当3

x *

5

x *

,6x *

增大时,2y 的值增大。当一个人的身材瘦高时,2y 的值比较小,当一个人的身材矮胖

时,2y 的值比较大,所以可以认为第二主成分是身材的高矮和胖瘦的协调成分

从第三主成分3y 的表达式来看,它在标准化变量

2x *

上有比较大的正载荷,在4x *上有比较大

的负载荷,在其它变量上的载荷比较小,,说明2x *

(坐高)和4x *

(手臂长)对3y 的影响比较

大,也就是说3y 反映坐高(即上半身)与手臂长之间的协调关系,这对做长袖上衣时制定衣服和袖子的长短提供了参考。所以可认为第三主成分3y 是臂长成分

后3个主成分的贡献率比较小,分别只有7.1057%,4.9133%和2.1054%,可以不用对它们作出解释。最后一个主成分的贡献率非常小,它揭示了标准化变量之间的如下共线性关系

1234560.78560.44340.12530.37060.03350.1788x x x x x x c ******

-+--+-=

11.4 案例33:从样本观测值矩阵出发求解主成分

表11-2列出了2007年我国31个省,市,自治区和直辖市的农村居民家庭平均每人全年消费支出的8个主要变量数据。数据来源:中华人民共和国国家统计局网站,2008年《中国统计年鉴》。数据保存在文件 .xls 中,数据格式如表11-2所列,是根据这8个主要变量的观测数据,进行主成分分析

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

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=

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

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

实验一数据处理方法的MATLAB实现 一、实验目的 学会在MATLAB环境下对已知的数据进行处理。 二、实验方法 1. 求取数据的最大值或最小值。 2. 求取向量的均值、标准方差和中间值。 3.在MATLAB环境下,对已知的数据分别进行曲线拟合和插值。 三、实验设备 1.586以上微机,16M以上内存,400M硬盘空间,2X CD-ROM 2.MATLAB5.3以上含CONTROL SYSTEM TOOLBOX。 四、实验内容 1.在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 2.在MATLAB环境下,选择合适的曲线拟合和插值方法,编写程序,对已知的数据分别进行曲线拟合和插值。 五、实验步骤 1. 在MATLAB环境下,将已知的数据存到数据文件mydat.mat中。 双击打开Matlab,在命令窗口(command window)中,输入一组数据:实验一数据处理方法的MATLAB实现 一、实验目的 学会在MATLAB环境下对已知的数据进行处理。 二、实验方法 1. 求取数据的最大值或最小值。 2. 求取向量的均值、标准方差和中间值。 3.在MATLAB环境下,对已知的数据分别进行曲线拟合和插值。 三、实验设备 1.586以上微机,16M以上内存,400M硬盘空间,2X CD-ROM 2.MATLAB5.3以上含CONTROL SYSTEM TOOLBOX。 四、实验内容

1.在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 2.在MATLAB环境下,选择合适的曲线拟合和插值方法,编写程序,对已知的数据分别进行曲线拟合和插值。 五、实验步骤 1. 在MATLAB环境下,将已知的数据存到数据文件mydat.mat中。 双击打开Matlab,在命令窗口(command window)中,输入一组数据: x=[1,4,2,81,23,45] x = 1 4 2 81 2 3 45 单击保存按钮,保存在Matlab指定目录(C:\Program Files\MATLAB71)下,文件名为“mydat.mat”。 2. 在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 继续在命令窗口中输入命令: (1)求取最大值“max(a)”; >> max(x) ans = 81 (2)求取最小值“min(a)”; >> min(x) ans = 1 (3)求取均值“mean(a)”; >> mean(x) ans =

主成分分析和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运用解释

主成分分析方法 在许多实际问题中,多个变量之间就是具有一定的相关关系的。因此,我们就会很自然地想到,能否在各个变量之间相关关系研究的基础上,用较少的新变量代替原来较多的变量,而且使这些较少的新变量尽可能多地保留原来较多的变量所反映的信息?事实上,这种想法就是可以实现的,这里介绍的主成分分析方法就就是综合处理这种问题的一种强有力的方法。 一、主成分分析的基本原理 主成分分析就是把原来多个变量化为少数几个综合指标的一种统计分析方法,从数学角度来瞧,这就是一种降维处理技术。假定有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

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个

主成分分析法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)式进一步计算,得到各主成分的得分

主成分分析法介绍

主成分分析方法 我们进行系统分析评估或医学上因子分析等时,多变量问题是经常会遇到的。变量太多,无疑会增加分析问题的难度与复杂性,而且在许多实际问题中,多个变量之间是具有一定的相关关系的。因此,我们就会很自然地想到,能否在各个变量之间相关关系研究的基础上,用较少的新变量代替原来较多的变量,而且使这些较少的新变量尽可能多地保留原来较多的变量所反映的信息事实上,这种想法是可以实现的,本节拟介绍的主成分分析方法就是综合处理这种问题的一种强有力的方法。 第一节 主成分分析方法的原理 主成分分析是把原来多个变量化为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。假定有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 的所有线性组合中方差最大者。

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

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

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

相关主题