通过MATLAB实现偏最小二乘回归预测

偏最小二乘回归是一种新的多元统计数学分析方法,将多元线性回归、典型相关分析和主成分分析进行有机结合。
建模原理:
假定p有自变量x1,x2,…,xp(这个就是特征值)和q个因变量y1,y2,…,y3(这个就是你要预测的值),构成自变量与因变量的数据表X={x1,x2,…,xp}和Y={y1,y2,…,y3}。在X和Y中提取成分t1和u1,在提取t1和u1成分时,满足t1和u1尽可能大的携带各自数据表中的变异信息,以及t1与u1相关程度达到最大。第一个成分t1和u1被提取后,分别实施X对t1以及Y对u1的回归。若回归方程此时已经达到满意的精度,则成分正确;否则将利用X被t1以及Y被u1解释后的残余信息进行第二轮的成分t2,u2提取,继续实施X和Y对t2、u2的回归,对上述过程进行迭代,直到满足精度要求为止。若最终对X共提取了m个成分t1,t2,tm,在通过实施Y对t1,t2,tm的回归,最后可转化为Y对原变量x1,x2…xp回归方程。

clc,clear
ab0=xlsread('C:\Users\yxz\Desktop\TrainDatatotal\aloneChangZhou\subtract_big_errors\liuyif\liuyifa_change_train_data\start_datas2.csv');   %原始数据存放在纯文本文件pz.txt中
%a_test=ab0(:,1:512); %从第二列到最后
a2=xlsread('C:\Users\yxz\Desktop\pca_duoyuan\testjieguo.csv');%读文件
a_test=a2(:,2:513); %从第二列到最后

ty_1=a_test(1,:);
ty_2=a_test(2,:);
ty_3=a_test(3,:);
ty_4=a_test(4,:);
ty_5=a_test(5,:);
ty_6=a_test(6,:);
ty_7=a_test(7,:);
ty_8=a_test(8,:);

mu=mean(ab0);sig=std(ab0); %求均值和标准差
rr=corrcoef(ab0);   %求相关系数矩阵
ab=zscore(ab0); %数据标准化
a=ab(:,[1:512]);b=ab(:,513);  %提出标准化后的自变量x和因变量数据y,着一步很重要
[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] =plsregress(a,b);%偏最小二乘回归命令plsregress

[XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2] =plsregress(a,b,8);
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的系数,每一列是一个回归方程
result1=beta3(1,:)+ty_1*beta3([2:n+1],:) %这些就是预测值
result2=beta3(1,:)+ty_2*beta3([2:n+1],:)
result3=beta3(1,:)+ty_3*beta3([2:n+1],:)
result4=beta3(1,:)+ty_4*beta3([2:n+1],:)
result5=beta3(1,:)+ty_5*beta3([2:n+1],:)
result6=beta3(1,:)+ty_6*beta3([2:n+1],:)
result7=beta3(1,:)+ty_7*beta3([2:n+1],:)
result8=beta3(1,:)+ty_8*beta3([2:n+1],:)

PCTVAR是一个两行的矩阵,第一行为自变量提取成分的贡献率,第二行为因变量提取成分的贡献率。

Xloadings是p*ncomp因子载荷,每行包含定义原始预测变量的线性组合系数

Xscores返回预测变量得分,即PLS因子是X中变量的线性组合,Xscores是一个n*ncomp正交矩阵,行对应观察值,列对应因子

参考:
1.李文强,段振云,赵文辉.基于偏最小二乘模型的无人机航材需求预测方法[J].系统工程理论与实践,2018,38(05):1354-1360.
2.偏最小二乘回归
3.plsregress的解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值