傻瓜攻略(十二)——MATLAB实现偏最小二乘回归PLS

article/2025/10/7 13:33:30

这一定是一篇真正的傻瓜攻略,原理为根,算法为骨,应用为肉,傻瓜为皮。
本文主要介绍偏最小二乘回归的基本实现,主要内容基于司守奎《数学建模算法与应用》第11章,在其基础上进行优化。

偏最小二乘回归分析

偏最小二乘回归是回归分析方法的一种,其可以进行多对多线性回归建模,特别当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用偏最小二乘回归建立的模型具有传统的经典回归分析等方法所没有的优点。

偏最小二乘回归分析在建模过程中集中了主成分分析、典型相关分析和线性回归分析方法的特点,因此在分析结果中,除了可以提供一个更为合理的回归模型外,还可以同时完成一些类似于主成分分析和典型相关分析的研究内容,提供一些更丰富、深入的信息。

建模步骤

偏最小二乘回归分析的简单步骤如下图所示

在这里插入图片描述

代码实现

将以下数据保存到txt文件中,命名为pz.txt,作为分析的对象。

191	36	50	5	162	60
189	37	52	2	110	60
193	38	58	12	101	101
162	35	62	12	105	37
189	35	46	13	155	58
182	36	56	4	101	42
211	38	56	8	101	38
167	34	60	6	125	40
176	31	74	15	200	40
154	33	56	17	251	250
169	34	50	17	120	38
166	33	52	13	210	115
154	34	64	14	215	105
247	46	50	1	50	50
193	36	46	6	70	31
202	37	62	12	210	120
176	37	54	4	60	25
157	32	52	11	230	80
156	33	54	15	225	73
138	33	68	2	110	43

首先是数据处理,进行标准化;

%% 数据处理
ab0=load('pz.txt');   %原始数据存放在纯文本文件pz.txt中
mu=mean(ab0);sig=std(ab0); %求均值和标准差
rr=corrcoef(ab0);   %求相关系数矩阵
ab=zscore(ab0); %数据标准化
a=ab(:,[1:3]);    %提出标准化后的自变量数据
b=ab(:,[4:end]);  %提出标准化后的因变量数据

通过提取成分的贡献率确定要用的主成分个数,即ncomp。也可以跳过这一步,直接指定ncomp数值进行下一步。这个的具体数值要根据效果而定,选的越多效果越好(应该是)。

%% 判断提出成分对的个数
[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] =plsregress(a,b);
xw=a\XS;  %求自变量提出成分的系数,每列对应一个成分,这里xw等于stats.W
yw=b\YS;  %求因变量提出成分的系数
a_0=PCTVAR(1,:);b_0=PCTVAR(2,:);% 自变量和因变量提出成分的贡献率
a_1=cumsum(a_0);b_1=cumsum(b_0);% 计算累计贡献率
i=1;%赋初始值while ((a_1(i)<0.9)&(a_0(i)>0.05)&(b_1(i)<0.9)&(b_0(i)>0.05)) % 提取主成分的条件i=i+1;
end
ncomp=i;% 选取的主成分对的个数
fprintf('%d对成分分别为:\n',ncomp);% 打印主成分的信息
for i=1:ncompfprintf('第%d对成分:\n',i);fprintf('u%d=',i);for k=1:size(a,2)%此处为变量x的个数fprintf('+(%f*x_%d)',xw(k,i),k);endfprintf('\n');fprintf('v%d=',i);for k=1:size(b,2)%此处为变量y的个数fprintf('+(%f*y_%d)',yw(k,i),k);endfprintf('\n');
end

确定主成分个数以后就开始回归分析,得到回归方程;

