?? f.txt
字號:
偏最小二乘法中的交叉有效性計算的matlab程序,怎么計算出來的預(yù)測誤差平方和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; % 系數(shù)
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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -