资源描述:
《matlab主成分分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.princomp 功能:主成分分析 格式:PC=princomp(X) [PC,SCORE,latent,tsquare]=princomp(X) 说明:[PC,SCORE,latent,tsquare]=princomp(X)对数据矩阵X进行主成分分析,给出各主成分(PC)、所谓的Z-得分(SCORE)、X的方差矩阵的特征值(latent)和每个数据点的HotellingT2统计量(tsquare)。2.pcacov 功能:运用协方差矩阵进行主成分分析 格式:PC
2、=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个主成分所获的
3、残差。注意,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表
4、明数据X对应于每个主成分的方差是相同的;ndim=2表明数据X对应于第二成分及其余成分的方差是相同的。第一种方法:用matlab的各个函数组合得到的结果:clc;clear;X=[28 1 1100 5 0;5 2 1200 1 2;10 9 1010 2 0;4 8 700 6 2;31 2 200 7 2;4 1 1100 0.51;5 1 1100 3 0;26 7 400 6 2];p=mean(X);%每一列的平均值pq=repmat(p,8
5、,1);b=std(X);%每一列的标准差bq=repmat(b,8,1);ding=(X-pq)./bq; %标准化矩阵dd=cov(ding); %协方差计算ordd=ding*ding/13[V,D]=eig(dd);%计算特征值和特征向量,V是特征向量,D是特征值W=[0.2004 0.5401 0.4460;0.5989 -0.7269 0.1889;0.0635 0.0608 -0.5782;0.1858 0.1340 0.5507;-0.7500 -0.3978 0.3575
6、];% 前三个>85%,得到的主成分系数,Y=ding*WY=0.7189 1.7805 -0.1687 -1.2866 -0.4645 -1.2815 1.5565 -0.8752 -0.9244 0.0146 -1.5758 0.8769 -0.5768 0.8649 2.5466 -0.7725 0.0577 -1.6892 0.1863 0.6378 -1.46350.1594 -0.4250 2.1036第二种方法:用matlab的自带函数princomp得
7、到的结果:[pc,score,latent,tsquare]=princomp(X);pc=-0.0249 0.9933 0.0934 -0.0575 0.0250 -0.0028 -0.0967 0.9941 -0.0413 0.0279 0.9997 0.0247 0.0053 0.0037 0.0030 -0.0055 0.0496 0.0421 0.9884 0.1372 -0.0016 -0.0293 -0.0362 -0.1344 0.9898为什么结果
8、不一样呢?第三种方法——用spss软件来做,结果让我更加不解,我迷茫了第一种和第二种方法应该能得到相同结果1、你第一种方法中得到的特征向量矩阵是主成分系数(标准化后变量的主成分系数),而最后计算的矩阵Y是每个样本数据的主成分得分;2、第二种方法应该对标准化矩阵用princomp处理,对原始数据直接用当然得到不同的结果3、[pc,score,latent,tsquare]=