偏最小二乘是建立表到表的線性擬合關係,然後**的方法(處理高維資料),比如在光譜分析中,x是某物質的光譜樣本構成的訓練集,y是對應的成分資料,x是要**成分的光譜資料
function [y5,s] = pls2(x,y,x)
%[y5,s] = pls2(x,y,x)【參考自司守奎教材 偏最小而成回歸章節**】
% x、y 為模型生成樣本,x為需要**物件,y5是**結果
% s.sol為模型的矩陣
s.name = char();
pz = [x,y];%通過這裡注意資料組織形式,一行為乙個資料
mu = mean(pz);sig = std(pz);
mu=mean(pz);sig=std(pz); %求均值和標準差
rr=corrcoef(pz); %求相關係數矩陣
data=zscore(pz); %資料標準化
n=size(x,2);m=size(y,2); %n 是自變數的個數,m 是因變數的個數
x0=pz(:,1:n);y0=pz(:,n+1:end);
e0=data(:,1:n);f0=data(:,n+1:end);
num=size(e0,1);%求樣本點的個數
chg=eye(n); %w 到 w*變換矩陣的初始化
for i=1:n
%以下計算 w,w*和 t 的得分向量,
matrix=e0'*f0*f0'*e0;
[vec,val]=eig(matrix); %求特徵值和特徵向量
val=diag(val); %提出對角線元素
[val,ind]=sort(val,'descend');
w(:,i)=vec(:,ind(1)); %提出最大特徵值對應的特徵向量
w_star(:,i)=chg*w(:,i); %計算 w*的取值
t(:,i)=e0*w(:,i); %計算成分 ti 的得分
alpha=e0'*t(:,i)/(t(:,i)'*t(:,i)); %計算 alpha_i
chg=chg*(eye(n)-w(:,i)*alpha'); %計算 w 到 w*的變換矩陣
e=e0-t(:,i)*alpha'; %計算殘差矩陣
e0=e;
%以下計算 ss(i)的值
beta=[t(:,1:i),ones(num,1)]\f0; %求回歸方程的係數
beta(end,:)=; %刪除回歸分析的常數項
cancha=f0-t(:,1:i)*beta; %求殘差矩陣
ss(i)=sum(sum(cancha.^2)); %求誤差平方和
%以下計算 press(i)
for j=1:num
t1=t(:,1:i);f1=f0;
she_t=t1(j,:);she_f=f1(j,:); %把捨去的第 j 個樣本點儲存起來
t1(j,:)=;f1(j,:)=; %刪除第 j 個觀測值
beta1=[t1,ones(num-1,1)]\f1; %求回歸分析的係數
beta1(end,:)=; %刪除回歸分析的常數項
cancha=she_f-she_t*beta1; %求殘差向量
press_i(j)=sum(cancha.^2);
endpress(i)=sum(press_i);
if i>1
q_h2(i)=1-press(i)/ss(i-1);
else
q_h2(1)=1;
endif q_h2(i)<0.0975
fprintf('提出的成分個數 r=%d',i);
r=i;
break
endendbeta_z=[t(:,1:r),ones(num,1)]\f0; %求 y 關於 t 的回歸係數
beta_z(end,:)=; %刪除常數項
xishu=w_star(:,1:r)*beta_z; %求y關於x的回歸係數,且是針對標準資料的回歸係數,每一列是乙個回歸方程
mu_x=mu(1:n);mu_y=mu(n+1:end);
sig_x=sig(1:n);sig_y=sig(n+1:end);
for i=1:m
ch0(i)=mu_y(i)-mu_x./sig_x*sig_y(i)*xishu(:,i); %計算原始資料的回歸方程的常數項
endfor i=1:m
xish(:,i)=xishu(:,i)./sig_x'*sig_y(i); %計算原始資料的回歸方程的係數,每一列是乙個回歸方程
endsol=[ch0;xish]; %顯示回歸方程的係數,每一列是乙個方程,每一列的第乙個數是常數項
%% 用模型進行**
y5= x*xish;
for i=1:size(y5,2)
y5(:,i)= y5(:,i)+ch0(i);
end%% 求模型的誤差以及擬合優度
yy=x*xish;y = y;
for i=1:size(yy,2)
yy(:,i)= yy(:,i)+ch0(i);
end e2 = abs((yy-y)./y);%求模型的相對誤差
s.relativeerror = e2;
for i=1:size(yy,2)
c1(i) = sqrt( sum( (yy(:,i)-y(:,i)).^2 ) ./ size(yy,1) );%求模型的均方根誤差
c2(i) = sqrt( sum((yy(:,i)-mean(y(:,i))).^2)./size(yy,1) );%標準誤差
[~,~,~,~,temp] = regress(yy(:,i),[ones(size(y,1),1),y(:,i)]);
c3(i) = temp(1);%擬合優度
ends.rootmse = c1;s.standarderror = c2;s.r2 = c3;
end
偏最小二乘法
偏最小二乘回歸是一種新型的多元統計資料分析方法,它與1983年由伍德和阿巴諾等人首次提出。近十年來,它在理論 方法和應用方面都得到了迅速的發展。密西根大學的弗耐爾教授稱偏最小二乘回歸為第二代回歸分析方法。偏最小二乘回歸方法在統計應用中的重要性主要的有以下幾個方面 1 偏最小二乘回歸是一種多因變數對多...
偏最小二乘法
偏最小二乘回歸是一種新型的多元統計資料分析方法,它與1983年由伍德和阿巴諾等人首次提出。近十年來,它在理論 方法和應用方面都得到了迅速的發展。密西根大學的弗耐爾教授稱偏最小二乘回歸為第二代回歸分析方法。偏最小二乘回歸方法在統計應用中的重要性主要的有以下幾個方面 1 偏最小二乘回歸是一種多因變數對多...
偏最小二乘法
偏最小二乘回歸是一種新型的多元統計資料分析方法,它與1983年由伍德和阿巴諾等人首次提出。近十年來,它在理論 方法和應用方面都得到了迅速的發展。密西根大學的弗耐爾教授稱偏最小二乘回歸為第二代回歸分析方法。偏最小二乘回歸方法在統計應用中的重要性主要的有以下幾個方面 1 偏最小二乘回歸是一種多因變數對多...