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

article/2025/5/11 6:27:58

原文链接: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\])/4lm(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.2xn <- (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://chatgpt.dhexx.cn/article/xiLaXiqW.shtml

相关文章

ESL3.5 学习笔记(主成分回归,偏最小二乘回归步骤详解)

3.5 运用派生输入方向的方法 这是一篇有关《统计学习基础》&#xff0c;原书名The Elements of Statistical Learning的学习笔记&#xff0c;该书学习难度较高&#xff0c;有很棒的学者将其翻译成中文并放在自己的个人网站上&#xff0c;翻译质量非常高&#xff0c;本博客中有…

R语言高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据

最近我们被客户要求撰写关于高维数据惩罚回归的研究报告&#xff0c;包括一些图形和统计输出。 主成分分析PCA降维方法和R语言分析葡萄酒可视化实例 主成分分析PCA降维方法和R语言分析葡萄酒可视化实例 &#xff0c;时长04:30 1 介绍 在本文中&#xff0c;我们将研究以下主题…

回归预测 | MATLAB实现PCR(主成分回归)多输入单输出

回归预测 | MATLAB实现PCR(主成分回归)多输入单输出(PCA Regression) MATLAB实现数据降维的PCA(主成分分析)函数有pca和pcacov两个。 pca函数可以直接利用原始数据进行主成分分析; pcacov函数针对原始数据的协方差矩阵进行主成分分析,本程序实现了两种分析方法的预测结果对比…

Python数据分析案例22——财经新闻可信度分析(线性回归,主成分回归,随机森林回归)

本次案例还是适合人文社科领域&#xff0c;金融或者新闻专业。本科生做线性回归和主成分回归就够了&#xff0c;研究生还可以加随机森林回归&#xff0c;其方法足够人文社科领域的硕士毕业论文了。 案例背景 有八个自变量&#xff0c;[微博平台可信度,专业性,可信赖性,转发量,…

matlab实现主成分回归

主成分回归就是先对数据进行主成分分析&#xff0c;再进行多元线性回归。 主成分分析参考上篇博客&#xff0c;蹦篇博客介绍多元线性回归及其MATLAB实现。 多元线性回归是一种常用的线性建模方法。如果有两个或两个以上的自变量&#xff0c;就称为多元回归。事实上&#xff0c;…

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

最近我们被客户要求撰写关于主成分回归的研究报告&#xff0c;包括一些图形和统计输出。 什么是PCR&#xff1f;&#xff08;PCR PCA MLR&#xff09; • PCR是处理许多 x 变量的回归技术 • 给定 Y 和 X 数据&#xff1a; • 在 X 矩阵上进行 PCA – 定义新变量&#xff1…

主成分回归python实现

主成分分析python实现 这是我一直都想写的内容&#xff0c;但是迟迟没有动手开始写&#xff0c;主要的原因是没有理解python中PCA降维后再进行回归时应该要怎么做。再网上查了很多资料&#xff0c;也没有这方面的讲解&#xff0c;书上也是讲到了PCA降维就结束了。以下是我使用…

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

基于R语言的主成分回归&#xff08;PCR&#xff09;与Lasso回归在水稻基因组预测中的对比 0 引言 全基因组选择是 21 世纪动植物育种的一种重要的选择策略&#xff0c;其核心就是全基因组预测&#xff0c;即基于分布在整个基因组上的多样性分子标记来对育种值进行预测&#x…

SPSS 特征筛选、主成分回归

小数据 → y&#xff1a;连续性变量 → x&#xff1a;6个以内 → 理论 → 验证 → 统计分析&#xff1b; 大数据 → y&#xff1a;分类变量 → x&#xff1a;15个以内 → 探索 → 数据挖掘&#xff1b; 一、X的选择流程 业务&#xff08;业务专家&#xff09;&#xff1a;运…

R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化

概述和定义 在本文中&#xff0c;我们将考虑一些线性模型的替代拟合方法&#xff0c;除了通常的 普通最小二乘法。这些替代方法有时可以提供更好的预测准确性和模型可解释性。最近我们被客户要求撰写关于模型选择的研究报告&#xff0c;包括一些图形和统计输出。 主成分分析P…

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

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

高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据...

全文链接&#xff1a;http://tecdat.cn/?p23378 在本文中&#xff0c;我们将使用基因表达数据。这个数据集包含120个样本的200个基因的基因表达数据。这些数据来源于哺乳动物眼组织样本的微阵列实验&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 …

主成分回归分析实战教程

本文介绍主成分回归分析(Principal Components Regression)&#xff0c;并通过示例展示其实现过程。 给定p个预测变量和响应变量&#xff0c;多元线性回归使用如最小二乘法获得最小误差平方和(RSS)&#xff1a; RSS Σ ( y i – y ^ i ) 2 {Σ(y_i – ŷ_i)^2} Σ(yi​–y^​…

机器学习——数据的共线性问题(岭回归、LASSO回归、逐步回归、主成分回归)

一、如何检验共线性 容忍度&#xff08;Trlerance&#xff09;&#xff1a;容忍度是每个自变量作为因变量对其他自变量进行回归建模时得到的残差比例&#xff0c;大小用1减得到的决定系数来表示。容忍度的值介于0和1之间&#xff0c;如果值越小&#xff0c;说明这个自变量与其…

TI的CC2530单片机检测不同类型的方波

之前仅检测过一个引脚上一种方波信号&#xff0c;现在要再引脚上区分三种不同的波形。着实头大了好一会儿。 要检测的三种波形如下图所示&#xff1a; 每种波形的持续长度为500us,时间间隔为10ms. 比如我们在P0_2上检测这个波形&#xff0c;首先要对P0_2进行初始化操作&#…

单片机|CC2530实验入门

本教程为实验入门&#xff0c;手把手教你编译一个工程 一、USB驱动 仿真器设备的连接 【说明】USB接口不够可以使用USB集线器扩展&#xff0c;且互相不会干扰&#xff0c;非常方便。 由于用到了CC仿真器&#xff08;smart RF04EB&#xff09;&#xff0c;需要相关驱动。连接…

CC2530单片机延时函数实际测试

因为要检测不同的波形&#xff0c;所以对时间要求很高&#xff0c;但是发现Zstack本身提供的微秒级的延时其实有误差。 因此特地写了测试函数&#xff0c;然后用示波器观察了时间。详细如下&#xff1a; 先说CC2530与普通8051单片机时钟的不同&#xff0c;CC2530的每个指令是一…

ZigBee无线传感——CC2530单片机定时器1PWM输出

定时器1&#xff08;16位&#xff09; 时器1是一个独立的16位定时器&#xff0c;支持典型的定时/计数功能&#xff0c;比如输入捕获&#xff0c;输出比较和PWM功能。 定时器有五个独立的捕获/比较通道。每个通道定时器使用一个I/O引脚。定时器用于范围广泛的控制和测量应用&am…

基于ZigBee cc2530单片机多传感器的智能阳台仿真设计与实现

文章目录 摘 要&#xff1a;关键词&#xff1a;ZigBee 、语音识别、智能家居、传感器 0.引言1.概述2&#xff0e;系统总体设计2.1系统组成2、系统使用流程3、开发环境 2.2系统传感器构成2.3系统数据库设计 3&#xff0e;系统详细设计与实现4&#xff0e;系统测试结果5&#xff…

CC2530单片机精确延时的时间分析

CC2530单片机精确延时的时间分析 IAR 仿真时如何得知运行周期for循环的时间计算使用反汇编工具计算延时时间验证讨论CC2530与普通8051单片机时钟的不同 IAR 仿真时如何得知运行周期 关于这个问题&#xff0c;网上有很多好文章&#xff0c;讲得很清楚。IAR的操作很简单&#xf…