主成分分析方法和matlab函数中的princomp

来源:互联网 发布:域名符号有什么用 编辑:程序博客网 时间:2024/04/29 23:39

主成分分析方法

在许多实际问题中,多个变量之间是具有一定的相关关系的。因此,我们就会很自然地想到,能否在各个变量之间相关关系研究的基础上,用较少的新变量代替原来较多的变量,而且使这些较少的新变量尽可能多地保留原来较多的变量所反映的信息?事实上,这种想法是可以实现的,这里介绍的主成分分析方法就是综合处理这种问题的一种强有力的方法。

一、主成分分析的基本原理

主成分分析是把原来多个变量化为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。假定有n个地理样本,每个样本共有p个变量描述,这样就构成了一个n×p阶的地理数据矩阵:

1

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

如果记原来的变量指标为x1x2xp,它们的综合指标——新变量指标为z1z2zmm≤p)。则

2

在(2)式中,系数lij由下列原则来决定:

1)zizji≠jij=12m)相互无关;

2)z1x1x2xp的一切线性组合中方差最大者;z2是与z1不相关的x1x2xp的所有线性组合中方差最大者;……zm是与z1z2……zm-1都不相关的x1x2xp的所有线性组合中方差最大者。

这样决定的新变量指标z1z2zm分别称为原变量指标x1x2xp的第一,第二,,第m主成分。其中,z1在总方差中占的比例最大,z2z3zm的方差依次递减。在实际问题的分析中,常挑选前几个最大的主成分,这样既减少了变量的数目,又抓住了主要矛盾,简化了变量之间的关系。

从以上分析可以看出,找主成分就是确定原来变量xjj=12p)在诸主成分zii=12m)上的载荷liji=12mj=12p),从数学上容易知道,它们分别是x1x2xp的相关矩阵的m个较大的特征值所对应的特征向量。

二、主成分分析的计算步骤

通过上述主成分分析的基本原理的介绍,我们可以把主成分分析计算步骤归纳如下:

(1) 计算相关系数矩阵

3

在公式(3)中,rijij=12p)为原来变量xixj的相关系数,其计算公式为

 

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

2)计算特征值与特征向量

首先解特征方程|λI-R=0求出特征值λii=12p),并使其按大小顺序排列,即λ1≥λ2≥…≥λp≥0;然后分别求出对应于特征值λi的特征向量eii=12p)

(2) 计算主成分贡献率及累计贡献率

主成分贡献率:,累计贡献率:

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

(3) 计算主成分载荷

5

 

由此可以进一步计算主成分得分:

6

matlab:princomp解释

主成分分析函数:
[coeff,score,letent]=princomp(x);
供献率:每一维数据对于区分全部数据的供献,供献率最大的显然是主成分,第二大的是次主成分......

[coefscorelatentt2] = princompx;

x:为要输入的n维原始数据。带入这个matlab自带函数,将会生成新的n维加工后的数据(即score)。此数据与之前的n维原始数据一一对应。

score:生成的n维加工后的数据存在score里。它是对原始数据进行的解析,进而在新的坐标系下获得的数据。他将这n维数据按供献率由大到小分列。(即在改变坐标系的景象下,又对n维数据排序)

latent是一维列向量,每一个数据是对应score里响应维的供献率,因为数占领n维所以列向量有n个数据。由大到小分列(因为score也是按供献率由大到小分列)。

coef:是系数矩阵。经由过程coef可以知道x是如何转换成score的。但这个转换不是单纯的转换,必须使用下列计算方法,即score(:,i=coef*x(:,i-meanx(:,i))),这样才能得到。

用你的原矩阵x*coeff(:,1:n)才是你要的的新数据,其中的n是你想降到多少维。

n的取值取决于对特征值的累计贡献率的计算。

 

原创粉丝点击