📄 a.m
字号:
clear
clc
l=input('请输入l的值:');%l为最优主成分数
n=100;
e=[rand(n,1),randn(n,1),5*rand(n,1),10*rand(n,1),50*rand(n,1),100*rand(n,1),200*randn(n,1),500*rand(n,1)];
j=8;
[X1 Y1 X2 Y2]=scshuju2(n,e(:,j));
[p2,score2,eigenvalue2,t22]=princomp(X1);%对x1进行主成分分析
% p2是x1的协方差矩阵的特征向量
% score 是得分矩阵
%eigenvalue x的协方差矩阵的特征值
[u,s,v]=svd(X1);
v-p2
T2=score2(:,1:l);
P2=p2(:,1:l);
Y11=Y1-mean(Y1);
Bsz=pinv(T2'*T2)*T2'*Y11%主成分回归得到的B的估计值
X12=X1-ones(50,1)*(mean(X1));
X22=X2-ones(50,1)*(mean(X2));
Yc2=X12*P2*Bsz;%模型输出值
Yc2=Yc2+mean(Y1);
Tp2=X22*P2;%计算预测值
Yp2=Tp2*Bsz;
Yp=Yp2+mean(Y2);
figure(1)
plot(Y1,Y1,'k-',Y1,Yc2,'k+');xlabel('训练集实际输出值');ylabel('训练集预测输出值');title('PLS');
figure(2)
plot(Y2,Y2,'k-',Yp,Y2,'k+')
ec2=Y1-Yc2;%回归误差
ep2=Y2-Yp2;%预测误差
sum12=sum(ec2.^2);%回归误差的平方和
sum22=sum(ep2.^2);%预测误差的平方和
sum12s=var(Y1);%训练集实际输出值的方差
sum12s=sum12s*50;
sum22s=var(Y2);%预测集输出值的方差
sum22s=sum22s*50;
ec2=sqrt(1/(n/2-1)*sum12);
ep2=sqrt(1/(n/2)*sum22);
Rc2=1-sum12/sum12s;%回归误差的相关系数
Rp2=1-sum22/sum22s;%预测误差的相关系数
%figure(1)
%plot(Y1,Ycs1(:,1),'k+',Y1,YS1(:,1),'k-');xlabel('训练集实际输出值');ylabel('训练集预测输出值');title('MLR');axis([200,320,200,320]);
%figure(2)
%subplot(2,2,3),plot(Y1,Ycs2(:,1),'k+',YS1(:,1),YS1(:,1),'k-');xlabel('训练集输出实际值');ylabel('训练集预测输出值');title('PCR');axis([200,320,200,320]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -