matlab主成分分析案例

合集下载

主成分分析matlab理论+实验

主成分分析matlab理论+实验
x2
x1
若将该坐标系按逆时针方向旋转某个角度θ变成新坐标系,变 换公式为
Y1 X 1 cos X 2 sin Y2 X 1 sin X 2 cos
y2 x2
y1
x1
记x1,x2,…,xP为原变量指标,z1,z2,…,zm(m<p)为新
变量指标
z1 a11 x1 a12 x2 L a1 p x p z2 a21 x1 a22 x2 L a2 p x p ............ z a x a x L a x m1 1 m2 2 mp p m
七. 主成分分析的应用
1. 综合评价 进行综合评价时,如何选择评价指标以及对这些指标进 行综合评价?一般做法是通过对各指标加权的办法。 由于主成分分析能从选定的指标体系中归纳出大部分信 息,根据主成分提供的信息进行综合评价,不失为一个可行 的选择。
利用主成分进行综合评价时,对主成分进行加权综合, 权数根据其方差贡献率确定 。
例5-3 用Matlab自带数据进行主成分分析,数据文件. hald文件包含影响温度的4个因素,保存在ingredients变量 中。代码见5.3.m
第一步:考虑变量之间相关性 load hald %载入Matlab 自带的数据文件 corrcoef(ingredients) % 自变量相关系数矩阵 ans = 1.0000 0.2286 -0.8241 -0.2454 0.2286 1.0000 -0.1392 -0.9730 -0.8241 -0.1392 1.0000 0.0295 -0.2454 -0.9730 0.0295 1.0000 第二步:主成分分析 [pc,score,latent,tsquare]=princomp(ingredients)

基于Matlab的中药主成分分析数学实验教学案例

基于Matlab的中药主成分分析数学实验教学案例

基于Matlab的中药主成分分析数学实验教学案例作者:董鸽闵建中陈立范王宏杰来源:《现代商贸工业》2021年第34期摘要:本文探讨医学院校数学实验课教学内容与专业相结合的教学案例。

以中药专业为例,介绍了中药专业中常用的主成分分析的统计方法,对10批三黄片样品的成分含量进行主成分分析,运用Matlab7.0软件进行计算,给出各主成分与原始成分的线性表达式和因子载荷阵,分析各主成分与原始成分的关联程度以及各主成分在原始成分中所产生的作用,最后运用综合评价函数计算10批样品的F值,根据F值大小进行排序,对10批样品进行综合评价。

关键词:数学实验;案例分析;Matlab;主成分分析中图分类号:G4文献标识码:Adoi:10.19311/ki.1672-3198.2021.34.068高等数学是许多医学专业的必修课程,但理论性强,与专业知识衔接不够紧密。

数学实验课程是联系高等数学理论知识与专业实际应用的桥梁,提高学生对高等数学知识的应用能力和计算机技术应用能力,培养学生的科研精神、创新意识和实际操作能力。

在医学院校中开始数学实验课,课程内容的选择非常重要,不同的专业对数学知识的需求也不尽相同,因此数学实验的内容也要跟着进行相应调整。

以中药专业为例,我们在基础知识的基础上,选择了与中药数理统计的案例,由于篇幅限制,我们仅举例主成分分析模块的数学实验教学案例。

1主成分分析的步骤主成分分析是一种降维数据处理的方法,在人脸数据识别、基因数据列分析、食品成分分析、中药成分分析等方面有着重要应用。

主成分分析的具体步骤如下:(1)设原始数据的样本个数为n,有m个观测指标X1,X2,…,X m,其中X j=(x1j,x2j,…,x nj)T,j=1,…,m,记矩阵X=(X1,X2,…,X m),欲寻找可以概括m个观测指标综合信息的综合指标Z1,Z2,…,Z m,满足线性组合。

Z i=a1i X1+a2i X2+…+a mi X m,i=1,…,m,(1)其中:a1i,a2i,…,a mi为常数,i=1,…,m。

matlab主成分分析案例

matlab主成分分析案例

1•设随机向量X= (X i , X 2, X 3)T 的协方差与相关系数矩阵分别为1 4,R4 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 11.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 =0.9877 1.0000 0.9884 0.9947 0.5438 0.9885 0.9835 0.94850.9988 0.9884 1.0000 0.9824 0.4294 0.9984 0.9948 0.94620.9820 0.9947 0.9824 1.0000 0.5051 0.9829 0.9763 0.93910.4281 0.5438 0.4294 0.5051 1.0000 0.4311 0.4204 0.45570.9999 0.9885 0.9984 0.9829 0.4311 1.0000 0.9986 0.95300.9980 0.9835 0.9948 0.9763 0.4204 0.99861.0000 0.95690.9510 0.9485 0.9462 0.9391 0.4557 0.9530 0.9569 1.0000计算特征值与特征向量:>> [v,d]=eig(corrcoef(A))V 一-0.3723 0.1179 0.1411 -0.2543 -0.0459 0.5917 -0.5641 0.3041-0.3741 -0.0343 0.1606 0.2247 -0.1514 -0.6284 -0.1535 0.5841-0.3719 0.1152 0.1957 -0.1954 -0.6909 -0.1351 0.0383 -0.5244-0.3713 0.0096 0.2368 0.7875 0.2168 0.2385 0.0303 -0.2845-0.1949 -0.9689 -0.0004 -0.1242 0.0119 0.0628 0.0151 -0.0593-0.3725 0.1143 0.1222 -0.2302 0.0924 0.2259 0.7946 0.2988-0.3716 0.1272 0.0353 -0.3800 0.6591 -0.3521 -0.1557 -0.3428-0.3613 0.0596 -0.9185 0.1165 -0.0872 0.0302 0.0022 -0.0096d =7.11350 00 00 0 0.77700.08100 0.02370 0.00410 0 0 0 0.00000 0 0.0001各主成分贡献率:>> w=sum(d)/sum(sum(d))计算各个主成分得分:>> F=[A-ones(17,1)*mean(A)]*v(:,8)224.3503 -24.0409 -40.0941 -35.9075 4.7573 -12.6102 -2.85731.8038 -13.9012 13.4541 -29.3847 62.3383 -23.3175 -32.4285 -38.1309 -14.8637 -39.1675>> [F1,I1]=sort(F,'descend')F1按从大到小的顺序给个主成分得分排名: F1 = 224.35030.8892 0.0971 0.0000 0.00000.0101 0.0030 0.0005 0.00010.000662.338313.45414.75731.8038 -2.8573 12.6102 13.9012 14.8637 23.3175 24.0409 29.3847 32.4285 35.9075 38.1309 39.1675 -40.0941I1 给出各个名次的序号:I1 =1121058769161321114415173 >> [F2,I2]=sort(I1)F2 =34567891011121314151617I2 给出个城市排名,即所求排名:I2 =1111714476583122101315916(2)由于第一主成分的贡献率大于80%,其他各成分贡献率都太小,所以只能用第一主成分进行排名。

稳健主成分 matlab

稳健主成分 matlab

稳健主成分 matlab稳健主成分分析(Robust Principal Component Analysis, RPCA)是一种用于处理含有异常值或噪声的数据的降维方法。

它能够通过将数据拆分为一个低秩矩阵和一个稀疏矩阵的组合来提取出数据的主要特征。

在MATLAB中,可以使用`robrpca`函数来进行稳健主成分分析。

该函数的基本语法如下:```matlab[L, S] = robrpca(X, lambda, maxIter, tol)```其中,`X`是输入的数据矩阵,`lambda`是一个正则化参数,`maxIter`是最大迭代次数,`tol`是收敛阈值。

函数的输出是一个低秩矩阵`L`和一个稀疏矩阵`S`,分别表示数据矩阵的主要成分和异常值。

以下是一个使用`robrpca`函数进行稳健主成分分析的示例:```matlab% 生成含有异常值的数据X = randn(100, 50);X(10, 10) = 10; % 添加一个异常值% 进行稳健主成分分析[L, S] = robrpca(X, 1, 100, 1e-6);% 显示结果subplot(1, 2, 1);imagesc(L);title('Low-rank Matrix');subplot(1, 2, 2);imagesc(S);title('Sparse Matrix');```该示例中,首先生成一个大小为100x50的随机数据矩阵,并在其中添加一个异常值。

然后使用`robrpca`函数对数据进行稳健主成分分析,并将结果分别显示在两个子图中。

需要注意的是,稳健主成分分析方法的运行时间可能较长,特别是在处理大规模数据时。

因此,在实际应用中,可能需要适当调整`maxIter`和`tol`参数的值来平衡运行时间和结果精度。

主成分分析(PCA)算法介绍及matlab实现案例

主成分分析(PCA)算法介绍及matlab实现案例

主成分分析(PCA)算法介绍及matlab实现案例主成分分析经常被⽤做模型分类时特征的降维,本篇⾸先介绍PCA的步骤,并根据步骤撰写对应的MATLAB代码,最后指明使⽤PCA的步骤。

我们在做分类时,希望提取的特征能够最⼤化将数据分开,如果数据很紧密,模型就⽐较难将其分开,如果数据⽐较离散,那么就⽐较容易分开,换句话说,数据越离散,越容易分开。

那怎么让数据离散呢?离散⼜⽤什么指标衡量呢?统计学的知识告诉我们,数据越离散,⽅差越⼤。

因此,PCA的问题就变为:寻找⼀个坐标轴,使得数据在该坐标轴上⾯离散度最⾼。

也就是寻找⼀个基使得所有数据在这个基上⾯的投影值的⽅差最⼤。

那具体怎么做呢?科学家们已经帮我们做好了,如下步骤:设有m个样本,每个样本有n个特征,组成m⾏n列的矩阵1)将每⼀列特征进⾏均值化处理,特征归⼀化,也称为数据中⼼平移到坐标原点2)求取协⽅差矩阵3)求取协⽅差矩阵的特征值和特征向量4)将特征向量按对应特征值⼤⼩从上到下按⾏排列成矩阵,取前K列组成系数矩阵matlab代码function [coffMatrix,lowData,eigValSort,explained,meanValue] = myPCA(data)%data为row⾏col列矩阵,row为样本数量,col为特征列,每⼀列代表⼀个特征[row , col] = size(data);% 求出每⼀列的均值meanValue = mean(data);% 将每⼀列进⾏均值化处理,特征归⼀化,数据中⼼平移到坐标原点normData = data - repmat(meanValue,[row,1]);%求取协⽅差矩阵covMat = cov(normData);%求取特征值和特征向量[eigVect,eigVal] = eig(covMat);% 将特征向量按对应特征值⼤⼩从上到下按⾏排列成矩阵[sortMat, sortIX] = sort(eigVal,'descend');[B,IX] = sort(sortMat(1,:),'descend');coffMatrix = eigVect(:,IX);% 排序后的特征向量就是新的坐标系lowData = normData * coffMatrix;% 分量得分explained = 100*B/sum(B);%特征值eigValSort = B;%%% [U,S,V] = svd(data);end我们在实际应⽤PCA的时候需要注意保留以下⼏个值。

利用Matlab进行主成分分析-模糊数学-实验3

利用Matlab进行主成分分析-模糊数学-实验3
-0.5188 -0.0439 -0.5827 0.2201 0.3149 0.4918
-0.0338 -0.6643 0.0310 -0.2506 -0.5661 0.4163
-0.5189 -0.0061 0.2601 -0.7470 0.3077 -0.1024
gx2 =
0.4798
0.3425
[F1,I1]=sort(F01,'descend');
[F2,I2]=sort(I1);
I2%各城市第一主成分排名
%%%%%%%%%%%%%%%%%%%%%%%%
F3=[B1-ones(31,1)*mean(B1)]*v*q'%求各城市综合得分
[F4,I4]=sort(F3,'descend');
33.75 10.65 54.28 2.17 9.87 98.56
35.96 16.62 62.35 2.62 7.00 99.32
32.84 17.68 48.65 2.88 12.85 99.36
32.31 12.12 64.04 2.45 7.72 101.20
35.02 13.59 49.41 2.34 14.50 101.23
湖 北
33.75
10.65
54.28
2.17
9.87
98.56
湖 南
35.96
16.62
62.35
2.62
7.00
99.32
广 东
32.84
17.68
48.65
2.88
12.85
99.36
广 西
32.31
12.12
64.04
2.45
7.72

