在matlab中做matlab主成分分析函数

matlab中主成分分析的函数 -五星文库
免费文档下载
matlab中主成分分析的函数
导读:matlab中主成分分析的函数,功能:主成分分析,说明:[PC,SCORE,latent,tsquare]=princomp(X),给出各主成分(PC)、所谓的Z-得分(SCORE)、X的方差矩阵的特征值(lat,功能:运用协方差矩阵进行主成分分析,说明:[PC,latent,explained]=pcacov(X)通过协方差矩,返回主成分(PC)、协方差矩阵X的特征值(latent)和每个特
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)。
功能:运用协方差矩阵进行主成分分析
格式:PC=pcacov(X)
[PC,latent,explained]=pcacov(X)
说明:[PC,latent,explained]=pcacov(X)通过协方差矩阵X进行主成分分析,返回主成分(PC)、协方
差矩阵X的特征值(latent)和每个特征向量表征在观测量总方差中所占的百分数(explained)。
功能:主成分分析的残差
格式:residuals=pcares(X,ndim)
说明:pcares(X,ndim)返回保留X的ndim个主成分所获的残差。注意,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表 明数据X对应于每个主成分的方差是相同的;ndim=2表明数据X对应于第二成分及其余成分的方差是 相同的。
===============
主成分分析Matlab源码分析
function [pc, score, latent, tsquare] = princomp(x);
PRINCOMP Principal Component Analysis (centered and scaled data).
[PC, SCORE, LATENT, TSQUARE] = PRINCOMP(X) takes a data matrix X and
returns the principal components in PC, the so-called Z-scores in SCORES,
the eigenvalues of the covariance matrix of X in LATENT, and Hotelling's
T-squared statistic for each data point in TSQUARE.
Reference: J. Edward Jackson, A User's Guide to Principal Components
John Wiley & Sons, Inc. 1991 pp. 1-25.
B. Jones 3-17-94
The MathWorks, Inc.
$Revision: 2.9 $ $Date:
21:31:45 $
[m,n] = size(x);
% 得到矩阵的规模,m行,n列
r = min(m-1,n);
% max possible rank of x
% 该矩阵最大的秩不能超过列数,
% 也不能超过行数减1
avg = mean(x);
% 求每一列的均值,付给一个n维行向量
centerx = (x - avg(ones(m,1),:));
% x的每个元素减去该列的均值,
% 使样本点集合重心与坐标原点重合
[U,latent,pc] = svd(centerx./sqrt(m-1),0);
% “经济型”的奇异值分解
score = centerx*
% 得分矩阵即为原始矩阵乘主成分矩阵
if nargout & 3, end
latent = diag(latent).^2;
% 将奇异值矩阵转化为一个向量
latent = [latent(1:r); zeros(n-r,1)];
score(:,r+1:end) = 0;
if nargout & 4, end
tmp = sqrt(diag(1./latent(1:r)))*score(:,1:r)';
tsquare = sum(tmp.*tmp)';
==========
主成分分析和因子分析的区别
1、因子分析中是把变量表示成各因子的线性组合,而主成分分析中则是把主成分表示成个变量的线性组合。
2、主成分分析的重点在于解释个变量的总方差,而因子分析则把重点放在解释各变量之间的协方差。
3、主成分分析中不需要有假设(assumptions),因子分析则需要一些假设。因子分析的假设包括:各个共同因子之间不相关,特殊因子(specific factor)之间也不相关,共同因子和特殊因子之间也不相关。
4、主成分分析中,当给定的协方差矩阵或者相关矩阵的特征值是唯一的时候,的主成分一般是独特的;而因子分析中因子不是独特的,可以旋转得到不到的因子。
5、在因子分析中,因子个数需要分析者指定(spss根据一定的条件自动设定,只要是特征值大于1的因子进入分析),而指定的因子数量不同而结果不同。在主成分分析中,成分的数量是一定的,一般有几个变量就有几个主成分。
和主成分分析相比,由于因子分析可以使用旋转技术帮助解释因子,在解释方面更加有优势。大致说来,当需要寻找潜在的因子,并对这些因子进行解释的时候,更加倾向于使用因子分析,并且借助旋转技术帮助更好解释。而如果想把现有的变量变成少数几个新的变量(新的变量几乎带有原来所有变量的信息)来进入后续的分析,则可以使用主成分分析。当然,这中情况也可以使用因子得分做到。所以这中区分不是绝对的。
总的来说,主成分分析主要是作为一种探索性的技术,在分析者进行多元数据分析之前,用主成分分析来分析数据,让自己对数据有一个大致的了解是非常重要的。主成分分析一般很少单独使用,通常用做以下用途:
a 了解数据(screening the data);
b 和cluster analysis一起使用;
c 和判别分析一起使用,比如当变量很多,个案数不多,直接使用判别分析可能无解,这时候可以使用主成份发对变量简化(reduce dimensionality);
d 在多元回归中,主成分分析可以帮助判断是否存在共线性(条件指数),还可以用来处理共线性。
在算法上,主成分分析和因子分析很类似,不过,在因子分析中所采用的协方差
包含总结汇报、办公文档、专业文献、IT计算机、教程攻略、文档下载、教学研究、党团工作、外语学习以及matlab中主成分分析的函数 等内容。本文共2页
相关内容搜索6032人阅读
最近看了些主成分分析,混迹Matlab论坛,翻了n多帖子,对princomp函数有了些了解。
在此只讲一些个人理解,并没有用术语,只求通俗。
贡献率:每一维数据对于区分整个数据的贡献,贡献率最大的显然是主成分,第二大的是次主成分......
[coef,score,latent,t2] = princomp(x);(个人观点):
x:为要输入的n维原始数据。带入这个matlab自带函数,将会生成新的n维加工后的数据(即score)。此数据与之前的n维原始数据一一对应。
score:生成的n维加工后的数据存在score里。它是对原始数据进行的分析,进而在新的坐标系下获得的数据。他将这n维数据按贡献率由大到小排列。(即在改变坐标系的情况下,又对n维数据排序)
latent:是一维列向量,每一个数据是对应score里相应维的贡献率,因为数据有n维所以列向量有n个数据。由大到小排列(因为score也是按贡献率由大到小排列)。
coef:是系数矩阵。通过cofe可以知道x是怎样转换成score的。
则模型为从原始数据出发:
score= bsxfun(@minus,x,mean(x,1))*coef;(作用:可以把测试数据通过此方法转变为新的坐标系)
x= bsxfun(@plus,score*inv(coef),mean(x,1))
按 Ctrl+C 复制代码
%初始化数据
a=[-14.8,-3.16,1.98,3.01;-16.8,-2.96,-0.130,1.79;-15.5,-2.51,-0.737,1.79;-15.3,-2.57,0.276,-0.377;-17.0,-3.55,0.054,1.42;-17.9,-4.07,-0.877,-0.539;-14.5,-3.21,-0.441,-0.954;-15.6,-2.68,-1.04,-1.53;];
%调用princomp函数
[coef,score,latent,t2] = princomp(x);
%测试score是否和score_test一样
score_test=bsxfun(@minus,x,mean(x,1))*
score_test
latent=100*latent/sum(latent)%将latent总和统一为100,便于观察贡献率
pareto(latent);%调用matla画图
按 Ctrl+C 复制代码
上图是通过自带函数绘制,当贡献率累加至95%,以后的维数会不在显示,最多只显示10维。
下面用自己编写的表示:
之前的错误认识:
1.认为主成分分析中latent显示的贡献值是原始数据的,其实是加工后的数据的。解释:对原始数据既然选择PCA方法,那么计算机认为原始数据每维之间可能存在关联,你想去掉关联、降低维数。所以采用这种方法的。所以计算机并不关心原始数据的贡献值,因为你不会去用了,用的是加工后的数据(这也是为什么当把输入数据每一维的顺序改变后,score、latent不受影响的原因)。
2.认为PCA分析后自动降维,不对。PCA后会有贡献值,是输入者根据自己想要的贡献值进行维数的改变,进而生成数据。(一般大家会取贡献值在85%以上,要求高一点95%)。
3.PCA分析,只根据输入数据的特征进行主成分分析,与输出有多少类型,每个数据对应哪个类型无关。如果样本已经分好类型,那PCA后势必对结果的准确性有一定影响,我认为对于此类数据的PCA,就是在降维与准确性间找一个平衡点的问题,让数据即不会维数多而使运算复杂,又有较高的分辨率。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:28929次
排名:千里之外主成分分析和MATLAB应用
主成分分析和MATLAB应用
 相关文章:
     
