大路 发表于 2006-8-22 11:00

请教 主成分分析 matlab编程问题

小弟现在做一个25个测量点的主元分析。程序参考别人的例子,附在最后。现在小弟有几个问题不明白,请教一下大家
1.用pareto命令绘贡献率直方图,怎么只有前5个向量的贡献图,怎么显示全部的
2.源程序绘的方差贡献图是什么意思,哪位达人能给小弟解释一下?


%基于相关系数矩阵
clear;
load suju.mat;

stdr=std(dataset); %求个变量的标准差
=size(dataset); %定义矩阵行列数
sddata=dataset./stdr(ones(n,1),:); %将原始数据采集标准化
sddata %输出标准化数据
=princomp(sddata);
% p 每列是相应的特征向量数值,也即是每个组成分在各原是变量上的系数
%第一列是想对应于最大的特征值的特征向量 依此类推 princ n行m列矩阵
%是代表第一条信息的m个主成分分值
%eigenvalue 1维m元列向量,每条信息到样本中心的距离

per=100*eigenvalue/sum(eigenvalue) %求出各主成分的贡献率
cumsum(per) %列出各主成分的累积贡献率

figure(1)
pareto(per); %将贡献率绘成直方图
figure(2)

plot(eigenvalue,'r+'); %绘制方差贡献散点图
hold on
%保持图形
plot(eigenvalue,'g-'); %绘制方差贡献山麓图

p3=p(:,1:10) %提取前10个主成分得分系数
sc=princ(:,1:10) %提取前10个主成分得分值

happy 发表于 2006-8-23 21:08

per是不是suju.mat中的变量?
请把suju.mat给一下

下面是关于直方图的说明

① x=-2.9:0.1:2.9;
y=randn(1000,1);
hist(y,x)
②x=;
y=;
bar(x,y)
grid on %显示网格
若要在生成的图中添加对坐标的标识、图的标题,以及更改x轴的数字到字符,可用生成图的工具栏中的Insert(xlabel,ylabel,title,axes中的label)。
③帕累托图 
defects=['pits';'cracks';'holes ';'dents ']; %字符数要相同,不足补空格

quantity=;

pareto(quantity,defects) %显示结果按比例大小排列,若x在相应y中的值为0,则在图中将不会显示出。

happy 发表于 2006-8-23 21:24

方差贡献率一般出现在经济学中比较多

大路 发表于 2006-12-19 17:05

又把以前的问题翻出来了我现在用主元分析法计算的第一主元的系数全部为负数,这怎么解释阿?
请达人指教,谢谢

tz6091 发表于 2006-12-20 12:23

我也遇到了这样的问题!

zfx620 发表于 2006-12-21 22:14

用主元分析法计算的第一主元的系数全部为负数表示:1,第一主元是主要因素,这是毫无疑问2。负数表示与因变量成反比。
所以第一主元的系数全部为负数不能理解是错误的。

tz6091 发表于 2006-12-22 22:25

如果按照负数构造的线性组合,得到的新元素是不是没实际意义了。
我看有些人直接将其当成正数用。那这样对么?

grta 发表于 2006-12-23 10:03

我都用spss做主成分分析的

大路 发表于 2006-12-26 11:03

主元分析是一种把原来多个指标化为少数几个相互独立的综合指标(主元)的统计方法。而主元是原变量的线性组合,只是主元之间的冗余信息减少。我现在感觉主元分析主要的用处在经济方面,而用在工业现场分析似乎没有多大的现实意义。
不知道我说的对不对,还请各位达人指点。

gdongxing 发表于 2007-4-29 08:10

my question

如何将其他数据库调入Matlab

gdongxing 发表于 2007-4-29 08:12

my question

如何将其他数据库调入Matlab

gdongxing 发表于 2007-4-29 08:14

如何将其他数据库中的数据如spss.excel中的数据调入matlab,谢谢。
如何用matlab作主成分分析
页: [1]
查看完整版本: 请教 主成分分析 matlab编程问题