Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-03-23, 10:35   #1
zhitongxing
初级会员
 
注册日期: 2007-12-21
帖子: 1
声望力: 0
zhitongxing 正向着好的方向发展
默认 【讨论】探讨主成分回归

本人最近用matlab编写了主成份回归,但是在回归的时候出现了点问题,有兴趣的人请联系啊
邮箱[email protected]
zhitongxing 当前离线   回复时引用此帖
旧 2008-03-23, 11:00   #2
dnping
高级会员
 
注册日期: 2007-07-26
年龄: 40
帖子: 268
声望力: 24
dnping 是一个将要出名的人
默认

在论坛的化学,数学与物理版块发了关于主成分分析的书和相关程序,你可以看下……
另外,请贴出你的程序以及出错现象,好让别人帮你……
dnping 当前离线   回复时引用此帖
旧 2008-03-26, 16:04   #3
lele
游客
 
帖子: n/a
默认 偶初学,不要笑话。请高手指点迷津

%-----------------------------------------------------------------
%主成分分析源程序
%X表示输入原始的数据,m*n维的(m表示样本数,n表示变量数)
%contriz是要求的累计贡献率,以此来确定主成分数h
%A为测量矩阵,C校准浓度,A1为未知物的测量阵
%-----------------------------------------------------------------
function pcr(A,C,A1,contriz)
[m,n]=size(A);
[my,ny]=size(C);
[m1,n1]=size(A1);

%-----------------------------------------------------------------
%标准化原始数据
%计算样本各列的均值Z(一个n维的行向量),计算样本的标准差B(n维的行向量)
%-----------------------------------------------------------------
Z=mean(A);
B=std(A);

Y=(A-Z(ones(m,1),)./B(ones(m,1),
%对A1进行标准化
Z1=mean(A1);
B1=std(A1);
Y1=(A1-Z1(ones(m1,1),)./B1(ones(m1,1),


[pcs,scores,latents,tsquare]=princomp(Y) %进行主成分分析
contri=100*latents/sum(latents) %方差贡献率
lj_contri=zeros(n,1);
for i=1:n
lj_contri(i)=sum(contri(1:i));
if lj_contri(i)>=contriz*100
h=i;
break
end
end
if h<n-1
for j=h:n
lj_contri(j)=sum(contri(1:j));
end
end



lj_contri

pc=pcs(:,[1:h])
sc=scores(:,[1:h])


B=inv(sc'*sc)*sc'*C %B回归系数
F=A1*B
  回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
【原创】求教一个频率提取问题 rabbit94 MATLAB论坛 3 2008-04-05 18:16


所有时间均为北京时间。现在的时间是 20:03


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.