首页 > 其他分享 >R语言实现偏最小二乘回归法 partial least squares (PLS)回归

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

时间:2024-06-19 16:54:06浏览次数:30  
标签:02 ... 12 partial ## 回归 least comps int

原文链接:http://tecdat.cn/?p=8652

原文出处:拓端数据部落公众号

 

偏最小二乘回归是一种回归形式 。  当使用pls时,新的线性组合有助于解释模型中的自变量和因变量。

在本文中,我们将使用pls预测“收入” 。  

  r
library(Ecdat)
   
## 'data.frame':    753 obs. of  18 variables:
##  $ work      : Factor w/ 2 levels "yes","no": 2 2 2 2 2 2 2 2 2 2 ...
##  $ hoursw    : int  1610 1656 1980 456 1568 2032 1440 1020 1458 1600 ...
##  $ child6    : int  1 0 1 0 1 0 0 0 0 0 ...
##  $ child618  : int  0 2 3 3 2 0 2 0 2 2 ...
##  $ agew      : int  32 30 35 34 31 54 37 54 48 39 ...
##  $ educw     : int  12 12 12 12 14 12 16 12 12 12 ...
##  $ hearnw    : num  3.35 1.39 4.55 1.1 4.59 ...
##  $ wagew     : num  2.65 2.65 4.04 3.25 3.6 4.7 5.95 9.98 0 4.15 ...
##  $ hoursh    : int  2708 2310 3072 1920 2000 1040 2670 4120 1995 2100 ...
##  $ ageh      : int  34 30 40 53 32 57 37 53 52 43 ...
##  $ educh     : int  12 9 12 10 12 11 12 8 4 12 ...
##  $ wageh     : num  4.03 8.44 3.58 3.54 10 ...
##  $ income    : int  16310 21800 21040 7300 27300 19495 21152 18900 20405 20425 ...
##  $ educwm    : int  12 7 12 7 12 14 14 3 7 7 ...
##  $ educwf    : int  7 7 7 7 14 7 7 3 7 7 ...
##  $ unemprate : num  5 11 5 5 9.5 7.5 5 5 3 5 ...
##  $ city      : Factor w/ 2 levels "no","yes": 1 2 1 1 2 2 1 1 1 1 ...
##  $ experience: int  14 5 15 6 7 33 11 35 24 21 ...

首先,我们将数据分为训练和测试集来准备数据。 

  r
set.seed(777)
train<-sample(c(T,F),nrow(Mroz),rep=T) #50/50 训练/测试拆分

在上面的代码中,我们设置“ set.seed函数”以确保可重复性。然后,我们创建了“ train”对象 。 

现在,我们使用 “plsr”函数创建模型,然后使用“ summary”函数检查结果。我们  使用交叉验证。下面是代码。

   
## Data:    X dimension: 392 17 
##  Y dimension: 392 1
## Fit method: kernelpls
## Number of components considered: 17
## 
## VALIDATION: RMSEP
## Cross-validated using 10 random segments.
##        (Intercept)  1 comps  2 comps  3 comps  4 comps  5 comps  6 comps
## CV           11218     8121     6701     6127     5952     5886     5857
## adjCV        11218     8114     6683     6108     5941     5872     5842
##        7 comps  8 comps  9 comps  10 comps  11 comps  12 comps  13 comps
## CV        5853     5849     5854      5853      5853      5852      5852
## adjCV     5837     5833     5837      5836      5836      5835      5835
##        14 comps  15 comps  16 comps  17 comps
## CV         5852      5852      5852      5852
## adjCV      5835      5835      5835      5835
## 
## TRAINING: % variance explained
##         1 comps  2 comps  3 comps  4 comps  5 comps  6 comps  7 comps
## X         17.04    26.64    37.18    49.16    59.63    64.63    69.13
## income    49.26    66.63    72.75    74.16    74.87    75.25    75.44
##         8 comps  9 comps  10 comps  11 comps  12 comps  13 comps  14 comps
## X         72.82    76.06     78.59     81.79     85.52     89.55     92.14
## income    75.49    75.51     75.51     75.52     75.52     75.52     75.52
##         15 comps  16 comps  17 comps
## X          94.88     97.62    100.00
## income     75.52     75.52     75.52

