主成分回归分析实战教程
本文介绍主成分回归分析(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
我们解释输出中的两个表格:
- VALIDATION: RMSEP
这个表告诉我们k折交叉检验的检验RMSE,解雇哦如下:
- 模型中仅用截距项, 检验RMSE为 69.66.
- 如果增加第一主成分,检验RMSE减少到 44.56.
- 如果增加第二主成分,检验RMSE减少到 35.64.
我们看到继续增加主成分会导致RMSE增加,似乎表示仅使用两个主成分为最优模型。
- 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的预测值与观察值之间的平均偏差。
主成分回归分析实战教程相关推荐
- 【机器学习】PCA主成分项目实战:MNIST手写数据集分类
PCA主成分项目实战:MNIST手写数据集分类 PCA处理手写数字集 1 模块加载与数据导入 2 模型创建与应用 手动反爬虫:原博地址 https://blog.csdn.net/lys_828/ar ...
- 主成分分析;主成分回归分析——Hald水泥问题;主成分分析案例——各地区普通高等教育发展水平综合评价;matlab
目的 对原变量加以"改造",在不致损失原变量太多信息的条件下尽可能地降低变量地维数,即用较少的"新变量"代替原来地各变量. 通过变换:用低维(主成分)近似高维( ...
- R语言实战笔记--第十四章 主成分和因子分析
R语言实战笔记–第十四章 主成分和因子分析 标签(空格分隔): R语言 主成分分析 因子分析 原理及区别 主成分分析与因子分析很接近,其目的均是为了降维,以更简洁的数据去解释结果,但这两种方法其实是相 ...
- 主成分回归之后预测_主成分回归解析.ppt
教学课件课件PPT医学培训课件教育资源教材讲义 主成分回归分析 一.主成分估计 主成分估计是以P个主成分中的前q个贡献大的主成分为自变量建立回归方程,估计参数的一种方法. 它可以消除变量间的多重共线性 ...
- 主成分分析应用之主成分回归
主成分回归分析 对于OXY数据集的变量解释如下: 对上述数据进行回归模型的拟合,得到模型: 从模型的显著性检验结果看出:除了常数项以及β3显著,其他变量系数都不通过显著性检验.同时,从模型整体 ...
- 基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比(生信数基实验作业)
基于R语言的主成分回归(PCR)与Lasso回归在水稻基因组预测中的对比 0 引言 全基因组选择是 21 世纪动植物育种的一种重要的选择策略,其核心就是全基因组预测,即基于分布在整个基因组上的多样性分 ...
- 主成分回归在径流预测中的应用
摘要: 采取主成分回归方法对具有多重共线性的湘江流域43 a径流资料进行了分析,以实测径流量.降水量和蒸发量等7 个指标进行了样本预测.结果表明:主成分回归比多元线性回归的误差小,预测值更接近于实测值 ...
- R语言实战(九)主成分和因子分析
本文对应<R语言实战>第14章:主成分和因子分析 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量成为主成分. 探索性因子分析(EFA)是 ...
- 主成分回归之后预测_回归分析|笔记整理(B)——主成分回归(下),偏最小二乘回归...
大家好! 上一节我们给主成分回归开了一个头,这一节我们会继续介绍它的有关内容,并且同时会介绍另一种新的回归方法:偏最小二乘回归.这一节的理论性也比较强,主要关注了相关回归的理论上的性质与相关证明. 提 ...
最新文章
- jpa SessionFactory事物失效
- vnx vmax分盘过程
- Learning OpenCV Lecture 4 (Transforming Images with Morphological Operations)
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(五)简单插件
- Python 移动文件夹所有的文件到另外一个文件夹,重复的跳过
- 在飞音G801上运行OpenWRT+Asterisk
- (5) 学习笔记_numpy
- 只有绩效,才是检验创新的唯一标准
- 【数字信号调制】基于matlab正交幅度调制仿真【含Matlab源码 1002期】
- Qt_QFileInfo几个路径函数的区别
- 计算机硬盘模式,电脑硬盘模式有哪些?各种电脑硬盘模式的优缺点对比
- c语言的开发环境的下载,Windows安装C语言开发环境
- IaaS PaaS SaaS DaaS基础设施即服务、平台即服务、软件即服务、数据即服务详解
- MOT:A Higher Order Metric for Evaluating Multi-object Tracking
- 文心一言眼里的Java世界
- osm数据下载 python_osm数据下载 python_批量下载osm的分区域的osm文件
- Unity3D开发游戏有没有流行的框架
- golang力扣leetcode 1823.找出游戏的获胜者
- iphone android选择,关于苹果手机和安卓手机的选择
- 建筑减隔震技术资料大全(建议收藏)
热门文章
- 叶公好龙——存在与逻辑
- hcia是什么等级的证书_HCIA是什么等级的证书
- 【网络】mesh和无线桥接WDS的区别
- 单目三维目标检测之CaDDN论文阅读
- kubelet参数解释about kubelet gc image and evict pod.
- windows 安装 matplotlib 报错
- 昨日伦镍交易无效静待上海处理结果,橡胶认购大涨,印尼神油强势涨停YP新低2022.3.9
- 2021年11月软考网络规划设计师下午真题及答案解析
- ,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microso ft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies
- Python验证注册用户名是否正确