clc,clear
ef0=load('luttuce.txt');
ab0=ef0(1:60,:);%原始数据存放在纯文本文件data112.txt中
mu=mean(ab0);sig=std(ab0);%求均值和标准差
ab=zscore(ab0);%数据标准化
a=ab(:,1:19);b=ab(:,20:20);%提出标准化后的自变量和因变量数据
[XL,YL,XS,YS,BETA,PCTVRA,MSE,stats]=plsregress(a,b);
%XL的每一行是标准化变量对相应主成分的回归系数
%BETA各列是标准化因变量对标准化自变量的的回归系数
%PCTVAR的第一行的自变量组主成分的贡献率
xw=a\XS;%求自变量的主成分系数,每列对应一个成分,这里xw等于stats.W
yw=b\YS;%求因变量主成分系数
ncomp=input('请根据PCTVAR的值确定提出成分对的个数ncomp=');
[XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2]=plsregress(a,b,ncomp);
n=size(a,2);m=size(b,2);%n是自变量个数,m是因变量个数
beta3(1,:)=mu(n+1:end)-mu(1:n)./sig(1:n)*BETA2(2:end,:).*sig(n+1:end);
%原始数据回归方程常数项
beta3(2:n+1,:)=(1./sig(1:n))'*sig(n+1:end).*BETA2(2:end,:);
%计算原始变量x1…xn的系数,每一列是一个回归方程
bar(BETA2','b')%画直方图
yhat_cal=repmat(beta3(1,:),[size(a,1),1])+ab0(1:60,1:n)*beta3(2:end,:);
%求预测集的预测值
%z=load('1-yv.txt');%载入实际因变量的值
z=ab0(:,20:20);%直接调用建模集的最后一列
my=mean(z);%求因变量的平均值
N=length(z);%求因变量长度
RMSEcv=sqrt(sum((yhat_cal-z).^2)/N);
y1=z;
my1=mean(z);%求因变量的平均值
L1=length(z);%求因变量长度
Rc1=corrcoef(yhat_cal,y1);
%cd0=load('ta.txt');%原始数据存放在纯文本文件data112.txt中
%cd=zscore(cd0);%数据标准化
%c=cd(:,1:19);d=cd(:,20:20);%提出标准化后的自变量和因变量数据
%yhat=repmat(beta3(1,:),[size(c,1),1])+cd0(1:30,1:n)*beta3(2:end,:);
%求y1^y5的预测值
%ymax=max([yhat;cd0(:,end)]);%求预测值和观测值的最大值
%figure
ef=zscore(ef0);%数据标准化
c=ef(:,1:19);d=ef(:,20:20);%提出标准化后的自变量和因变量数据
yhat=repmat(beta3(1,:),[size(c,1),1])+ef0(1:100,1:n)*beta3(2:end,:);
%求y1^y5的预测值
ymax=max([yhat;ef0(:,end)]);%求预测值和观测值的最大值
figure
plot(ef0(1:60,n+1),yhat(1:60,1),'*',0:2,0:2,'Color','y');
%第一组数据输出(1到50行)
hold on
plot(ef0(61:100,n+1),yhat(61:100,1),'*',0:2,0:2,'Color','K');
%第二组数据输出(51到100行)
%hold on
%plot(ab0(31:45,n+1),yhat(31:45,1),'*',9:15,9:15,'Color','g');
%第三组数据输出(101到165行)
%hold on
%plot(ab0(46:60,n+1),yhat(46:60,1),'*',9:15,9:15,'Color','y');
%第四组数据输出(101到165行)
%hold on
%plot(ab0(61:75,n+1),yhat(61:75,1),'*',9:15,9:15,'Color','K')
%plot(cd0(:,n+1),yhat(:,1),'*',0:2,0:2,'Color','k');
%legend('原叶绿素含量',2)
%y=load('ya.txt');%载入实际因变量的值
yhat_p=yhat(61:100,:);
y2=ef0(61:100,20:20);
my2=mean(y2);%求因变量的平均值
L2=length(y2);%求因变量长度
Rp1=corrcoef(yhat_p,y2);
RMSep=sqrt(sum((yhat_p-y2).^2)/L2);
PLSR.zip_2组PLSR_PLSR matlab_matlab plsr模型_最小二乘 拟合_波长拟合
版权申诉
5星 · 超过95%的资源 83 浏览量
2022-07-13
20:14:17
上传
评论 1
收藏 1KB ZIP 举报
JaniceLu
- 粉丝: 78
- 资源: 1万+
评论1