偏最小二乘回归 MATLAB 程序代码单因变量function y=pls(pz)[row,col]=size(pz);aver=mean(pz);stdcov=std(pz); %求均值和标准差rr=corrcoef(pz); %求相关系数矩阵%data=zscore(pz); %数据标准化stdarr = ( pz - aver(ones(row,1),:) )
/ stdcov( ones(row,1),:); % 标准化数据结果与 zscore()一致x0=pz(:,1:col-1);y0=pz(:,end); %提取原始的自变量、因变量数据e0=stdarr(:,1:col-1);f0=stdarr(:,end); %提取标准化后的自变量、因变量数据num=size(e0,1);%求样本点的个数temp=eye(col-1);%对角阵for i=1:col-1%以下计算 w,w*和 t 的得分向量, w(:,i)= ( e0'* f0 )/ norm( e0'*f0 ); t(:,i)=e0*w(:,i) %计算成分 ti 的得分 alpha(:,i)=e0'*t(:,i)/(t(:,i)'*t(:,i)) %计算 alpha_i ,其中(t(:,i)'*t(:,i))等价于 norm(t(:,i))^2 e=e0-t(:,i)*alpha(:,i)' %计算残差矩阵 e0=e; %计算 w*矩阵 if i==1 w_star(:,i)=w(:,i); else for j=1:i-1 temp=temp*(eye(col-1)-w(:,j)*alpha(:,j)'); end w_star(:,i)=temp*w(:,i); end %以下计算 ss(i)的值 beta=[t(:,1:i),o