资源描述:
《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)和每个数据点的HotellingT2统计 量(tsquare)。2.pcacov功能:运用协方差矩阵进行主成分分析格式:PC=pcacov(X)[PC,latent,exp
2、lained]=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功能:主成分
3、的巴特力特检验格式:ndim=barttest(X,alpha)[ndim,prob,chisquare]=barttest(X,alpha)说明:巴特力特检验是一种等方差性检验。ndim=barttest(X,alpha)是在显著性水平alpha下,给出满足数据矩阵X的非随机变量的n维模型,ndim即模型维数,它由一系列假设检验所确定,ndim=1表明数据X对应于每个主成分的方差是相同的;ndim=2表明数据X对应于第二成分及其余成分的方差是相同的。===============主成分分析Matlab源码分析function[pc,score,
4、latent,tsquare]=princomp(x);% PRINCOMPPrincipalComponentAnalysis(centeredandscaleddata).% [PC,SCORE,LATENT,TSQUARE]=PRINCOMP(X)takesadatamatrixXand% returnstheprincipalcomponentsinPC,theso-calledZ-scoresinSCORES,% theeigenvaluesofthecovariancematrixofXinLATENT,andHotellin
5、g's% T-squaredstatisticforeachdatapointinTSQUARE.% Reference:J.EdwardJackson,AUser'sGuidetoPrincipalComponents% JohnWiley&Sons,Inc.1991pp.1-25.% B.Jones3-17-94% Copyright1993-2002TheMathWorks,Inc.% $Revision:2.9$$Date:2002/01/1721:31:45$[m,n]=size(x); %得到矩阵的规模,m行,
6、n列r=min(m-1,n); %maxpossiblerankofx%该矩阵最大的秩不能超过列数,%也不能超过行数减1avg=mean(x); %求每一列的均值,付给一个n维行向量centerx=(x-avg(ones(m,1),:)); %x的每个元素减去该列的均值,%使样本点集合重心与坐标原点重合[U,latent,pc]=svd(centerx./sqrt(m-1),0); %“经济型”的奇异值分解score=centerx*pc; %得分矩阵即为原始矩阵乘主成分矩阵ifn
7、argout<3,return;endlatent=diag(latent).^2; %将奇异值矩阵转化为一个向量if(rlatent=[latent(1:r);zeros(n-r,1)];score(:,r+1:end)=0;endifnargout<4,return;endtmp=sqrt(diag(1./latent(1:r)))*score(:,1:r)';tsquare=sum(tmp.*tmp)';==========主成分分析和因子分析的区别1、因子分析中是把变量表示成各因子的线性组合,而主成分分析中则是把主成分表示成
8、个变量的线性组合。2、主成分分析的重点在于解释个变量的总方差,而因子分析则把重点放在解释各变量之间的协方差。3、主成分分析中不需要有假设