本文介绍主成分回归分析(Principal Components Regression),并通过示例展示其实现过程。

给定p个预测变量和响应变量,多元线性回归使用如最小二乘法获得最小误差平方和(RSS):

RSS = Σ(yi–y^i)2{Σ(y_i – ŷ_i)^2}Σ(yi​–y^​i​)2

-Σ: 求和符号
-yi{y_i}yi​: 第i个观测的实际响应值
-y^i{ŷ_i}y^​i​: 基于多重线性回归模型获得预测值

然而,当预测变量高度相关时,会产生多重共线问题,导致模型系数估计不可靠、高方差。避免该问题的一个方法是使用主成分回归分析 ———— 从p个预测变量中发现M个线性组合(主成分),然后把主成分作为预测变量使用最小二乘法拟合线性回归模型。下面通过示例带你实现主成分回归分析。

加载必要工具包

最简单方式执行主成分回归分析是使用pls包:

# 安装包
install.packages("pls")# 加载包
library(pls)

拟合模型

为了简单方便,我们使用内置的mtcars数据集,包括不同品牌汽车的数据:

head(mtcars)#                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
# Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
# Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
# Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
# Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
# Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
# Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

本例主成分回归分析使用hp作为响应变量,下面变量作为预测变量:

  • mpg (Miles/(US) gallon)
  • disp (Displacement)
  • drat (Rear axle ratio)
  • wt (Weight)
  • qsec (1/4 mile time)

下面代码利用上述数据拟合模型,其中两个参数解释如下:

  • scale = TRUE 每个预测变量都被标准为均值为0,标准差为1,这避免了模型中预测变量使用不同度量单位而产生的影响。

  • validation = “CV”: 使用K折交叉验证评估模型表现,默认K为10。也可以使用LOOCV参数。


# 是的示例可重现
set.seed(1)#fit PCR model
model <- pcr(hp~mpg+disp+drat+wt+qsec, data=mtcars, scale=TRUE, validation="CV")

选择主成分数

我们依据获得模型,现在需要决定保留主成分数量。下面代码是通过k次交叉验证计算的检验均方根误差(RMSE):

summary(model)# Data:    X dimension: 25 5
#   Y dimension: 25 1
# Fit method: svdpc
# Number of components considered: 5
#
# VALIDATION: RMSEP
# Cross-validated using 10 random segments.
#        (Intercept)  1 comps  2 comps  3 comps  4 comps  5 comps
# CV           59.98    26.51    26.53    25.91    27.35    30.49
# adjCV        59.98    26.44    26.25    25.59    26.91    29.82
#
# TRAINING: % variance explained
#     1 comps  2 comps  3 comps  4 comps  5 comps
# X     73.45    89.53    95.68    99.04   100.00
# hp    81.11    85.56    87.53    87.65    88.25

我们解释输出中的两个表格:

  1. VALIDATION: RMSEP

这个表告诉我们k折交叉检验的检验RMSE,解雇哦如下:

  • 模型中仅用截距项, 检验RMSE为 69.66.
  • 如果增加第一主成分,检验RMSE减少到 44.56.
  • 如果增加第二主成分,检验RMSE减少到 35.64.

我们看到继续增加主成分会导致RMSE增加,似乎表示仅使用两个主成分为最优模型。

  1. TRAINING: % variance explained

这个表结果表示响应变量中能主成分被解释方差的百分比:

  • 通过只使用第一个主成分,响应变量中被解释方差为69.83%。
  • 通过加入第二个主成分,响应变量中被解释方差为89.35%。

通过使用更多的主成分总是可以解释更多的方差,但我们看到添加两个以上的主成分被解释方差比例实际上增加不明显。使用validationplot()函数能够以可视化方式展示RMSE,从而更直观决定选择主成分数量。

# 2,3 两个图在第一行,1图在第二行占两列(共2行2列)
layout(matrix(c(2,3,1,1),2,2, byrow = TRUE))validationplot(model, val.type="R2")
validationplot(model, val.type="MSEP")
validationplot(model)

在上图中我们可以看到,添加两个主成分时模型的拟合度在提高,但当更多主成分加入时却更差。因此最优模型只包括前两个主成分。

使用最终模型进行预测

我们使用两个主成分模型测试新的观测数据。下面代码把原始数据分为训练集和测试集,使用PCR模型在测试集上预测:

# 定义训练集和测试集
train <- mtcars[1:25, c("hp", "mpg", "disp", "drat", "wt", "qsec")]
y_test <- mtcars[26:nrow(mtcars), c("hp")]
test <- mtcars[26:nrow(mtcars), c("mpg", "disp", "drat", "wt", "qsec")]# 在测试集上进行检验
model <- pcr(hp~mpg+disp+drat+wt+qsec, data=train, scale=TRUE, validation="CV")
pcr_pred <- predict(model, test, ncomp=2)# 计算RMSE
sqrt(mean((pcr_pred - y_test)^2))# [1] 56.86549

