全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
4342 3
2007-07-05

偏最小二乘法中的交叉有效性计算的matlab程序,怎么计算出来的预测误差平方和PRESS不太对,偏大;请大牛指教!

function re = GetPRESS(E0,F0,h)

[n,m] = size(E0);
F0n = size(F0);
if F0n ~= n | n <2 | m < 2
disp('errors!');
return;
end

press = 0;

for i = 1:n
E = [ E0(1:i-1,:); E0(i+1:n,:) ];
F = [ F0(1:i-1,:); F0(i+1:n,:) ];

for j = 1:h % h步
w = ( E'* F )/ norm( E'*F );
W(:, j ) = w;
W;

t = E * w;
T(:, j ) = t; % 主成分

p = E'* t / ( (norm( t))^2 );
P(:, j ) = p;

r = F'* t / ( (norm( t))^2 );
R( j ) = r; % 系数

E = E - t * p';
F = F - t * r';

end

% 求W* 的值
for k = 1: h
W_h_s = eye(m);
for j = 1:(k-1)
W_h_s = W_h_s * ( eye(m) - W(j) *( P(j) )');
end

W_h_s = W_h_s * W(:,k); % Wh* 的值

W_s(:,k) = W_h_s;
end

F0i_s = E0(i,:) * (W_s * R'); % 求F0i的拟合值
F0i = F0(i);

% Yi_Yh_i = ( F0i - F0i_s )^2

press = press + ( F0i - F0i_s )^2; % 两值相减再平方

end

re = press;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-7-12 10:12:05
先谢谢!我先研究研究
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-7-12 10:25:40
非常感谢,省大了劲了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-5-9 10:25:22
谢谢,正需要。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群