输出包括“验证”部分中均方根误差 。因为有17个独立变量,所以有17个成分。 可以看到,在成分3或4之后,因变量中解释的方差几乎没有改善。下面是这些结果图的代码。 

 

我们将使用我们的模型进行预测。 

此后,我们计算均方误差。这是通过从测试集的因变量中减去我们的预测模型的结果来完成的。然后,我们对这些信息求平方并计算平均值。 

  r
mean((pls.pred-Mroz$income[test])^2)
   
## [1] 63386682

 我们使用传统的最小二乘回归模型运行数据并比较结果。

   
## [1] 59432814

最小二乘模型比偏最小二乘模型好一点,但是如果看一下模型,我们会看到几个不重要的变量。我们删除这些,看看结果如何 

  r
summary(lm.fit)
   

## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -20131  -2923  -1065   1670  36246 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.946e+04  3.224e+03  -6.036 3.81e-09 ***
## workno      -4.823e+03  1.037e+03  -4.651 4.59e-06 ***
## hoursw       4.255e+00  5.517e-01   7.712 1.14e-13 ***
## child6      -6.313e+02  6.694e+02  -0.943 0.346258    
## child618     4.847e+02  2.362e+02   2.052 0.040841 *  
## agew         2.782e+02  8.124e+01   3.424 0.000686 ***
## educw        1.268e+02  1.889e+02   0.671 0.502513    
## hearnw       6.401e+02  1.420e+02   4.507 8.79e-06 ***
## wagew        1.945e+02  1.818e+02   1.070 0.285187    
## hoursh       6.030e+00  5.342e-01  11.288  < 2e-16 ***
## ageh        -9.433e+01  7.720e+01  -1.222 0.222488    
## educh        1.784e+02  1.369e+02   1.303 0.193437    
## wageh        2.202e+03  8.714e+01  25.264  < 2e-16 ***
## educwm      -4.394e+01  1.128e+02  -0.390 0.697024    
## educwf       1.392e+02  1.053e+02   1.322 0.186873    
## unemprate   -1.657e+02  9.780e+01  -1.694 0.091055 .  
## cityyes     -3.475e+02  6.686e+02  -0.520 0.603496    
## experience  -1.229e+02  4.490e+01  -2.737 0.006488 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5668 on 374 degrees of freedom
## Multiple R-squared:  0.7552, Adjusted R-squared:  0.744 
## F-statistic: 67.85 on 17 and 374 DF,  p-value: < 2.2e-16
  r
lm.pred<-predict(lm.fit,Mroz[test,])
mean((lm.pred-Mroz$income[test])^2)
   
## [1] 57839715

 误差降低很多,这表明最小二乘回归模型优于偏最小二乘模型。此外, 偏最小二乘模型很难解释。因此,最小二乘模型是最受欢迎的模型。

 


最受欢迎的见解

1.R语言多元Logistic逻辑回归 应用案例

2.面板平滑转移回归(PSTR)分析案例实现

3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R语言泊松Poisson回归模型分析案例

5.R语言回归中的Hosmer-Lemeshow拟合优度检验

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

7.在R语言中实现Logistic逻辑回归

8.python用线性回归预测股票价格

9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标

 

标签:02,...,12,partial,##,回归,least,comps,int
From: https://www.cnblogs.com/tecdat/p/18256607