matlab主成分分析案例

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.95100.9877 1.0000 0.9884 0.9947 0.5438 0.98850.9835 0.94850.9988 0.9884 1.0000 0.9824 0.4294 0.99840.9948 0.94620.9820 0.9947 0.9824 1.0000 0.5051 0.98290.9763 0.93910.4281 0.5438 0.4294 0.5051 1.0000 0.43110.4204 0.45570.9999 0.9885 0.9984 0.9829 0.4311 1.00000.9986 0.95300.9980 0.9835 0.9948 0.9763 0.4204 0.99861.0000 0.95690.9510 0.9485 0.9462 0.9391 0.4557 0.95300.9569 1.0000计算特征值与特征向量:>> [v,d]=eig(corrcoef(A))v =-0.3723 0.1179 0.1411 -0.2543 -0.0459 0.5917-0.5641 0.3041-0.3741 -0.0343 0.1606 0.2247 -0.1514 -0.6284-0.1535 0.5841-0.3719 0.1152 0.1957 -0.1954 -0.6909 -0.13510.0383 -0.5244-0.3713 0.0096 0.2368 0.7875 0.2168 0.23850.0303 -0.2845-0.1949 -0.9689 -0.0004 -0.1242 0.0119 0.06280.0151 -0.0593-0.3725 0.1143 0.1222 -0.2302 0.0924 0.22590.7946 0.2988-0.3716 0.1272 0.0353 -0.3800 0.6591 -0.3521-0.1557 -0.3428-0.3613 0.0596 -0.9185 0.1165 -0.0872 0.03020.0022 -0.0096d =7.1135 0 0 0 0 0 0 00 0.7770 0 0 0 0 0 00 0 0.0810 0 0 0 0 00 0 0 0.0237 0 0 0 00 0 0 0 0.0041 00 00 0 0 0 0 0.0006 0 00 0 0 0 0 00.0000 00 0 0 0 0 0 0 0.0001各主成分贡献率:>> w=sum(d)/sum(sum(d))w =0.8892 0.0971 0.0101 0.0030 0.0005 0.00010.0000 0.0000计算各个主成分得分:>> F=[A-ones(17,1)*mean(A)]*v(:,8)F =224.3503-24.0409-40.0941-35.90754.7573-12.6102-2.85731.8038-13.901213.4541-29.384762.3383-23.3175-32.4285-38.1309-14.8637-39.1675>> [F1,I1]=sort(F,'descend')F1按从大到小的顺序给个主成分得分排名:F1 =224.350362.338313.45414.75731.8038-2.8573-12.6102-13.9012-14.8637-23.3175-24.0409-29.3847-32.4285-35.9075-38.1309-39.1675-40.0941I1给出各个名次的序号:I1 =1121058769161321114415173>> [F2,I2]=sort(I1)F2 =1234567891011121314151617I2给出个城市排名,即所求排名:I2 =1111714476583122101315916(2)由于第一主成分的贡献率大于80%,其他各成分贡献率都太小,所以只能用第一主成分进行排名。

Matlab主成分分析:详解+实例

Matlab主成分分析:详解+实例
主成分分析(PCA)中我们的目标是找到 一个能使个体差异达到最大的变量线性 组合。
主成分分析
总结:
主 原始变量 目标

X1, , Xm
主成分
Z1, ,Zp

线性组合

Z1, , Zp 互不相关
析 的
信息不重合 按‘重要性’排序
求解主 成分

Z1, , Zp
想 Var(Z1) Var(Z2 ) Var(Zp )
r
i r 2(z j , xi ),
j1
这里r(z j , xi )表示zj 与 xi 的相关系数。
主成分分析
1 2 0
例1 设 x [ x1, x2 , x3 ]T 且 R 2 5 0
0 0 0
则可算得1 5.8284,2 0.1716,如果我们仅取第
一个主成分,由于其累积贡献率已经达到97.14%, 似乎很理想了,但如果进一步计算主成分对原变量的
c1 x1+ c2 x2+… +cp xp
我们希望选择适当的权重能更好地区分学生的 成绩. 每个学生都对应一个这样的综合成绩, 记 为s1, s2,…, sn , n为学生人数. 如果这些值很分散, 表明区分好, 即是说, 需要寻找这样的加权, 能使 s1, s2,…, sn 尽可能的分散, 下面来看的统计定义.
x5:交通和通讯,
x6:娱乐教育文化服务,
x7:居住,
x8:杂项商品和服务.
对居民消费数据做主成分分析.
聚类分析
聚类分析
聚类分析
计算的Matlab程序如下:
clc,clear load czjm1999.txt
%把原始数据保存在纯文本文件czjm1999.txt中

主成分分析及matlab实现

主成分分析及matlab实现

第一步 将原始数据标准化。 第二步 建立指标之间的相关系数阵R如下
第三步 求R的特征值和特征向量。
从上表看,前3个特征值累计贡献率已达89.564%, 说明前3个主成分基本包含了全部指标具有的信息,我们 取前3个特征值,并计算出相应的特征向量:
因而前三个主成分为:
第一主成分:
第二主成分:
包含的信息量次之为29.34%,它的主要代表变量为X3(地理 结构)、X6(资源配置)、X9 (可持续性),其权重系数分别为 0.5299、0.5273、0.4589,第三新因子 Z3包含的信息量为 11.97%,代表总量为 X9(可持续性)、 X5(物质还原),权重 系数分别为0.5933、0.5664。这些代表变量反映了各自对该 新因子作用的大小,它们是生态环境系统中最重要的影响因 素。 根据前三个主成分得分,用其贡献率加权,即得十个城 市各自的总得分

分析:本题目可先尝试一般的线性回归模型,但拟合的效果一般,故可尝试主成分回 归分析方法 解:首先对各个变量数据进行标准化处理,其次, 建立指标之间的相关系数阵并求出 相关阵的特征值分别为:
1 1.999, 2 0.998, 3 0.003
前2个主成分的累计贡献率在99%以上,故取2个主成分( xi*表示xi的标准化变量):
定义:记x1,x2,…,xP为原变量指标, z1,z2,…,zm(m≤p)为新变量指标 z1 l11 x1 l12 x2 l1 p x p z2 l21 x1 l22 x2 l2 p x p ............ (1.2) z l x l x l x mp p m m1 1 m 2 2

贡献率
i

k 1
p

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