我们看到测试RMSE为56.86549,这是测试集中变量hp的预测值与观察值之间的平均偏差。

主成分回归分析实战教程相关推荐

  1. 【机器学习】PCA主成分项目实战:MNIST手写数据集分类

    PCA主成分项目实战:MNIST手写数据集分类 PCA处理手写数字集 1 模块加载与数据导入 2 模型创建与应用 手动反爬虫:原博地址 https://blog.csdn.net/lys_828/ar ...

  2. 主成分分析;主成分回归分析——Hald水泥问题;主成分分析案例——各地区普通高等教育发展水平综合评价;matlab

    目的 对原变量加以"改造",在不致损失原变量太多信息的条件下尽可能地降低变量地维数,即用较少的"新变量"代替原来地各变量. 通过变换:用低维(主成分)近似高维( ...

  3. R语言实战笔记--第十四章 主成分和因子分析

    R语言实战笔记–第十四章 主成分和因子分析 标签(空格分隔): R语言 主成分分析 因子分析 原理及区别 主成分分析与因子分析很接近,其目的均是为了降维,以更简洁的数据去解释结果,但这两种方法其实是相 ...

  4. 主成分回归之后预测_主成分回归解析.ppt

    教学课件课件PPT医学培训课件教育资源教材讲义 主成分回归分析 一.主成分估计 主成分估计是以P个主成分中的前q个贡献大的主成分为自变量建立回归方程,估计参数的一种方法. 它可以消除变量间的多重共线性 ...

  5. 主成分分析应用之主成分回归

    主成分回归分析   对于OXY数据集的变量解释如下:   对上述数据进行回归模型的拟合,得到模型: 从模型的显著性检验结果看出:除了常数项以及β3显著,其他变量系数都不通过显著性检验.同时,从模型整体 ...

  6. 基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比(生信数基实验作业)

    基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比 0 引言 全基因组选择是 21 世纪动植物育种的一种重要的选择策略,其核心就是全基因组预测,即基于分布在整个基因组上的多样性分 ...

  7. 主成分回归在径流预测中的应用

    摘要: 采取主成分回归方法对具有多重共线性的湘江流域43 a径流资料进行了分析,以实测径流量.降水量和蒸发量等7 个指标进行了样本预测.结果表明:主成分回归比多元线性回归的误差小,预测值更接近于实测值 ...

  8. R语言实战(九)主成分和因子分析

    本文对应<R语言实战>第14章:主成分和因子分析 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量成为主成分. 探索性因子分析(EFA)是 ...

  9. 主成分回归之后预测_回归分析|笔记整理(B)——主成分回归(下),偏最小二乘回归...

    大家好! 上一节我们给主成分回归开了一个头,这一节我们会继续介绍它的有关内容,并且同时会介绍另一种新的回归方法:偏最小二乘回归.这一节的理论性也比较强,主要关注了相关回归的理论上的性质与相关证明. 提 ...

最新文章

  1. Windows日志及其保护
  2. Java 基本数据类型 sizeof 功能
  3. java多线程总结五:线程池的原理及实现
  4. QML ListView几个常用且非常重要的属性
  5. 基于Spring-Data-Redis存储JavaBean对象
  6. iOS 使用 MailCore2
  7. Win11如何切换应用商店网络 Win11切换应用商店网络的方法
  8. go语音protobuf_总结一下protobuf安装-Go语言中文社区
  9. Mac安装和配置Tomcat的教程
  10. TCP协议和UDP协议的对比
  11. pgadmin 转成oracle,pgAdmin快速备份还原数据库
  12. freeswitch+kamailio+unimrcp
  13. 写贺卡给毕业师姐怎么写计算机系的,[给师姐的毕业祝福语]对师姐的毕业祝福语...
  14. JAVA通过COM接口操作PPT
  15. 记一次尴尬的经历---硅胶干燥剂颗粒堵住了耳机孔
  16. python 解决 mismatch问题
  17. Microsoft Visual Studio 2008安装教程
  18. 织梦模板文件不存在,无法解析文档的最快解决方法
  19. 新冠肺炎疫情数据可视化分析-FineBI
  20. 麒麟子Cocos Creator实用技巧八:回合战棋类RPG战斗效果

热门文章

  1. python实现进制转换器_python实现各进制转换的总结大全
  2. centos7和win7双系统安装
  3. ucosIII 共享资源(信号量、互斥信号量)
  4. aspose 换行写_Aspose.Words对于Word的操作
  5. 韦东山嵌入式第一期学习笔记DAY_1——3_1_linux命令入门演示
  6. Qt 之进程间通信(IPC)
  7. 【渝粤题库】陕西师范大学180204市场营销学 作业(高起本)
  8. python RemoveBg api换照片底色
  9. 什么是CRM、ERP、BPM?
  10. Pycharm浏览器打开报错解决