%% 确定主成分后的回归分析
[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的系数,每一列是一个回归方程
fprintf('最后得出如下回归方程:\n')
for i=1:size(b,2)%此处为变量y的个数fprintf('y%d=%f',i,beta3(1,i));for j=1:size(a,2)%此处为变量x的个数fprintf('+(%f*x%d)',beta3(j+1,i),j);endfprintf('\n');
end

相关结果展示

根据回归方程计算预测值,并提取相应的真实值,用于后面的对比;对预测结果的展示,详情见MATLAB回归预测模型的结果展示和效果检验。

%% 求预测值
y1 = repmat(beta3(1,:),[size(a,1),1])+ab0(:,[1:n])*beta3([2:end],:);  %求y1,..,ym的预测值
y0 = ab0(:,end-size(y1,2)+1:end);  % 真实值

绘制回归系数的直方图,

%% 画回归系数的直方图
bar(BETA2','k')

分别绘制主成分对自变量和因变量的贡献率,较为直观;

%% 贡献率画图
figure 
percent_explained1 = 100 * PCTVAR(1,:) / sum(PCTVAR(1,:));
pareto(percent_explained1);
xlabel('主成分')
ylabel('贡献率(%)')
title('主成分对自变量的贡献率')figure
percent_explained = 100 * PCTVAR(2,:) / sum(PCTVAR(2,:));
pareto(percent_explained);
xlabel('主成分')
ylabel('贡献率(%)')
title('主成分对因变量的贡献率')

绘制预测值与真实值的对比图;

%% 绘制预测结果和真实值的对比
N = size(a,1);% 样本个数
for i =1:size(b,2)yz = y0(:,i);% 真实值yc = y1(:,i);% 预测值    R2 = (N*sum(yc.*yz)-sum(yc)*sum(yz))^2/((N*sum((yc).^2)-(sum(yc))^2)*(N*sum((yz).^2)-(sum(yz))^2)); %计算R方figureplot(1:N,yz,'b:*',1:N,yc,'r-o')legend('真实值','预测值','location','best')xlabel('预测样本')ylabel('值')string = {['第',num2str(i),'个因变量预测结果对比'];['R^2=' num2str(R2)]};title(string)
end

通过三种方法评价回归模型的效果;

%% 三种方法检验网络性能
for i =1:size(b,2)yz = y0(:,i);% 真实值yc = y1(:,i);% 预测值   % 第一种方法,均方误差perf = mse(y0,y1)% 第二种方法,回归图figure;plotregression(yz,yc,['第',num2str(i),'个回归图'])% 第三种方法,误差直方图e = yz-yc;figure;ploterrhist(e,['第',num2str(i),'个误差直方图'])
end

笔者的其他博客,欢迎大家阅读学习,共同进步

傻瓜攻略(一)——MATLAB主成分分析代码及结果分析实例

MATLAB中plotconfusion函数的应用

傻瓜攻略(二)——MATLAB数据挖掘之Apriori算法实现

win10系统中通过conda命令安装tensorflow(cpu版本,不用pip)


http://chatgpt.dhexx.cn/article/R9oMJxQ6.shtml

相关文章

R语言 偏最小二乘回归PLS代码

导入数据集&#xff0c;标准化变量 library(pls) #读取数据赋值 df read.csv("soil.csv") y scale(df$soil.som) #标准化 x scale(df[,2:50]) #标准化 soil.plsr plsr(y~x,validation "CV") #使用交叉验证确定主成分 summary(soil.plsr) plot(RMS…

MATLAB数值分析学习笔记:线性最小二乘回归

目录 问题引入 数学描述 数学实现 最大似然原理&#xff08;The Principle of Maximum Likelihood&#xff09; 代码实现 问题求解&#xff1a; 非线性关系的线性化 问题求解 代码实现 结果 内置函数 示例&#xff08;求解“问题引入”&#xff09; 练习题&#xff…

R语言实现偏最小二乘回归法 partial least squares (PLS)回归

偏最小二乘回归是一种回归形式 。 当使用pls时&#xff0c;新的线性组合有助于解释模型中的自变量和因变量。 最近我们被客户要求撰写关于偏最小二乘回归的研究报告&#xff0c;包括一些图形和统计输出。 在本文中&#xff0c;我们将使用pls预测“收入”。 library(Ecdat…

偏最小二乘回归 Matlab

什么是偏最小二乘回归&#xff1f; 偏最小二乘回归&#xff08;英语&#xff1a;Partial least squares regression&#xff0c; PLS回归&#xff09;是一种统计学方法&#xff0c;与主成分回归有关系&#xff0c;但不是寻找响应变量和自变量之间最大方差超平面&#xff0c;而…

偏最小二乘回归预测(MATLAB源码)

偏最小二乘回归&#xff08;英语&#xff1a;Partial least squares regression&#xff0c; PLS回归&#xff09;是一种统计学方法&#xff0c;与主成分分析有关系&#xff0c;但不是寻找响应变量和自变量之间最大方差的超平面&#xff0c;而是通过投影分别将预测变量和观测变…

MATLAB-偏最小二乘回归分析

偏最小二乘回归提供一种多对多线性回归建模的方法,特别当两组变量的个数很多,且都存在多重相关性,而观测数据的数量(样本量)又较少时,用偏最小二乘回归建立的模型具有传统的经典回归分析等方法所没有的优点。 偏最小二乘回归分析在建模过程中集中了主成分分析,典…

MATLAB实现偏最小二乘回归PLS

这一定是一篇真正的傻瓜攻略&#xff0c;原理为根&#xff0c;算法为骨&#xff0c;应用为肉&#xff0c;傻瓜为皮。 本文主要介绍偏最小二乘回归的基本实现&#xff0c;主要内容基于司守奎《数学建模算法与应用》第11章&#xff0c;在其基础上进行优化。 偏最小二乘回归分析 …

第10章 最小二乘线性回归分析

目录 10.1简单线性回归分析 1.描述性统计分析 2.对数据进行相关性分析 3.对数据进行回归分析的结果 4.变量的方差-协方差矩阵 5.对变量系数的假设检验结果 6.对因变量的拟合值的预测 7.回归分析得到残差序列 案例延伸 1.在回归方程中不包含常数项 2.限定参与回归的样…

普通最小二乘(OLS)回归

口译: (Interpreting:) OLS (Ordinary Least Squared) Regression is the most simple linear regression model also known as the base model for Linear Regression. While it is a simple model, in Machine learning it is not given much weightage. OLS is one such mo…

最小二乘法:求回归直线方程

最小二乘法&#xff1a;使离差平方和 &#xff08;i1~n&#xff09; ∑&#xff08;yi-yi&#xff09; 最小的方法 结论&#xff1a;设回归方程为ybxa;解得 回归直线方程&#xff1a;在一组具有相关关系的变量与数据的&#xff08;x&#xff0c;y&#xff09;间&#xff0…

最小二乘回归

最小二乘法&#xff08;Least squares又称最小平方法&#xff09;是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据&#xff0c;并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟…

离线安装IE 11

转自&#xff1a;http://blog.sina.com.cn/s/blog_711ab1b10102wzq1.html 1、在D盘下&#xff0c;新建文件夹&#xff0c;取名为“ie”。 2、将官网下载的IE11离线包放到此文件夹中。 3、为了后续步骤方便&#xff0c;可以将离线包重命名为IE11.exe。 4、打开cmd窗口&#xff0…

Microsoft Edge离线安装包下载

#Microsoft Edge 现已准备就绪 下一版 Microsoft Edge 已准备好进行企业评估。 立即下载离线安装程序、查看管理策略并尝试 Internet Explorer 模式。 下载链接

安装IE11提示“Internet Explorer在安装前需要更新”

在Windows 7上安装IE11浏览器时&#xff0c;发现如下报错提示&#xff1a; 此问题一般会出现在未安装过更新的windows系统上&#xff0c;一般可以通过系统更新安装补丁的方式来解决&#xff0c;但是系统自带的更新会按照发布顺序将所有微软发布的补丁都安装上&#xff0c;耗费…

安装ie11提示计算机安装了更新的版本,离线安装IE11浏览器提示quot;获取更新quot;解决方法 - 191路由网...

原标题&#xff1a;"Win7系统离线安装IE11浏览器提示"获取更新"如何解决&#xff1f;"相关电脑问题教程分享。 - 来源:网络投稿。  Win7系统离线安装IE11时出现提示“获取更新”如何解决&#xff1f;IE11浏览器是目前IE浏览器已知最高的版本&#xff0c;…

electron离线安装

公司因为安全原因&#xff0c;导致连不上npm的镜像&#xff0c;查找了资料&#xff0c;终于找到一种离线安装 electron 全局开发环境的方法&#xff0c;分享并记录一下: ps: 如果能用淘宝镜像&#xff0c;直接设置npm config set ELECTRON_MIRROR https://npm.taobao.org/mirr…

chrome浏览器离线安装包下载地址

在谷歌官网下载的chrome浏览器&#xff0c;下载的是安装器&#xff0c;要通过联网安装&#xff0c;谷歌浏览器官网&#xff1a;https://www.google.com/intl/zh-CN/chrome/https://www.google.com/intl/zh-CN/chrome/ 最新版本的统一下载链接&#xff0c;通过以下链接下载的都是…

如何下载谷歌浏览器官方最新离线安装包

谷歌浏览器最新离线安装包下载 问题描述 由于工作需要&#xff0c;想在内网机中安装谷歌浏览器&#xff0c;但是内网机是没有网的&#xff0c;所以想着下载一个谷歌浏览器官方最新离线安装包&#xff0c;看似挺简单的工作&#xff0c;但实际上下载还是很麻烦&#xff0c;经过…

【已解决】在Win11上离线安装 .NET Framework 3.5的方法【含网盘离线文件】

随 Windows 11提供的是.NET Framework 4.8&#xff0c;该环境可以运行任何 .NET Framework 4.x 应用。 而.NET Framework 3.5 支持为 .NET Framework 2.0 到 3.5 生成的应用&#xff0c;需要自行安装。 当Win11的应用软件需要.net framework3.5的运行环境时&#xff0c;就会提…

win11电脑安装ie11浏览器

win11系统本身是自带ie11的&#xff0c;只是把这个浏览器屏蔽掉了 首先要替换这两个文件 C&#xff1a;\Windows\System32 和 C&#xff1a;\Windows\SysWOW64 替换之后找到这个目录 把ie右键发送到桌面快捷方式 文件下载链接&#xff08;0积分&#xff09;&#xff1a;https:…