声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3726|回复: 11

[编程技巧] 请教 主成分分析 matlab编程问题

[复制链接]
发表于 2006-8-22 11:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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


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

stdr=std(dataset); %求个变量的标准差
[n,m]=size(dataset); %定义矩阵行列数
sddata=dataset./stdr(ones(n,1),:); %将原始数据采集标准化
sddata %输出标准化数据
[p,princ,eigenvalue,t2]=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个主成分得分值
111.GIF
回复
分享到:

使用道具 举报

发表于 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=[1,2,3,4,5,6,7,8];
  y=[0,0,0,15,215,0,20,0];
  bar(x,y)
  grid on %显示网格
  若要在生成的图中添加对坐标的标识、图的标题,以及更改x轴的数字到字符,可用生成图的工具栏中的Insert(xlabel,ylabel,title,axes中的label)。
③帕累托图 
defects=['pits  ';'cracks';'holes ';'dents ']; %字符数要相同,不足补空格

quantity=[5 3 19 25];

pareto(quantity,defects) %显示结果按比例大小排列,若x在相应y中的值为0,则在图中将不会显示出。
发表于 2006-8-23 21:24 | 显示全部楼层
方差贡献率一般出现在经济学中比较多
1.JPG
 楼主| 发表于 2006-12-19 17:05 | 显示全部楼层
又把以前的问题翻出来了  我现在用主元分析法计算的第一主元的系数全部为负数,这怎么解释阿?
  请达人指教,谢谢
发表于 2006-12-20 12:23 | 显示全部楼层
我也遇到了这样的问题!
发表于 2006-12-21 22:14 | 显示全部楼层
用主元分析法计算的第一主元的系数全部为负数表示:1,第一主元是主要因素,这是毫无疑问2。负数表示与因变量成反比。
所以第一主元的系数全部为负数不能理解是错误的。
发表于 2006-12-22 22:25 | 显示全部楼层
如果按照负数构造的线性组合,得到的新元素是不是没实际意义了。
我看有些人直接将其当成正数用。那这样对么?
发表于 2006-12-23 10:03 | 显示全部楼层
我都用spss做主成分分析的
 楼主| 发表于 2006-12-26 11:03 | 显示全部楼层
主元分析是一种把原来多个指标化为少数几个相互独立的综合指标(主元)的统计方法。而主元是原变量的线性组合,只是主元之间的冗余信息减少。我现在感觉主元分析主要的用处在经济方面,而用在工业现场分析似乎没有多大的现实意义。
  不知道我说的对不对,还请各位达人指点。
发表于 2007-4-29 08:10 | 显示全部楼层

my question

如何将其他数据库调入Matlab
发表于 2007-4-29 08:12 | 显示全部楼层

my question

如何将其他数据库调入Matlab
发表于 2007-4-29 08:14 | 显示全部楼层
如何将其他数据库中的数据如spss.excel中的数据调入matlab,谢谢。
如何用matlab作主成分分析
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-26 00:37 , Processed in 0.067061 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表