ZKX's LAB

求助用matlab做主成分分析,已经把贡献率,主成分载荷算出 matlab 主成分贡献率

2020-10-04知识5

主成分 你这个是matlab 计算结果吧 如果是就是复数单位的表示!

matlab主成分分析法是扎回事 主成分分析(Principal Component Analysis,PCA),将多个变量通过线性变换以选出较少个数重要变量的一种多元统计分析方法。又称主分量分析。matlab主成分分析法是用matlab编程序来实现你需要做的主成分分析。具体代码可以去网上收索。function[lambda,T,fai]=MSA2(A)求标准化后的协差矩阵,再求特征根和特征向量标准化处理[p,n]=size(A);for j=1:nmju(j)=mean(A(:,j));sigma(j)=sqrt(cov(A(:,j)));endfor i=1:pfor j=1:nY(i,j)=(A(i,j)-mju(j))/sigma(j);endendsigmaY=cov(Y);求X标准化的协差矩阵的特征根和特征向量[T,lambda]=eig(sigmaY);Xsum=sum(sum(lambda,2),1);for i=1:nfai(i)=lambda(i,i)/Xsum;end方差贡献率matlab里面有主成分分析的函数,网上可以见到,不会用用法,直接在matlab输入代码区内输help@就会出现关于@的用法,全英文,希望你能看懂。祝好!

求助用matlab做主成分分析,已经把贡献率,主成分载荷算出 因素分析的主要目的还是简化题目的结构,把多数单个的题目进行归类,归为少数几个因子,所以在spss里面因素分析在降维菜单下。因此,因素分析最主要的还是要用最少的维度来贡献最多的变异,这应该才是最主要的标准。即便贡献率超过85%,也要看:第一,是否产生了过多的维度,维度过多因素分析就意义不大了;第二,是否有些维度的贡献率偏低,贡献率偏低的话不要也罢。事实上对于做研究,40%的累积贡献率已经算是可以接受,50%以上就可以作为实际应用的标准了。倒是85%显得过于严苛。当然如果能达到这个水平且维度少,每个维度的贡献率又都比较高,那就很理想。spss做因素分析选取主成分个数的标准一般就是两个:第一是特征值,大于1的提取出来,这只是个大概;第二是参考碎石图,看看碎石图拐点出现的位置,看看图从什么地方开始趋于平缓。综合这两点,然后再看看累积贡献率是否合适,就可以完成成份的选取。

matlab怎么实现主成分分析 先求协方差矩阵,之后对协方差矩阵求特征值与特征向量,将特征从大到小排列,取其贡献率大于85%~95%的特征值与特征向量作为其主元与负荷,之后根据负荷求得分。说得有点抽象,你可以参考下面的例子导入原始数据[Xrow,Xcol]=size(X);Xrow:样本个数 Xcol:样本属性个数数据预处理,进行标准化出理,处理后均值为0方差为1Xc=mean(X);求原始数据的均值Xe=std(X);求原始数据的标准差X0=(X-ones(Xrow,1)*Xc)./(ones(Xrow,1)*Xe);标准阵X0,标准化为均值0,方差1;求标准化矩阵的协方差矩阵sigma=cov(X0);特征值分解[V,D]=eig(sigma);求协方差矩阵的特征向量(V)和特征值(D)lmda=diag(D);将主对角线上为特征值的对角阵变换成特征值列向量[Dt,index]=sort(lmda,'descend');特征值按降序排列,Dt是排列后的数组,index是序号根据累积主元贡献率选取主元个数npc=1;while sum(Dt(1:npc))/sum(Dt)npc=npc+1;end计算负荷向量P_all=V(:,index);全部负荷P_pcs=P_all(:,1:npc);主元负荷构建主元对角阵Lambda=diag(Dt(1:npc));计算得分向量t_all=X0*P_all;全部得分t_pcs=t_all(:,1:npc);主元得分

随机阅读

qrcode
访问手机版