主成分分析PCA(含有详细推导过程以及案例分析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 X212222111211()p x x x ,,21=其中:p j x x x x nj j j j ,2,1,21== 主成分分析就是将p 个观测变量综合成为p 个新的变量(综合变量),即+++=+++=+++=ppp p p p p p p p x a x a x a F x a x a x a F x a x a x a F 22112222121212121111 简写为:p jp j j j x x x F ααα+++= 2211p j ,,2,1 =要求模型满足以下条件:①j i F F ,互不相关(j i ≠,p j i ,,2,1, =)②1F 的方差大于2F 的方差大于3F 的方差,依次类推③.,2,1122221p k a a a kp k k ==+++于是,称1F 为第一主成分,2F 为第二主成分,依此类推,有第p 个主成分。

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

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

§. 利用和实现主成分分析.直接调用软件实现在软件中实现主成分分析可以采取两种方式实现:一是通过编程来实现;二是直接调用中自带程序实现。

通过直接调用中的程序可以实现主成分分析:)(]2,var ,,[X princomp t iance score pc =式中:为输入数据矩阵⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=nm n n m m x x x x x x x x x X 212222111211(一般要求>)输出变量:① 主分量的系数,也叫因子系数;注意:单位阵②是主分量下的得分值;得分矩阵与数据矩阵的阶数是一致的; ③是对应列的方差向量,即的特征值;容易计算方差所占的百分比 *();④表示检验的统计量(方差分析要用) 计算过程中应用到计算模型:ξ+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡m T p x x x A f f f 2121 (要求<)例:表为某地区农业生态经济系统各区域单元相关指标数据,运用主成分分析方法可以用更少的指标信息较为精确地描述该地区农业生态经济的发展状况。

表 某农业生态经济系统各区域单元的有关数据样本序号 :人口密度(人) :人均耕地面积() :森林覆盖率() :农民人均纯收入(元人) :人均粮食产量 (人):经济作物占农作物播面比例(%) :耕地占土地面积比率(%) :果园与林地面积之比(%) :灌溉田占耕地面积之比(%)对于上述例子,进行主成分分析,可以得到如下结果。

① 以及每一个主成分的贡献率和累计贡献率,如表和图。

表. 特征根及主成分贡献率主成分特征值贡献率%累积贡献率%E i g e n v a l u e特征根② 前几个主成分的载荷系数如表所示。

表 前三个主成分在原变量上的载荷. 直接调用软件实现多元分析处理的是多指标的问题。

由于指标太多,使得分析的复杂性增加。

观察指标的增加本来是为了使研究过程趋于完整,但反过来说,为使研究结果清晰明了而一味增加观察指标又让人陷入混乱不清。

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

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

主成分分析法例子与matlab 中的应运可联系我邮箱 ******************1.概述主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。

在实证问题研究中,为了全面、系统地分析问题,我们必须考虑众多影响因素。

这些涉及的因素一般称为指标,在多元统计分析中也称为变量。

因为每个变量都在不同程度上反映了所研究问题的某些信息,并且指标之间彼此有一定的相关性,因而所得的统计数据反映的信息在一定程度上有重叠。

在用统计方法研究多变量问题时,变量太 多会增加计算量和增加分析问题的复杂性,人们希望在进行定量分析的过程中,涉及的变量较少,得到的信息量较多。

1.1主成分分析计算步骤① 计算相关系数矩阵⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=pp p p p p r r r r r r r r r R 212222111211 (1)在(3.5.3)式中,r ij (i ,j=1,2,…,p )为原变量的xi 与xj 之间的相关系数,其计算公式为∑∑∑===----=nk nk j kji kink j kj i kiij x xx xx x x xr 11221)()())(( (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=∑=pj ij e ,其中ij e 表示向量i e 的第j 个分量。

③ 计算主成分贡献率及累计贡献率 主成分i z 的贡献率为),,2,1(1p i pk ki=∑=λλ累计贡献率为),,2,1(11p i pk kik k=∑∑==λλ一般取累计贡献率达85—95%的特征值m λλλ,,,21 所对应的第一、第二,…,第m (m ≤p )个主成分。

主成分分析法MATLAB的实现

主成分分析法MATLAB的实现

主成分分析法MATLAB的实现在MATLAB中,主成分分析是通过`pca`函数实现的。

`pca`函数的语法如下:```[coeff,score,latent,tsquared,explained,mu] = pca(X)```- `latent`是一个长度为$p$的向量,表示每个主成分的方差。

- `tsquared`是一个长度为$n$的向量,表示每个样本在主成分上的投影平方和。

- `explained`是一个长度为$p$的向量,表示每个主成分的方差贡献率。

- `mu`是一个长度为$p$的向量,表示每个特征的平均值。

下面我们将用一个简单的例子演示如何使用MATLAB进行主成分分析。

假设我们有一个包含4个样本和3个特征的数据集:```matlabX=[1,2,3;2,4,6;3,6,9;4,8,12];```首先,我们需要对数据进行归一化处理,以保证不同特征之间的量纲一致。

```matlabX_norm = zscore(X);```然后,我们可以使用`pca`函数进行主成分分析:```matlab[coeff, score, latent, ~, explained, ~] = pca(X_norm);```在这个示例中,我们只关心`coeff`、`score`、`latent`和`explained`这四个输出。

`coeff`给出了主成分的系数,可以用于计算每个样本在每个主成分上的投影:```matlabproj = score * coeff';````latent`表示每个主成分的方差,我们可以通过对`latent`中的元素求和来得到总方差的百分比贡献:```matlabvar_contrib = cumsum(latent) / sum(latent);````explained`向量可以直接给出每个主成分的方差贡献率。

最后,我们可以绘制一个累积方差贡献率的曲线:```matlabplot(1:length(var_contrib), var_contrib, 'ro-');ylabel('Cumulative Variance Contribution');```这样,我们就完成了主成分分析的实现。

MATLAB(主成分分析聚类判别)

MATLAB(主成分分析聚类判别)

我们对江苏省十个城市的生态环境状况进行了调查,得到生 态环境指标的指数值,见表1。现对生态环境水平分析和评 价。
我们利用Matlab中的princomp命令实现。具体程序如下
X= [0.7883 0 .7391 0.8111 0.6587 0.6543 0.8259 0.8486 0.6834 0.8495 0.7846 0.7633 0.7287 0.7629 0.8552 0.7564 0.7455 0.7800 0.9490 0.8918 0.8954 0.4745 0.5126 0.8810 0.8903 0.8288 0.7850 0.8032 0.8862 0.3987 0.3970 0.8246 0.7603 0.6888 0.8977 0.7926 0.7856 0.6509 0.8902 0.6799 0.9877 0.8791 0.8736 0.8183 0.9446 0.9202 0.9263 0.9185 0.9505 0.8620 0.8873 0.9538 0.9257 0.9285 0.9434 0.9154 0.8871 0.9357 0.8760 0.9579 0.9741 0.8785 0.8542 0.8537 0.9027 0.8729 0.8485 0.8473 0.9044 0.8866 0.9035 0.6305 0.6187 0.6313 0.7415 0.6398 0.6142 0.5734 0.8980 0.6186 0.7382 0.8928 0.7831 0.5608 0.8419 0.8464 0.7616 0.8234 0.6384 0.9604 0.8514];

1 主成份分析 这里给出江苏省生态城市主成份分析实例。 城市环境生态化是城市发展的必然趁势,表现为社会、经 济、环境与生态全方位的现代化水平,一个符合生态规律的 生态城市应该是结构合理、功能高效和关系协调的城市生态 系统。所谓结构合理是指适度的人口密度,合理的土地利 用,良好的环境质量,充足的绿地系统,完善的基础设施, 有效的自然保护;功能高效是指资源的优化配置、物力的经 济投入、人力的充分发挥、物流的畅通有序、信息流的快 捷;关系协调是指人和自然协调、社会关系协调、城乡协 调、资源利用和更新协调。一个城市要实现生态城市的发展 目标,关键是在市场经济的体制下逐步改善城市的生态环境 质量,防止生态环境质量恶化,因此,对城市的生态环境水 平调查评价很有必要。

Matlab中的主成分分析方法与实例分析

Matlab中的主成分分析方法与实例分析

Matlab中的主成分分析方法与实例分析引言主成分分析(Principal Component Analysis,PCA)是一种常用的多变量分析方法,广泛应用于数据降维、特征提取和可视化等领域。

在Matlab中,通过调用PCA函数,可以方便地实现主成分分析。

本文将介绍Matlab中的主成分分析方法,并通过实例分析展示其应用。

一、主成分分析方法概述主成分分析通过线性变换将原始数据转换为新的坐标系,使得转换后的变量彼此之间不相关。

在新的坐标系中,第一个主成分具有最大的方差,第二个主成分具有次大的方差,并且与第一个主成分无关,以此类推。

主成分分析的基本思想是将高维数据投影到低维空间上,保留数据中所包含的主要信息,尽可能地减少信息损失。

二、Matlab中的主成分分析函数在Matlab中,通过调用pca函数可以进行主成分分析。

该函数的基本用法如下:\[coeff, score, latent, tsquared, explained, mu] = pca(X)\]其中,X代表待分析的数据矩阵,coeff是主成分系数矩阵,score是数据在主成分上的投影,latent是各主成分的方差,tsquared是数据的Hotelling T平方统计量,explained是各主成分的方差贡献率,mu是数据的均值。

三、主成分分析的实例分析为了进一步说明主成分分析的应用,我们将通过一个实例来展示其具体步骤。

假设我们有一个数据集,包含了100个样本和5个特征。

首先,我们将数据加载到Matlab中,并进行标准化处理,即将每一列的均值变为0,方差变为1。

这样做可以消除不同特征之间的量纲差异。

接下来,我们调用pca函数对标准化后的数据进行主成分分析。

根据explained 中各主成分的方差贡献率,我们可以选择保留的主成分个数。

通常,我们会选择方差贡献率大于一定阈值(如80%)的主成分。

在实际应用中,保留的主成分个数需要根据具体问题进行调整。

主成份分析的MATLAB实现案例

主成份分析的MATLAB实现案例

%--------------------------------------------------------------------------% 从相关系数矩阵出发进行主成分分析aaaa%--------------------------------------------------------------------------%***************************定义相关系数矩阵PHO***************************** PHO = [1 0.79 0.36 0.76 0.25 0.510.79 1 0.31 0.55 0.17 0.350.36 0.31 1 0.35 0.64 0.580.76 0.55 0.35 1 0.16 0.380.25 0.17 0.64 0.16 1 0.630.51 0.35 0.58 0.38 0.63 1];%******************调用pcacov函数根据相关系数矩阵作主成分分析***************** % 返回主成分表达式的系数矩阵COEFF,返回相关系数矩阵的特征值向量latent和主成分贡献率向量explained[COEFF,latent,explained] = pcacov(PHO)% 为了更加直观,以元胞数组形式显示结果result1(1,:) = {'特征值', '差值', '贡献率', '累积贡献率'};result1(2:7,1) = num2cell(latent);result1(2:6,2) = num2cell(-diff(latent));result1(2:7,3:4) = num2cell([explained, cumsum(explained)])% 以元胞数组形式显示主成分表达式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))%--------------------------------------------------------------------------% 读取examp11_02.xls中数据,进行主成分分析%--------------------------------------------------------------------------%**************************读取数据,并进行标准化变换************************ [X,textdata] = xlsread('examp11_02.xls'); %从Excel文件中读取数据XZ = zscore(X); %数据标准化%**********************************主成分分析*******************************% 调用princomp函数根据标准化后原始样本观测数据作主成分分析,返回主成分表达式的系数矩阵COEFF,% 主成分得分数据SCORE,样本相关系数矩阵的特征值向量latent和每个观测的霍特林T2统计量[COEFF,SCORE,latent,tsquare] = princomp(XZ)% 为了直观,定义元胞数组result1,用来存放特征值、贡献率和累积贡献率等数据% 这样做能以元胞数组形式显示result1的结果explained = 100*latent/sum(latent); %计算贡献率[m, n] = size(X); %求X的行数和列数result1 = cell(n+1, 4); %定义一个n+1行,4列的元胞数组result1(1,:) = {'特征值', '差值', '贡献率', '累积贡献率'};result1(2:end,1) = num2cell(latent); %存放特征值result1(2:end-1,2) = num2cell(-diff(latent)); %存放特征值之间的差值result1(2:end,3:4) = num2cell([explained, cumsum(explained)]) %存放(累积)贡献率% 为了直观,定义元胞数组result2,用来存放前2个主成分表达式的系数数据% 这样做能以元胞数组形式显示result2的结果varname = textdata(3,2:end)'; % 提取变量名数据result2 = cell(n+1, 3); % 定义一个n+1行,3列的元胞数组result2(1,:) = {'标准化变量', '特征向量t1', '特征向量t2'}; % result2的第一行result2(2:end, 1) = varname; % result2的第一列result2(2:end, 2:end) = num2cell(COEFF(:,1:2)) % 存放前2个主成分表达式的系数数据% 为了直观,定义元胞数组result3,用来存放每一个地区总的消费性支出,以及前2个主成分的得分数据% 这样做能以元胞数组形式显示result3的结果cityname = textdata(4:end,1); % 提取地区名称数据sumXZ = sum(XZ,2); %每一个地区总的消费性支出[s1, id] = sortrows(SCORE,1); % 将主成分得分数据按第一主成分得分从小到大排序result3 = cell(m+1, 4); %定义一个m+1行,3列的元胞数组result3(1,:) = {'地区', '总支出', '第一主成分得分y1', '第二主成分得分y2'};result3(2:end, 1) = cityname(id); % result3的第一列,即排序后地区名% 存放排序后每一个地区总的消费性支出,以及前2个主成分的得分数据result3(2:end, 2:end) = num2cell([sumXZ(id), s1(:,1:2)])% 为了直观,定义元胞数组result4,用来存放前2个主成分的得分数据,以及(衣着+医疗)-(食品+其他)% 这样做能以元胞数组形式显示result4的结果%计算(衣着+医疗)-(食品+其他),即衣着和医疗的总支出减去食品和其他商品的总支出cloth = sum(XZ(:,[2,7]),2) - sum(XZ(:,[1,8]),2);[s2, id] = sortrows(SCORE,2); % 将主成分得分数据按第一主成分得分从小到大排序result4 = cell(m+1, 4); %定义一个m+1行,3列的元胞数组result4(1,:) = {'地区','第一主成分得分y1','第二主成分得分y2' ,'(衣+医)-(食+其他)'};result4(2:end, 1) = cityname(id); % result4的第一列,即排序后地区名% 存放排序后前2个主成分的得分数据,以及(衣着+医疗)-(食品+其他)的数据result4(2:end, 2:end) = num2cell([s2(:,1:2), cloth(id)])%***************************前两个主成分得分散点图*************************** plot(SCORE(:,1),SCORE(:,2),'ko'); %绘制两个主成分得分的散点图,散点为黑色圆圈xlabel('第一主成分得分'); %为X轴加标签ylabel('第二主成分得分'); %为Y轴加标签gname(cityname); %交互式标注每个地区的名称%**********************根据霍特林T2统计量寻找极端数据************************ % 将tsquare从小到大进行排序,并与地区名称一起显示result5 = sortrows([cityname, num2cell(tsquare)],2); %转为元胞数组,并按第二列排序[{'地区', '霍特林T^2统计量'}; result5]%**************************调用pcares函数重建观测数据************************ % 通过循环计算E1(m)和E2(m)for i = 1 : 8residuals = pcares(X, i); % 返回残差Rate = residuals./X; %计算相对误差E1(i) = sqrt(mean(residuals(:).^2)); %计算残差的均方根E2(i) = sqrt(mean(Rate(:).^2)); %计算相对误差的均方根endE1 %查看残差的均方根E2 %查看相对误差的均方根。