主成分分析和MATLAB应用
》复制粘贴及免费下载.
(提示:先下载本站提供的辅助软件,再利用软件来下载本页面的文档.)
1、 :(你可以轻松复制该文章内容)
2、 点击下载: 
3、 相关文档(可以直接下载原文档)
 你可能还需要以下的文档:
1、不满意? 更多站内搜索:
2、还不满意? 更多站外搜索(支持原格式下载):
 相关文章:
 推荐文章:
本站所有资源均来自互联网,本站只负责技术收集和整理,均不承担任何法律责任,如有侵权违规等其它行为请联系我们.
Copyright @ 文档大全&&&&湘ICP备号 Email: &&&您现在的位置:&>&&>&&>&
共有&4&人回复了该问答液相色谱数据处理使用spss或MATLAB做主成分分析和空间散点图
板油有没有使用过spss或MATLAB做主成分分析和空间散点图?spss还好,比较好操作,但是spss空间散点图不会做。MATLAB需要编程,用起来比较麻烦,还是属于基础型的,有版友会吗?哪位板油会用spss做主成分分析和空间散点图绘制?
回复于: 19:03:20找了几个资料您参考下附件
快速回复【花三五分钟,帮别人解决一个问题,快乐自己一天!】
回复于: 23:34:08
原文由 03yx2 发表:板油有没有使用过spss或MATLAB做主成分分析和空间散点图?spss还好,比较好操作,但是spss空间散点图不会做。MATLAB需要编程,用起来比较麻烦,还是属于基础型的,有版友会吗?哪位板油会用spss做主成分分析和空间散点图绘制?matlab做主成分分析不是很麻烦的。只需一个命令。我先去试试spss
回复于: 23:36:57
原文由 jennysing 发表:原文由 03yx2 发表:板油有没有使用过spss或MATLAB做主成分分析和空间散点图?spss还好,比较好操作,但是spss空间散点图不会做。MATLAB需要编程,用起来比较麻烦,还是属于基础型的,有版友会吗?哪位板油会用spss做主成分分析和空间散点图绘制?matlab做主成分分析不是很麻烦的。只需一个命令。我先去试试spss好的,谢谢jennysing。有空我们一起研究。
回复于: 19:03:20
找了几个资料您参考下
回复于: 12:40:24
原文由 jennysing 发表:找了几个资料您参考下好的。谢谢。
问答用户推荐 回答数:0
未解决问题}

我要回帖

更多关于 matlab主成分分析案例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信