相关文章

  • SPSS用CHAID决策树、逻辑回归预测电信用户产品使用流失数据
    全文链接:https://tecdat.cn/?p=36513原文出处:拓端数据部落公众号在电信行业中,用户产品使用的流失情况对于企业而言是一个关键的运营指标。理解用户为何流失以及预测其流失趋势,对于提升用户满意度、减少流失率及制定有效的营销策略至关重要。本研究旨在通过SPSS软件,利用CHAID(Chi-......
  • 长短期记忆神经网络(LSTM)的回归预测(免费完整源代码)【MATLAB】
    LSTM(LongShort-TermMemory,长短期记忆网络)是一种特殊类型的递归神经网络(RNN),专门用于处理和预测基于时间序列的数据。与传统RNN相比,LSTM在处理长期依赖问题时具有显著优势。LSTM的基本结构LSTM由一个称为“细胞状态”(cellstate)的核心组件和三个门(gate)组成。这些门控制着......
  • R语言动态广义相加模型GAM张量积交互项、傅立叶项、谐波回归分析季节性时间序列航空乘
    全文链接:https://tecdat.cn/?p=36497原文出处:拓端数据部落公众号季节性在真实的时间序列中是非常常见的。许多系列以周期性、规律性的方式变化。例如,冰淇淋销售在温暖的假期月份往往更高,而候鸟数量围绕年度迁徙周期强烈波动。由于季节性非常普遍,已经开发了许多时间序列和预测方......
  • 哎,被这个叫做at least once的玩意坑麻了。
    你好呀,我是歪歪。前几天遇到一个生产问题,同一个数据在数据库里面被插入了两次,导致后续处理出现了一些问题。当时我们首先检讨了自己,没有做好幂等校验。甚至还发现了一个低级错误:对应的表,针对订单号,这个业务上具有唯一属性的字段,连唯一索引都没有加。如果加了唯一索引,也不至于出......
  • 08_线性回归详解
    线性回归详解1、包导入与数据创建importnumpyasnpimportmatplotlibimportmatplotlib.pyplotasplt#绘图全局参数设置config={"font.family":'TimesNewRoman',"font.size":14,"font.serif":'Simsun',}matplo......
  • 回归预测 | Matlab实现Transformer多输入单输出回归预测
    回归预测|Matlab实现Transformer多输入单输出回归预测目录回归预测|Matlab实现Transformer多输入单输出回归预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现Transformer多变量回归预测;2.运行环境为Matlab2023b;3.输入多个特征,输......
  • 基于K最近邻算法在二分类和回归分析中的应用
    目录前言:案例一、K近邻算法在二分类中的应用1.生成训练集2.用KNN算法拟合这些数据  4.验证KNN算法的分类结果案例二、K近邻算法在多分类中的应用1.生成多分类任务数据集2.用KNN算法拟合这些数据  5.验证KNN算法的分类结果 案例三K近邻算法在回归分析中的应用 1......
  • 【基于Transformer的多输出数据回归预测】附核心代码讲解及核心源码
    文章目录前言Transformer模型结构概览代码模块解释模块功能详解总结前言  在深度学习领域,Transformer模型以其独特的机制和优越的性能在自然语言处理(NLP)任务中占据了主导地位。这里我们提供了一个简化版的Transformer模型的实现,让你在一分钟内快速理解并上手Tra......
  • R语言数据分析案例27-使用随机森林模型对家庭资产的回归预测分析
    一、研究背景及其意义家庭资产分析在现代经济学中的重要性不仅限于单个家庭的财务健康状况,它还与整个经济体的发展紧密相关。家庭资产的增长通常反映了国家经济的整体增长,而资产分布的不均则暴露了经济不平等的问题。因此,全球视角下的家庭资产分析可以揭示国际经济动态,有助于......
  • MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据|附代码数据
    全文链接:http://tecdat.cn/?p=2655最近我们被客户要求撰写关于偏最小二乘回归(PLSR)和主成分回归(PCR)的研究报告,包括一些图形和统计输出。此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回归(PCR),并讨论这两种方法的有效性当存在大量预测变量时,PLSR和PCR都是对因变量建模......