matlab与主成分分析

matlab与主成分分析

第七章主成分分析安庆师范学院胡云峰例7.1对全国30个省市自治区经济发展基本情况的八项指标作主成分分析,原始数据如下:表7.1 30个省市自治区的八项指标解用matlab实现主成分分析第一步在matlab输入原始数据在这里由于输入数据量较大,我们可以在matlab的workspace中点击“新建变量”选项,命名为“x的变量,然后把你在excel中打好的表格中的数据直接复制粘贴到该变量中接着我们将原始数据标准化程序stdr=std(x); %求各变量的标准差[n,m]=size(x);sddata=x./stdr(ones(n,1),:) %标准化变换输出结果sddata =0.9458 2.9072 1.2882 6.2182 0.8129 57.9170 59.3231 1.44280.6239 3.1568 0.8575 4.9637 0.7453 56.8802 58.2694 0.99641.9321 1.4600 1.7496 3.6947 4.4208 56.8802 61.00902.11230.7408 1.4507 0.7220 3.6046 1.5596 57.7195 60.9036 1.19270.5647 1.6097 0.6211 3.1564 1.6996 58.0158 61.5358 0.71741.89412.7819 0.96303.7497 2.9811 57.3245 60.0607 3.14850.7657 2.1726 0.7954 3.3824 1.0815 56.8802 60.1660 1.30431.36602.7088 1.08153.1648 1.7933 57.3245 60.2187 2.12181.6698 6.20102.4734 7.0848 0.4509 58.6083 59.5338 2.81043.4955 2.2353 3.56174.5308 2.2297 57.1764 60.2187 3.46682.3900 2.6101 2.4980 5.0538 1.6402 57.5714 59.7972 1.56791.3585 1.4554 1.1765 3.5191 1.9748 56.6826 59.3757 1.40981.46502.6925 1.3750 4.4720 1.3248 56.8802 60.2714 0.74180.8171 1.3718 0.7020 3.2152 0.8951 57.7195 61.0617 0.97823.3919 1.7722 3.0519 3.9283 2.6017 58.0652 60.1660 3.77652.0360 1.2000 1.66393.3168 3.4231 57.5220 60.5348 2.34001.6215 1.7722 1.4190 3.5771 1.8459 59.2502 61.43052.08821.4888 1.6341 1.0490 3.66262.1999 58.7564 60.8509 1.44353.6491 3.13244.0702 6.2991 1.4274 56.2876 58.7962 2.38861.0891 1.5250 0.9496 3.9322 1.2089 58.4602 61.3251 0.94930.2469 2.1053 0.4923 4.0772 0.5046 56.0408 58.6382 0.11002.3962 1.4635 2.04163.5466 1.9618 58.5095 61.6412 2.44930.4272 1.0933 0.3744 3.4168 0.6547 59.9414 61.7466 0.55550.8182 1.4635 0.8290 3.9314 0.6749 59.8920 62.2207 1.22590.0380 1.2882 0.0444 5.6364 0.0091 57.9170 60.5348 0.00950.6781 1.4020 0.7453 3.3565 1.0891 58.7564 61.6412 1.02800.3752 1.1687 0.2850 4.1941 1.1023 59.1514 61.3778 0.80190.1121 1.6770 0.1185 4.3926 0.1339 58.2627 61.2724 0.18100.1151 1.5726 0.1538 3.8780 0.2648 57.8183 60.7456 0.19570.5659 1.7049 0.9356 4.0833 0.7371 59.1020 61.4831 0.7334第二步建立指标间的相关系数矩阵R在这里标准化之后的样本数据的相关系数矩阵与样本离差阵相等所以我们接着在命令窗口输入R=cov(sddata)输出结果R =1.0000 0.2668 0.9506 0.1899 0.6172 -0.2726 -0.2636 0.87370.2668 1.0000 0.4261 0.7178 -0.1510 -0.2351 -0.5927 0.36310.9506 0.4261 1.0000 0.3989 0.4306 -0.2805 -0.3591 0.79190.1899 0.7178 0.3989 1.0000 -0.3562 -0.1342 -0.5384 0.10330.6172 -0.1510 0.4306 -0.3562 1.0000 -0.2532 0.0217 0.6586-0.2726 -0.2351 -0.2805 -0.1342 -0.2532 1.0000 0.7628 0.1252 -0.2636 -0.5927 -0.3591 -0.5384 0.0217 0.7628 1.0000 -0.19210.8737 0.3631 0.7919 0.1033 0.6586 -0.1252 -0.1921 1.0000第三步求R的特征向量程序[x,B]=eig(R)输出结果x =0.7602 0.0939 0.0309 0.1486 0.3203 0.1099 0.2585 0.45680.1092 0.2162 0.4222 0.1634 -0.6441 0.2459 -0.4038 0.3130-0.6080 0.3178 0.2226 0.1673 0.4262 0.1924 0.1084 0.47060.0320 -0.2981 -0.0452 -0.6589 0.2585 0.3340 -0.4878 0.2400-0.0498 0.2678 0.0593 -0.6620 -0.3331 -0.2493 0.4980 0.25090.0205 0.4185 -0.4338 -0.0580 -0.1133 0.7227 0.1699 -0.26240.0131 -0.3601 0.6646 -0.0774 0.0422 0.3972 0.4010 -0.3197-0.1907 -0.6148 -0.3685 0.2037 -0.3295 0.1915 0.2877 0.4247B =0.015000000000.065000000000.138000000000.213000000000.40200000000 1.21500000000 2.19700000000 3.754在这里由于输出结果数据长度太大,无法在这里显示,所以用excel对上面的矩阵B做了一点小小的处理在矩阵B中对角线上的元素对应的是R的特征值,对应的矩阵列向量为其特征向量对结果分析从上表看,前三个特征值累计贡献率已达89.575%,这说明前三个主成分基本包含了全部指标具有的信息,为此,我们取前三个特征值,并计算出相应的特征向量:对应特征向量u1u2u30.456790.258510.10990.31301-0.403790.245870.470560.108390.192430.23996-0.487770.334050.25090.49801-0.24933-0.262440.169880.7227-0.319660.401020.397160.424680.287690.19147因而前三个主成为第一个主成分F1=0.45679X1+0.31301X2+0.47056X3+0.23996X4+0.2509X5-0.26244X6-0.31966X7+0.42468X8F2=0.25851X1-0.40397X2+0.10839X3-0.48777X4+0.49801X5+0.16988X6+0.40102X7+0.28769X8F3=0.1099X1+0.24587X2+0.19243X3+0.33405X4-0.24933X5+0.7227X6+0.39716X7+0.19147X8在第一个主成分的表达式中第一、二、三项指标的系数较大,这三个指标起主要作用,我们可以把第一主成分看成是由国内生产总值,固定生产投资和居民消费水平所刻画的反映经济发展状况的综合指标。

