首页 > 其他分享 >Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择|附代码数据

Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择|附代码数据

时间:2023-07-21 23:23:14浏览次数:49  
标签:PLS 变量 回归 RMSECV method Matlab 离群 模型

全文下载:http://tecdat.cn/?p=22319

最近我们被客户要求撰写关于偏最小二乘法(PLS)回归的研究报告,包括一些图形和统计输出。

本文建立偏最小二乘法(PLS)回归(PLSR)模型,以及预测性能评估。为了建立一个可靠的模型,我们还实现了一些常用的离群点检测和变量选择方法,可以去除潜在的离群点和只使用所选变量的子集来 "清洗 "你的数据 。

步骤

  • 建立PLS回归模型
  • PLS的K-折交叉验证
  • PLS的蒙特卡洛交叉验证(MCCV)。
  • PLS的双重交叉验证(DCV)
  • 使用蒙特卡洛抽样方法进行离群点检测
  • 使用CARS方法进行变量选择。
  • 使用移动窗口PLS(MWPLS)进行变量选择。
  • 使用蒙特卡洛无信息变量消除法(MCUVE)进行变量选择
  • 进行变量选择

建立PLS回归模型

这个例子说明了如何使用基准近红外数据建立PLS模型。

 
plot(X');               % 显示光谱数据。
xlabel('波长指数');
ylabel('强度');

图片

参数设定

 
A=6;                    % 潜在变量(LV)的数量。
method='center';        % 用于建立PLS模型的X的内部预处理方法
PLS(X,y,A,method);  % 建立模型的命令

图片

图片

pls.m函数返回一个包含成分列表的对象PLS。结果解释。

regcoef_original:连接X和y的回归系数。
X_scores:X的得分。
VIP:预测中的变量重要性,评估变量重要性的一个标准。
变量的重要性。
RMSEF:拟合的均方根误差。
y_fit:y的拟合值。
R2:Y的解释变异的百分比。

PLS的K折交叉验证

说明如何对PLS模型进行K折交叉验证

 
clear;
A=6;                          % LV的数量
K=5;                          % 交叉验证的次数

图片

 
plot(CV.RMSECV)               % 绘制每个潜在变量(LVs)数量下的RMSECV值
xlabel('潜在变量(LVs)数量')          % 添加x标签
ylabel('RMSECV')              % 添加y标签

图片

图片

返回的值CV是带有成分列表的结构数据。结果解释。

RMSECV:交叉验证的均方根误差。越小越好
Q2:与R2含义相同,但由交叉验证计算得出。
optLV:达到最小RMSECV(最高Q2)的LV数量。


蒙特卡洛交叉验证(MCCV)的PLS

说明如何对PLS建模进行MCCV。与K-fold CV一样,MCCV是另一种交叉验证的方法。

 
% 参数设置
A=6;
method='center';
N=500;                          % Monte Carlo抽样的数量
% 运行mccv.
plot(MCCV.RMSECV);              % 绘制每个潜在变量(LVs)数量下的RMSECV值
xlabel('潜在变量(LVs)数量');

图片

 
MCCV

图片

MCCV是一个结构性数据。结果解释。

Ypred:预测值
Ytrue:真实值
RMSECV:交叉验证的均方根误差,越小越好。
Q2:与R2含义相同,但由交叉验证计算得出。

PLS的双重交叉验证(DCV)

说明如何对PLS建模进行DCV。与K-fold CV一样,DCV是交叉验证的一种方式。

 
% 参数设置

N=50;                                 % Monte Carlo抽样的数量
dcv(X,y,A,k,method,N);
DCV

图片

使用蒙特卡洛抽样方法的离群点检测

说明离群点检测方法的使用情况

 
A=6;
method='center';
F=mc(X,y,A,method,N,ratio);

图片

图片

结果解释。

predError:每个抽样中的样本预测误差
MEAN:每个样本的平均预测误差
STD:每个样本的预测误差的标准偏差

 
plot(F) % 诊断图

图片

注:MEAN值高或SD值高的样本更可能是离群值,应考虑在建模前将其剔除。

使用CARS方法进行变量选择。

 
A=6;
fold=5;
car(X,y,A,fold);

图片

结果解释。

optLV:最佳模型的LV数量
vsel:选定的变量(X中的列)。

 
plotcars(CARS); % 诊断图

图片

注:在这幅图中,顶部和中间的面板显示了选择变量的数量和RMSECV如何随着迭代而变化。底部面板描述了每个变量的回归系数(每条线对应一个变量)如何随着迭代而变化。星形垂直线表示具有最低RMSECV的最佳模型。

使用移动窗口PLS(MWPLS)进行变量选择

 
load corn_m51;                      % 示例数据
width=15;                           % 窗口大小
mw(X,y,width);
plot(WP,RMSEF);
xlabel('窗口位置');

图片

注:从该图中建议将RMSEF值较低的区域纳入PLS模型中。

使用蒙特卡洛无信息变量消除法(MCUVE)进行变量选择

 
N=500;
method='center';

UVE

图片

 
plot(abs(UVE.RI))

图片

结果解释。RI:UVE的可靠性指数,是对变量重要性的测量,越高越好。

进行变量选择

 
A=6;
N=10000;
method='center';
FROG=rd_pls(X,y,A,method,N);


              N: 10000
              Q: 2
          model: [10000x700 double]
        minutes: 0.6683
         method: 'center'
          Vrank: [1x700 double]
         Vtop10: [505 405 506 400 408 233 235 249 248 515]
    probability: [1x700 double]
           nVar: [1x10000 double]
          RMSEP: [1x10000 double]

图片

 
xlabel('变量序号');
ylabel('选择概率');

图片

结果解释:

模型结果是一个矩阵,储存了每一个相互关系中的选择变量。
概率:每个变量被包含在最终模型中的概率。越大越好。这是一个衡量变量重要性的有用指标。


图片

本文摘选 《 Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择 》 ,点击“阅读原文”获取全文完整资料。


点击标题查阅往期内容

R语言实现偏最小二乘回归法 partial least squares (PLS)回归
R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归R语言Lasso回归模型变量选择和糖尿病发展预测模型
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
Python贝叶斯回归分析住房负担能力数据集
Python用PyMC3实现贝叶斯线性回归模型
R语言区间数据回归分析
R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
PYTHON用时变马尔可夫区制转换(MRS)自回归模型分析经济时间序列
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
基于R语言实现LASSO回归分析
Python用PyMC3实现贝叶斯线性回归模型
使用R语言进行多项式回归、非线性回归模型曲线拟合
R语言中的偏最小二乘回归PLS-DAR语言生态学建模:增强回归树(BRT)预测短鳍鳗生存分布和影响因素
R语言实现偏最小二乘回归法 partial least squares (PLS)回归
Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择
偏最小二乘回归(PLSR)和主成分回归(PCR)
R语言如何找到患者数据中具有差异的指标?(PLS—DA分析)

标签:PLS,变量,回归,RMSECV,method,Matlab,离群,模型
From: https://www.cnblogs.com/tecdat/p/17572605.html

相关文章

  • matlab 郭彦甫 3 结构化程式与自定义函数
    1.脚本文件  保存文件格式 *.m  文件格式函数部分  fx  包含绝大部分的函数介绍注释为   行前加一个 %    如果为连续多行 需要先选中这些行 右键选择注释两个 %%  将下面的部分分为section   区块 通常用于debug    ......
  • matlab郭彦甫02基本操作与矩阵输入
    1.变量不声明    变量只能由数字 字母 _  组成        且不能以数字开头2.保留关键字  ans  运算结果 i  j  复数 inf  无穷∞eps  浮点相对精度  很小的数值NaN  非数字pi  圆周率iskeyword  查看matla......
  • MATLAB train 神经网络 函数
    MATLABtrain神经网络函数神经网络是一种用于模拟人脑神经系统的数学模型,它由大量的神经元和连接它们的权重组成。MATLAB是一个功能强大的数学计算软件,提供了丰富的工具箱和函数,用于神经网络的设计和训练。其中train函数是MATLAB中用于训练神经网络的重要函数之一。train函数的......
  • matlab怎么使用BP神经网络知乎
    使用BP神经网络解决二分类问题问题描述假设我们有一个数据集,其中包含一些二维点的坐标和它们对应的标签。我们想要训练一个神经网络来对新的点进行分类,即判断它们属于哪个类别。解决方案为了解决这个问题,我们可以使用BP神经网络。BP神经网络是一种经典的人工神经网络,通过反向传......
  • 【Matlab学习3.2】用if语句实现选择结构
    什么是选择结构选择结构又称为分支结构,是根据给定的条件是否成立来决定程序的执行流程。分为:用if语句实现选择结构。用switch语句实现选择结构。单分支if语句语句格式:if条件%关系运算或逻辑运算  语句组%可以是一条语句,也可以是多条语句end当条件结......
  • Matlab马尔可夫区制转换动态回归模型估计GDP增长率|附代码数据
    原文链接:http://tecdat.cn/?p=19918最近我们被客户要求撰写关于马尔可夫区制转换动态回归的研究报告,包括一些图形和统计输出。本文估计实际GDP增长率的两状态Markov区制转换动态回归模型  ( 点击文末“阅读原文”获取完整代码数据******** )。创建模型进行估计通过指定转移......
  • MATLAB用GARCH-EVT-Copula极值理论模型VaR预测分析股票投资组合|附代码数据
    全文链接:http://tecdat.cn/?p=30426最近我们被客户要求撰写关于GARCH-EVT-Copula的研究报告,包括一些图形和统计输出。对VaR计算方法的改进,以更好的度量开放式基金的风险。本项目把基金所持股票看成是一个投资组合,引入Copula来描述多只股票间的非线性相关性,构建多元GARCH-EVT-Cop......
  • m根据给定系统传递函数自动绘制系统结构图matlab仿真,包括直接型,级联型以及并联型
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要在控制系统分析和设计过程中,传递函数是一个重要的概念。通过传递函数,我们可以快速地分析系统的稳定性、响应特性等。同时,根据系统传递函数自动绘制系统结构图是一项非常有价值的技术,它可以帮助工程师更好地理......
  • m基于合成指纹的数字信息隐藏和提取matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要随着互联网和数字化技术的快速发展,数字信息的保护和安全已经成为了一个严峻的问题。数字信息隐藏技术是一种将敏感信息嵌入到其他无关信息中的技术,以此来保护信息的安全。其中,基于合成指纹的数字信息隐藏技术是一......
  • m根据给定系统传递函数自动绘制系统结构图matlab仿真,包括直接型,级联型以及并联型
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要         在控制系统分析和设计过程中,传递函数是一个重要的概念。通过传递函数,我们可以快速地分析系统的稳定性、响应特性等。同时,根据系统传递函数自动绘制系统结构图是一项非常有价值的技......