nippls.m

来自「有监督自组织映射-偏最小二乘算法(A supervised self-organ」· M 代码 · 共 39 行

M
39
字号
function [B,P] = NIPPLS(X, Y, LatVar)

[Nobj, NvarX] = size(X);
[Dummy, NvarY] = size(Y);
if NvarX < LatVar
    disp('too much latent variables selected');
    return;
end 
% Initialise zero valued matrices
P       = zeros(NvarX,LatVar); % 
Q       = zeros(NvarY,LatVar);
W       = zeros(NvarX,LatVar);
T       = zeros(Nobj,LatVar);
U       = zeros(Nobj,LatVar);
B       = zeros(1,LatVar);
% Scan PLS model for all latent variables
for lv = 1:LatVar
  [PN,QN,WN,TN,UN] = Nipals(X,Y);
  B(1,lv)   = UN'*TN/(TN'*TN);
  X        = X - TN*PN';          % deflate X matrix
  Y        = Y - B(1,lv)*TN*QN';  % deflate Y matrix
  T(:,lv)   = TN(:,1);            % replace loadings, scores and weights
  U(:,lv)   = UN(:,1);
  P(:,lv)   = PN(:,1);
  W(:,lv)   = WN(:,1);
  Q(:,lv)   = QN(:,1);
end

BCoeff=TransformBack(B, W, P, Q, LatVar);
if NvarY > 1
  for lv = 2:LatVar
    j   = (lv-1)*NvarY+1;
    k  = j-NvarY;
    BCoeff(j:lv*NvarY,:) = BCoeff(j:lv*NvarY,:) + BCoeff(k:(lv-1)*NvarY,:);
  end
else
  BCoeff = cumsum(BCoeff);
end
B=BCoeff(1+(LatVar-1)*NvarY:LatVar*NvarY,:)';   

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?