主成分分析及MATLAB应用

主成分分析及MATLAB应用

主成分分析类型:一种处理高维数据的方法.降维思想:在实际问题的钻研中,往往会涉及众多有关的变量.但是,变 量太多不但会增加计算的复杂性,而且也会给合理地分析问题和解释问题 带来困难.一般说来,虽然每个变量都提供了一定的信息,但其重要性有 所不同,而在很多情况下,变量间有一定的相关性,从而使得这些变量所 提供的信息在一定程度上有所重叠.因而人们盼望对这些变量加以“改造〞, 用为了数极少的互补相关的新变量来反映原变量所提供的绝大局部信息,通 过对新变量的分析到达解决问题的目的.、总体主成分1.1 定义J (3)P p =E[(X -E(X))(X -E(X))T ],Y p =l p X 刁心辰乂2 l pp X那么有Var(YJ =Var(l :X) =l 上,,i =1,2,... Cov(Y j ,Y j ) =Cov(L TX,l T X) = l TE l j , j =1,2,..., p.第i 个主成分: 般地,在约束条件l :l i =1Cov(Y j ,Y k )=『叫=0,k = 1,2,...,i 一1.设X i,X 2,…,X p 为了某实际问题所涉及的 P 个随机变量 X=(X i, X 2,…,Xp)T ,其协方差矩阵为了它是一个P阶非负定矩阵.设/TY 1 = l T X Y 2 = l ; X--= I II X I l“X 2 fp X p=»1 I 22X 2l 2p X p111(1)(2)下,求"使Var(Y i)到达最大,由此1,所确定的丫二l:X称为了X i, X2,…,X p的第i个主成分.1.2 总体主成分的计算设£是X =(X i,X2,..,X p)T的协方差矩阵,Z的特征值及相应的正交单位化特征向量分别为了‘1 - 2 - - p-0及e i,e2,...,e p,那么X的第i个主成分为了丫=q T X *1X1+42X2+ Mp X p,i =1,2,..., p, (3)此时Var(Y i)=eWe i = ",i =1,2,..., p,Cov(Y i,Y k)=eWe k =0,i =k.1.3 总体主成分的性质1.3.1 主成分的协方差矩阵及总方差记Y =(Y1,Y2,...,Y p)T为了主成分向量,贝U Y=P T X,其中P = (e1q,..,e p),且Cov(Y) =Cov(P T X) = P T EP =A = Diag( 1, 2,..., p),由此得主成分的总方差为了p p pVar(YJ = ' L=tr(P T E P) =tr(E PP T) =tr G)= Var(X i), i d i =1 i =1'、'即主成分分析是把p个原始变量Xj X2,…,X p的总方差p' Var(X j ) i =1mviy ,它说明前m 个主成分丫1, 丫2,…,ii dY m 综合提供Xj X 2,…,X p 中信息的水平 1.3.2主成分Y i 与变量X j 的相关系数由于Y=P T X ,故X=PY,从而Xj = e i j Y ie2 j Y 2Cov(Y i ,X j)= "e j .由此可得丫与X j 的相关系数为了篇'沿=.':j j1.4 标准化变虽的主成分在实际问题中,不同的变量往往有不同的量纲,由于不同的量纲会引起各变量取值的分散程度差异较大,这时总体方差那么主要受方差较大的变 量的控制.为了了消除由于量纲的不同可能带来的影响,常采用变量标准化 的方法,即令分解成p 个互不相关变量丫1, 丫2,…,Y p 的方差之和,即p、Var(Y i )i」而 Var(YQ = k .第k 个主成分的奉献率:-p )二■■ ii =4前m 个主成分累计奉献率:x : = Xi ", V CT ii1,2,..., p,(5)其中 f =E(X j),% =Var(X) 这时= (X1,X2,...,X p)T的协方差矩阵便是= (X i,X2,...,X p)T的相关矩阵P=(R j)p"其中Cov(X i,X j):"E(XiXj)= ' / (6) 利用X的相关矩阵p作主成分分析,有如下结论:* * *2 ,..=(X I,X2,...,X;)T为了标准化的随机向量,其协方差矩阵(即X的相关并且其中*Y iP,那么X*的第i个主成分为了* T * * X i -口i * X2 - 2= (e.) X =如1一1条一2 -\ '、- 22,i=1,2,..., p. (7)的正交单位特征向量. 第i个主成分的奉献率:p p* *' Var(Y i )=' "i =1 i=1p.—*厂Var(X,= p,(8)P的特征值, e;=(e:i,e;2,..,e;p)T为了相应于特征值前m个主成分的累计奉献率: m J; pY;与X*的相关系数为了“X; =屁*j.、样本主成分的,需要通过样本来估计.设,,, x ip ) ,i = 1,2,..., n. 为了取白X =(X i ,X 2,...,X p )T的简洁随机样本,那么样本协方差矩阵及样本相关矩阵分别_1 /Ts =(§j )p p(X k-x)(X k -x),n -1 k 」其中-_ __ . _1Ix =(X 1,X 2,..., X p ) , X jX ij , j =1,2,..., p,n i d1 ,§j—(易 - X i )( X kjn -1 kj作为了 £和P 的估计,然后按总体主成分分析的方法作样本主成分分析前面讨论的是总体主成分,但在实际问题中,一舟Z (或P )是未知X = (Xi, Xi2,.的一个容量为了 R=(r ‘j )ppS j/SiiS jj分别以二、例题某市为了了全面分析机械类个企业的经济效益,选择了8个不同的利润指标,14企业关于这8个指标的统计数据如下表所示,试进行主成分分析c表1 14家企业的利润指标的统计数据解:样本均值向量为了:x =(27.979 10.950 9.100 8.543 11.064 14.614 1.552 14.686)T,样本协方差矩阵为了:-168.333 60.357 45.757 41.215 57.906 71.672 8.602 101.620〕37.207 16.825 15.505 23.535 29.029 4.785 44.02324.843 24.335 36.478 49.278 3.629 39.410Q —24.423 36.283 49.146 3.675 38.718S —56.046 75.404 5.002 59.723103.018 6.821 74.5231.137 6.722102.707168.33 60.357 45.758 41.216 57.906 71.672 8.602 101.62 60.357 37.20716.82515.505 23.535 29.029 4.7846 44.023 45.75816.825 24.843 24.335 36.478 49.278 3.629 39.4141.21615.505 24.335 24.423 36.283 49.146 3.6747 38.718 S =57.906 23.535 36.478 36.283 56.046 75.404 5.0022 59.723 71.672 29.02949.278 49.146 75.404103.02 6.8215 74.5238.602 4.7846 3.629 3.6747 5.0022 6.82151.137 6.7217 101.62 44.023 39.41 38.718 59.723 74.523 6.7217102.71由于S 中主对角线元素差异较大,因此我们样本相关矩阵 R 出发进行 主成分分析.样本相关矩阵R 为了:0.62202 1矩阵的特征值及相应的特征向量分别为了:一1 0.76266 0.70758 0.64281 0.59617 0.54426 10.55341 0.51434 0.51538 0.46888 0.62178 0.772850.73562 0.712140.98793 0.9776 0.97409 0.68282 0.780190.98071 0.9798 0.69735 0.773060.992350.62663 0.7871810.6303 0.72449前3个标准化样本主成分类及奉献率已到达95.184% ,故只需取前三个主成分即可前3个标准化样本主成分中各标准化变量x; = (i =1,2,...,8)前的系数即为了对应特征向量,由此得到3个标准化样本主成分为了y1= 0.32113x1 +0.29516x2+0.38912x3 +0.38472x4 +0.37955x5 +0.37087又+0.31996又+0.35546x8,y2 = -0.4151x1 -0.59766x2 +0.22974x3+0.27869x4+0.31632x5 +0.37151x6 -0.27814x7 -0.15684x8 y3 = -0.45123x1 +0.10303x^-0.039895x3 +0.053874x4-0.037292x5 +0.075186x6 +0.77059x^-0.42478x8注意到,y i近似是8个标准化变量x* = (i = 1,2,...,8)的等权重之和,是反映各企业总效应大小的综合指标,y i的值越大,那么企业的效益越好.由于y i的奉献率高达76.708%,故假设用y i的得分值对各企业进行排序,能从整体上反映企业之间的效应差异.将S中8^的值及x中各x i的值以及各企业关于X i的观测值代入y i的表达式中,可求得各企业y i的得分及其按其得分由大到小的排序结果.所以,第9家企业的效益最好,第12家企业的效益最差.Matlab 程序:[coeff,score,latent]=princomp(X)注:该函数使用协方差阵作主成分分析.主成分分析程序a=[];b=corrcoef(zscore(a))% 计算相关系数矩阵D=tril(b)% 得到三角矩阵[d,v]=eig(b)% 计算特征值和特征向量[f1,i1]=sort(y4); [f2,i2]=sort(i1);[flipud(i1),flipud(f1),f2]% 第 si 主成分得分排序y5=zscore(a)*d(:,3)% 计算第一主成分数值[f1,i1]=sort(y1); [f2,i2]=sort(i1);[flipud(i1),flipud(f1),f2]%第一主成分得分排序y=y5*(0.64/(0.64+0.84+1.04+1.17+2.36))+y4*(0.84/(0.64+0.84+1.04+1.17+2.36))+y3*(1.04/(0.64 +0.84+1.04+1.17+2.36))+y2*(1.17/(0.64+0.84+1.04+1.17+2.36))+y1*(2.36/(0.64+0.84+1.04+1.17+ 2.36)) [f1,i1]=sort(y); [f2,i2]=sort(i1);[flipud(i1),flipud(f1),f2]%y1=zscore(a)*d(:,7)% [f1,i1]=sort(y1); [f2,i2]=sort(i1); [flipud(i1),flipud(f1),f2]%y2=zscore(a)*d(:,6)%[f1,i1]=sort(y2); [f2,i2]=sort(i1); [flipud(i1),flipud(f1),f2]% y3=zscore(a)*d(:,5)% [f1,i1]=sort(y3); [f2,i2]=sort(i1); [flipud(i1),flipud(f1),f2]% y4=zscore(a)*d(:,4)% 计算第一主成分数值第一主成分得分排序计算第二主成分数值 第二主成分得分排序 计算第三主成分数值 第三主成分得分排序 计算第三主成分数值综合主成分得分排序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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
0.9877 1.0000 0.9884 0.9947 0.5438 0.9885
0.9835 0.9485
0.9988 0.9884 1.0000 0.9824 0.4294 0.9984
0.9948 0.9462
0.9820 0.9947 0.9824 1.0000 0.5051 0.9829
0.9763 0.9391
0.4281 0.5438 0.4294 0.5051 1.0000 0.4311
0.4204 0.4557
0.9999 0.9885 0.9984 0.9829 0.4311 1.0000
0.9986 0.9530
0.9980 0.9835 0.9948 0.9763 0.4204 0.9986
1.0000 0.9569
0.9510 0.9485 0.9462 0.9391 0.4557 0.9530
0.9569 1.0000
计算特征值与特征向量:
>> [v,d]=eig(corrcoef(A))
v =
-0.3723 0.1179 0.1411 -0.2543 -0.0459 0.5917
-0.5641 0.3041
-0.3741 -0.0343 0.1606 0.2247 -0.1514 -0.6284
-0.1535 0.5841
-0.3719 0.1152 0.1957 -0.1954 -0.6909 -0.1351
0.0383 -0.5244
-0.3713 0.0096 0.2368 0.7875 0.2168 0.2385
0.0303 -0.2845
-0.1949 -0.9689 -0.0004 -0.1242 0.0119 0.0628
0.0151 -0.0593
-0.3725 0.1143 0.1222 -0.2302 0.0924 0.2259
0.7946 0.2988
-0.3716 0.1272 0.0353 -0.3800 0.6591 -0.3521
-0.1557 -0.3428
-0.3613 0.0596 -0.9185 0.1165 -0.0872 0.0302
0.0022 -0.0096
d =
7.1135 0 0 0 0 0 0 0
0 0.7770 0 0 0 0 0 0
0 0 0.0810 0 0 0 0 0
0 0 0 0.0237 0 0 0 0
0 0 0 0 0.0041 0
0 0
0 0 0 0 0 0.0006 0 0
0 0 0 0 0 0
0.0000 0
0 0 0 0 0 0 0 0.0001
各主成分贡献率:
>> w=sum(d)/sum(sum(d))
w =
0.8892 0.0971 0.0101 0.0030 0.0005 0.0001
0.0000 0.0000
计算各个主成分得分:
>> F=[A-ones(17,1)*mean(A)]*v(:,8)
F =
224.3503
-24.0409
-40.0941
-35.9075
4.7573
-12.6102
-2.8573
1.8038
-13.9012
13.4541
-29.3847
62.3383
-23.3175
-32.4285
-38.1309
-14.8637
-39.1675
>> [F1,I1]=sort(F,'descend')
F1按从大到小的顺序给个主成分得分排名:
F1 =
224.3503
62.3383
13.4541
4.7573
1.8038
-2.8573
-12.6102
-13.9012
-14.8637
-23.3175
-24.0409
-29.3847
-32.4285
-35.9075
-38.1309
-39.1675
-40.0941
I1给出各个名次的序号:I1 =
1
12
10
5
8
7
6
9
16
13
2
11
14
4
15
17
3
>> [F2,I2]=sort(I1)
F2 =
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
I2给出个城市排名,即所求排名:
I2 =
1
11
17
14
4
7
6
5
8
3
12
2
10
13
15
9
16
(2)由于第一主成分的贡献率大于80%,其他各成分贡献率都太小,所以只能用第一主成分进行排名。

相关文档
最新文档