R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据...

news2025/1/12 23:14:07

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


什么是PCR?(PCR = PCA + MLR)点击文末“阅读原文”获取完整代码数据)。

• PCR是处理许多 x 变量的回归技术
• 给定 Y 和 X 数据:
• 在 X 矩阵上进行 PCA
– 定义新变量:主成分(分数)
• 在 多元线性_回归_(_MLR_)  中使用这些新变量中的一些来建模/预测 Y
• Y 可能是单变量或多变量。

相关视频

例子

# 对数据
set.seed(123)

da1 <- marix(c(x1, x2, x3, x4, y), ncol = 5, row = F)

多元线性回归和逐步剔除变量,手动:

# 对于data1:(正确的顺序将根据模拟情况而改变)。
lm(y ~ x1 + x2 + x3 + x4)

lm(y ~ x2 + x3 + x4)


lm(y ~ x2 + x3)


lm(y ~ x3)

d6878cee8da2c29b62f565acc4787dd4.png

c740838eb8dfb5f77ce5609edc7b7032.png

18487424dc11b372ff73f2daf961089c.png

2e01113fe60a465f82d21f5afed17ffd.png

配对关系图

pais(atix, ncol = 5, byrow = F

cb6021e68d7320c71285e0a89d0479f2.png

如果对data2重复以上过程:

# 对于data2:

 lm(y ~ x1 + x2 + x3 + x4)

 lm(y ~ x1 + x2 + x4)



 lm(y ~ x2 + x4)

 lm(y ~ x2)

58d193d8bf6a0823c3c96ef225603c8b.png

c59e4175316fa366cb8f472ac3fec70e.png

5c42cb35218ebcb976dd7a499efc3023.png

d33018f4fa52bb2198f4d2a89f813509.png

数据集 2 的绘图:

c2e3876d713c6c0cb127f8332dbddb83.png

使用四个 x 的均值作为单个变量来分析两个数据集:

xn1 <- (dt1\[,1\] + a1\[,2\] + at1\[,3\] + dt1\[,4\])/4
 lm(data1\[,5\] ~ xn1)
 lm(data2\[,5\] ~ xn2)

8dc50ec3eb229d44b2f81ad891f5f3ec.png

6bb261b5d864f455fbd4939873d0a842.png

检查一下X数据的PCA的载荷loading是什么。

# 几乎所有的方差都在第一主成分解释。
prnmp(dt1\[,1:4\])

0282f69c55e07b8cc4fcafe62e47bd88.png

# 第一个成分的载荷
picp(dta1\[,1:4\])$lads\[,1\]

0c99d660d91fdd7c421ba046749afab3.png

它们几乎相同,以至于第一个主成分本质上是四个变量的平均值。让我们保存一些预测的 beta 系数 - 一组来自数据 1 的完整集和一组来自均值分析的:

c1 <- smry(lm(dta1\[,5\] ~ dta1\[,1\] + dta1\[,2\] + ata1\[,3\] +
dt1\[,4\]))$coficns\[,1\]
f <- summry(rm2)$cefets\[,1\]

我们现在模拟三种方法(完整模型、均值(=PCR)和单个变量)在 7000 次预测中的表现:

# 对预测进行模拟。
误差<- 0.2

xn <- (x1 + x2 + x3 + x4)/4
yt2 <- cf\[1\] + cf\[2\] * xn
yht3 <- cf\[1\] + cf\[2\] * x3
bro(c(um((y-hat)^2)/7000 min = "平均预测误差平方")

be9f57a83e0325252e633e88121462b4.png

PCR 分析误差最小。

示例:光谱类型数据

构建一些人工光谱数据:(7 个观测值,100 个波长)

# 光谱数据实例

mapot(t(spcra) )
mtlnes(t(spcra))

12882de5faaa9fb5201a36b107cef5d6.png

平均光谱表明:

mtpot(t(secra))
malies(t(spcta))
mnp <- apply(spcra, 2, mean)
lines(1:100, mnp, lwd = 2)

a66cd77fd62e51b8a85033587ca9a87a.png

平均中心光谱:

spcamc<-scae(spcta,scale=F)
plot(t(spermc),tpe="")

0e5404c301eed87cac3880cf6ca9e288.png


点击标题查阅往期内容

c03eba5230f98566e93cde23787b1787.jpeg

偏最小二乘回归(PLSR)和主成分回归(PCR)

outside_default.png

左右滑动查看更多

outside_default.png

01

9de786bd130b340a6b638be5ea544656.png

02

45e269316caa5c2fcea4c5a1ebd42c8b.png

03

58adc0dce8a8e6e0bee5f63f0241a2e8.png

04

9dc105fdd1f1f9c791d19be8d6c53e70.png

标准化光谱:

sptracs<-scale(spetra,scale=T,center=T)
matott(specrams),tye="n",
matlies(t(sectramcs))

aa54699b55d807056124c439c1f71ed4.png

# 用特征函数对相关矩阵做PCA。
pcaes <- eien(cor(spra))
ladigs <- pces$vectors\[,1\].
score <- peramcs%*%t(t(lodis1))
pred <- soes1 %*% loadings1
## 1-PCA预测值转换为原始尺度和平均值。
mtrx(repeasp, 7), nro=7, brw=T)

在单个概览图中收集的所有图:

par(mfrow = c(3, 3)
matlot(t(sectr)

beea5eaf7de066a8fefaad3b91b7b638.png

PCR是什么?

• 数据情况:

eef0595895d8127624db4c8f14c6771f.png

• 用A 主成分t1、t2... 做MLR而不是所有(或部分)x。
• 多少个成分:通过交叉验证确定。

怎么做?

1. 探索数据
2. 进行建模(选择主成分数量,考虑变量选择)
3. 验证(残差、异常值、影响等)
4. 迭代 2. 和 3。
5. 解释、总结、报告。
6. 如果相关:预测未来值。

交叉验证

• 忽略一部分观察值
• 在剩余(减少的)数据上拟合模型
• 预测模型遗漏的观察值:yˆi,val
• 对所有观察值依次执行此操作并计算总体模型性能:

25e881f687cd4ae46e2275b021d2f23e.png(预测的均方根误差)

最后:对所有选择的分量(0、1、2、...、... )进行交叉验证并绘制模型性能

barplot(names.arg)

447e4d1420871c24a733c07a203351a0.png

选择最佳成分数:
• 总体误差最小的主成分。

重采样

• 交叉验证 (CV)

•留一法(_Leave-On_e-_Out_,简称LOO)

• Bootstrapping
• 一个很好的通用方法:
– 将数据分成训练集和测试集。
– 在训练数据上使用交叉验证
– 检查测试集上的模型性能
– 可能:重复所有这些多次(重复双交叉验证)

交叉验证 - 原则

• 最小化预期预测误差:
平方预测误差 = Bias2 +方差
• 包括“许多”PC主成分:低偏差,但高方差
• 包括“很少”PC 主成分:高偏差,但低方差
• 选择最佳折衷!

验证 - 存在于不同的级别

1. 分为 3 个:训练(50%)、验证(25%)和测试(25%)
2. 拆分为 2:校准/训练 (67%) 和测试 (33%) 
训练中,CV/bootstrap •更常用
3. 没有 "固定分割",而是通过CV/bootstrap反复分割,然后在每个训练组内进行CV。
4. 没有分割,但使用(一级)CV/bootstrap。
5. 只对所有数据进行拟合--并检查误差。

示例:汽车数据

# 例子:使用汽车数据。
# 将X矩阵定义为数据框中的一个矩阵。
mtas$X <- as.ix(mcas\[, 2:11\])
# 首先,我们考虑随机选择4个属性作为测试集
mtcrs_EST<- mtcrs\[tcars$rai == FASE,\] 。
tcaTRAIN <- mtars\[tcarstrai == TUE,\] 。

现在所有的工作都在 训练数据集上进行。

探索数据

我们之前已经这样做了,所以这里不再赘述

数据建模

使用pls软件包以最大/大量的主成分运行PCR。

# 使用pls软件包,以最大/较大的成分数运行PCR。
 pls(lomg ~ X , ncop = 10, dta = marsTRAN,
aliaon="LOO")

初始图集:

# 初始化的绘图集。
par(mfrow = c(2, 2)
plot(mod)

c217a5bdf2d7e8d85f9e9907e9bbeec0.png

主成分的选择:

# 主成分的选择。
# 分段的CV会得到什么。
modseCV <- pcr(lomg ~ X , ncp = 10, dta = marTIN
vai ="CV"
)
# 初始图集。
par(mfrow = c(1, 2))
plot(odsC, "vadaion")

101f0044e648b68332cb6d621cf8729a.png

让我们看看更多的主成分:

# 让我们看看更多的主成分。
# 分数。
scre(mod)

365b7adfe78aa2ca97f9bebf35dd09b4.png

#负荷
loading(md,cms = 1:4)

1e2e72f9247730c991066c99ca310aa7.png

我们选择 3 个主成分:

# 我们选择4个成分
m <-  ncmp = 3, data = mrs_TAI vdon = "LOO", akknie = RUE

然后:验证:
让我们验证更多:使用 3 个主成分。我们从中获取预测的残差,因此这些是(CV)验证版本!

oit <- ppo(mod3, whih = "litin")
plot(obft\[,2\], Rsds)
# 为了绘制残差与X-杠杆的对比,我们需要找到X-杠杆。
# 然后找到杠杆值作为Hat矩阵的对角线。
# 基于拟合的X值。
Xf <- sors(md3)
plot(lvge, abs(Rsidals))
text(leage, abs(Reuls))

3f5247b4b1a946d02beeef8cfcb3d1fd.png

# 让我们也绘制一下残差与每个输入X的关系。

for ( i in 2:11){
plot(res~masAN\[,i\],type="n")
}

a9a0c004c8108532173a313022602d95.png

解释/结论

现在让我们看一下结果——“解释/结论”:

# 现在我们来看看结果 - 4) "解释/结论"
par(mfrw = c(2, 2))
# 绘制具有Jacknife不确定性的系数。
obfi <- red(mod3,, wich = "vltn)
abe(lm(ft\[,2\] ~ fit\[,1\])
plt(mo3, ses = TUE,)

96c37a373ab1ab8091f56a5a325c0631.png

# 最后是一些输出
test(mo3, nm = 3)

c362195b9f36dc42f6ce1fb73ef4d070.png

预测

# 现在让我们试着预测TEST集的4个数据点。
prdit(md3, nwaa =TEST)
plt(TEST$lgg, pes)

68c47509a6a60831a03266f0758bf261.png

rmsep <- sqrt(men(log - prd)^2))
rmsep

23d5f3067846752159b6297edbbae5e5.png

1e6647345dd0c9260c33c80692601f48.png

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《R语言主成分回归(PCR)、 多元线性回归特征降维分析光谱数据和汽车油耗、性能数据》。

点击标题查阅往期内容

R语言主成分PCA、因子分析、聚类对地区经济研究分析重庆市经济指标

数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况

R语言是否对二分连续变量执行逻辑回归

R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据

R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析

R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者

R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

R语言用局部加权回归(Lowess)对logistic逻辑回归诊断和残差分析

R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

R语言用线性模型进行臭氧预测:加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值

R语言Bootstrap的岭回归和自适应LASSO回归可视化

R语言中回归和分类模型选择的性能指标

R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分析

R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据

R语言计量经济学:虚拟变量(哑变量)在线性回归模型中的应用

R语言 线性混合效应模型实战案例

R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据

R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言建立和可视化混合效应模型mixed effect model

R语言LME4混合效应模型研究教师的受欢迎程度

R语言 线性混合效应模型实战案例

R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题

基于R语言的lmer混合线性回归模型

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

R语言分层线性模型案例

R语言用WinBUGS 软件对学术能力测验(SAT)建立分层模型

使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

SPSS中的多层(等级)线性模型Multilevel linear models研究整容手术数据

用SPSS估计HLM多层(层次)线性模型模型

R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告

R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

R语言有RStan的多维验证性因子分析(CFA)

主成分分析(PCA)原理及R语言实现及分析实例

R语言无监督学习:PCA主成分分析可视化

R语言使用Metropolis- Hasting抽样算法进行逻辑回归

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

R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析

R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

R语言基于树的方法:决策树,随机森林,Bagging,增强树

spss modeler用决策树神经网络预测ST的股票

R语言中自编基尼系数的CART回归决策树的实现

python在Scikit-learn中用决策树和随机森林预测NBA获胜者

matlab使用分位数随机森林(QRF)回归树检测异常值

基于随机森林、svm、CNN机器学习的风控欺诈识别模型

R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分

c37d888fd1f2f6687e448d6bbdaf9835.png

97e2e63687b029674871d7dd0107bc7f.jpeg

d825e0d286177e7a8f0daa8f765c32f6.png

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

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

相关文章

力扣(LeetCode)116. 填充每个节点的下一个右侧节点指针(C++)

模拟 这题可以直接操作根节点&#xff0c;我们保存根结点&#xff0c;用作最终返回值。 填充每个结点的 nextnextnext 指针&#xff0c;其实是树的层序遍历。由于 nextnextnext 指针的存在&#xff0c;我们可以做到 O(1)O(1)O(1) 的空间复杂度。 算法: 从根结点出发&#xf…

自动驾驶专题介绍 ———— 动力传动系统

文章目录动力传动系统传统动力传动系统混合动力传动系统串联型并联型串并联型纯电动传动系统电机中央驱动电动轮驱动动力传动系统 汽车动力传动系统是位于发动机和驱动车轮之间的动力传动装置&#xff0c;其基本功用是将发动机发出的动力传输给驱动车轮&#xff0c;以保障汽车在…

JavaWeb简单实例——jQuery

简单介绍&#xff1a; 在之后的学习中&#xff0c;我们会接触到Ajax异步请求&#xff0c;这个异步请求需要我们在网页端使用JS来发送&#xff0c;而使用原生的Ajax请求比较复杂&#xff0c;所以我们就借用一个前端框架封装后的Ajax请求&#xff0c;这样可以简化我们的代码编写…

大坝安全动态监管预警系统 大坝安全监测平台 遥测终端机 水位雨量监测站

平升电子大坝安全动态监管预警系统/大坝安全监测平台/大坝安全监测系统根据SL551-2012《土石坝安全监测技术规范》的整编要求&#xff0c;设置了变形监测、渗流监测、环境量监测。借助该系统可及时了解大坝的工作性态和水库可能存在的事故隐患&#xff0c;为大坝安全管理与水库…

Linux 安装 ElasticSearch

注意事项&#xff1a; 内存不能太小&#xff0c;否则会启动失败JDK版本需要对应&#xff0c;es7 需要 Java 11不能以 root 用户启动 平台确认 大家可以自行安装虚拟机部署&#xff0c;有条件可以在服务器操作。 安装Java 安装 Elasticsearch 之前&#xff0c;你需要先安装一个较…

04. 组合总和

1.题目链接&#xff1a; 39. 组合总和 2.解题思路&#xff1a; 2.1.题目要求&#xff1a; 给定一个“无重复数组candidates”和一个“目标和target” &#xff0c;要求在给定 数组candidates 的范围内&#xff0c;输出和等于 目标和target 的组合&#xff0c;此组合元素可重复…

Java程序员:三个月刷完1000道面试真题,没想到老板直接给我升职了

同事&#xff1a;前阵子听说你要跳槽&#xff0c;现在准备得怎么样啊&#xff1f;程序员T&#xff1a;不跳了同事&#xff1a;啊&#xff1f;为什么&#xff1f;程序员T&#xff1a;涨薪了呗&#xff1f;同事&#xff1a;真的吗&#xff1f;涨了多少&#xff1f;你自己跟老板谈…

卓豪再签洛钼集团,实现AD域自动化管理有效降低管理人员工作负荷

2022年11月&#xff0c;ManageEngine卓豪续签上海董禾商贸有限公司&#xff0c;将为“洛钼集团”部署ADManager Plus软件&#xff0c;助力IT管理摆脱复杂AD域管理操作&#xff0c;实现AD域管理自动化。 上海董禾商贸 上海董禾商贸有限公司作为洛钼集团在上海的主体公司。洛阳栾…

2.9.39:Flexmonster:网络报告数据透视表组件

用于网络报告的数据透视表组件 用于可视化业务数据的最强大的 JavaScript 工具 与任何技术堆栈集成 该组件可与任何技术堆栈无缝协作&#xff1a; 与Angular、React、jQuery、Vue等 完美集成 没有服务器端依赖 只需几行代码即可开始使用。 加载海量数据集 即使有超过一百万行…

珠宝商城小程序开发的价值和优势

珠宝行业的巨大利润空间就决定了行业内激烈的竞争压力&#xff0c;而随着时代的发展&#xff0c;单一的线下门店营销方式很难让珠宝行业得到更好的发展。为了防止顾客流失&#xff0c;挖掘潜在的消费潜力&#xff0c;珠宝行业开始向科技化、互联网化、移动化的方向开拓市场&…

Sentinel-2(哨兵2数据介绍)

哥白尼 Sentinel-2&#xff08;哨兵 2&#xff09;计划是一个由两颗相同的 Sentinel-2 极轨卫星组成的星座&#xff0c;两颗卫星相位差 180&#xff0c;运行在平均高度 786 km 的太阳同步轨道上。每颗卫星在其轨道上的位置由双频全球导航卫星系统&#xff08;GNSS&#xff09;接…

Kubernetes资源调度之污点与Pod容忍度

Kubernetes资源调度之污点与Pod容忍度 概述 污点是定义在节点之上的键值型属性数据&#xff0c;用于让节点有能力主动拒绝调度器将Pod调度运行到节点上&#xff0c;除非该Pod对象具有接纳节点污点的容忍度。容忍度(tolerations)则是定义在Pod对象上的键值型属性数据&#xff0c…

WAVE SUMMIT+2022明日开场,六大看点不容错过!

在2022年最后一个乐章奏响之前&#xff0c;WAVE SUMMIT第八届峰会将率先拉开帷幕。11月30日&#xff0c;由深度学习技术及应用国家工程研究中心主办、百度飞桨承办的WAVE SUMMIT2022深度学习开发者峰会将以网上直播的方式呈现。明日14点&#xff0c;冬日AI盛会WAVE SUMMIT2022将…

.Net 7 Native AOT 单文件 无依赖 跨平台

2022.11.18 Native AOT 正式发布&#xff0c;不再是 实验性项目。 .Net 7 Console App & WebApi 使用PublishAOT true&#xff0c;直接编译 成exe&#xff0c;无rutime依赖&#xff0c;智能裁剪&#xff0c;体积小&#xff0c;启动快。 环境&#xff1a; 1.更新VS2022 …

安科瑞智能余压监控系统余压控制器ARPM-C 监控余压值/接收报警信息

1、概述 ARPM-C型余压控制器&#xff0c;可监控所连接余压探测器的余压值&#xff0c;接收余压探测器的报警信息&#xff0c;并向余压监控器反馈现场工作状态&#xff0c;当余压过高报警时联动风阀执行器调节泄压阀&#xff0c;能够持续调节泄压阀的开启角度。 2、产品型号 …

Java JUC并发容器之BlockingQueue的多种实现详解

Java JUC并发容器之BlockingQueue的多种实现详解 文章目录Java JUC并发容器之BlockingQueue的多种实现详解BlockingQueueArrayBlockingQueueLinkedBlockingQueueLinkedBlockingQueue和ArrayBlockingQueue的差异PriorityBlockingQueueDelayQueueSynchronousQueueBlockingQueue …

首次公开,GitHub点击破百万的分布式高可用算法小册被我扒下来了

想成为分布式高手&#xff1f;那就先把协议和算法烂熟于心吧&#xff01;这就不得不提到著名的——《分布式高可用算法》&#xff01; 目前网上还没有开源版本&#xff0c;今天我就当一次“互联网雷锋” &#xff0c;免费获取方式我放在文末了 作者介绍 江峰&#xff0c;教授…

用R对Twitter用户的编程语言语义分析

Twitter是一个流行的社交网络&#xff0c;这里有大量的数据等着我们分析。Twitter R包是对twitter数据进行文本挖掘的好工具。最近我们被客户要求撰写关于Twitter的研究报告&#xff0c;包括一些图形和统计输出。本文是关于如何使用Twitter R包获取twitter数据并将其导入R&…

linux /usr/lib/共享库为何几乎都有链接(像是快捷方式)?

linux 共享库为什么要建立那么多link QT建立的共享库&#xff0c;输出的时候会有三个链接文件&#xff0c;有疑惑为什么要这么多文件呢&#xff1f;是什么规则考虑的&#xff1f; 可能这么做有好处&#xff0c;就是可以随时切换库的版本吧。 Linux下软链接的使用技巧 - 腾讯云…

Nodejs -- Express的安装和定义get、post方法

文章目录Express的基本使用1 安装2 基本使用3 监听GET请求4 监听POST请求5 把内容响应给客户端6 获取URL中携带的查询参数7 获取URL中的动态参数Express的基本使用 1 安装 在项目所处的目录中&#xff0c;运行如下的终端命令&#xff0c;即可将express安装到项目中使用&#…