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

news/2024/9/29 0:22:25

原文链接: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指标

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/47145.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

c#

枚举类型对数据库的操作添加数据添加完清空(textbox.Text="";)更新结构体 (定义)数组声明结构体

GIS Server for Linux 挂载 Windows CIFS 共享文件夹

需保证,所发布的数据,文件名、路径,不带中文windows 配置共享文件夹 略 Linux 安装 cifs-utils rpm -ivh cifs-utils-6.2-10.el7.src.rpmLinux 创建挂载点并挂载 mkdir /mnt/testfolder chmod 770 /mnt/testfoldermount.cifs //192.168.1.34/sjzx /mnt/testfolder -o userna…

MBR60200PT-ASEMI逆变箱专用MBR60200PT

MBR60200PT-ASEMI逆变箱专用MBR60200PT编辑:ll MBR60200PT-ASEMI逆变箱专用MBR60200PT 型号:MBR60200PT 品牌:ASEMI 封装:TO-247 最大平均正向电流(IF):60A 最大循环峰值反向电压(VRRM):200V 最大正向电压(VF):0.85V~0.90V 工作温度:-40C~175C 反向恢复时间:5ns…

小程序的小组件技术能力和场景解析

随着移动互联网的快速发展,小程序等轻量级应用平台日益成为用户获取信息和服务的重要渠道。而小组件也在其中扮演了至关重要的角色,不仅能够提升用户的交互体验,还能帮助开发者高效地构建功能丰富、界面美观的小程序。随着移动互联网的快速发展,小程序等轻量级应用平台日益…

编译器 7. 中间代码 | 4. 主要语句的IR树

1. 调用 output := concat(output,s)2. 数组,赋值 a[i+1] := 0 数组变量 a[i]为 a(基地址) + i*w(偏移量)3. while 循环 伪代码: while cnd do body start: if not cnd goto donebodygoto start done两种实现:4. for 循环: 变量声明 + while 循环 + 变量++条件语句 if...th…

arduino实现超声波测距仪

需要的配件: 一个 arduino uno r3 一个 1602液晶显示器 一个 超声波模块 杜邦线若干接线图:#include <LiquidCrystal.h> //声明调用库//1602A液晶显示器 const int rs=12,en=11,d4=5,d5=4,d6=3,d7=2; //对应引脚 LiquidCrystal lcd(rs,en,d4,d5,d6,d7); //创建…

关于netty 一些使用细节

netty 的客户端通常是websoket 但是为了演示也可以用netty做客户端,Channel:可以被理解为数据传输的通道。 Pipeline:可以被视为一个由多个工序组成的流水线,负责将数据(事件)传递给流水线上的每个处理工序(handler)。 Msg:指的是在流水线上流动的数据。最初输入的数…

webp格式的动图怎么转换成jpeg图片?

有没有自媒体小伙伴遇到这样的问题呢?找到一张好看的webp格式的图片素材,但是编辑软件却无法打开,显示不支持webp格式的图片。遇到这种情况,你是选择放弃这张素材,重新寻找呢?其实完全没有必要!只要将格式转换成jpeg,就可以继续编辑图片了。 方法一:使用图片在线转换工…