首页 > 其他分享 >R语言中的偏最小二乘回归PLS-DA|附代码数据

R语言中的偏最小二乘回归PLS-DA|附代码数据

时间:2024-06-19 16:55:23浏览次数:14  
标签:PLS 变量 模型 DA RF PCA 二乘

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

原文出处:拓端数据部落公众号

最近我们被要求撰写关于偏最小二乘回归PLS-DA的研究报告,包括一些图形和统计输出。

主成分回归(PCR)的方法 本质上是使用第一个方法的普通最小二乘(OLS)拟合ķ来自预测变量的主成分(PC)。这带来许多优点:

  1. 预测变量的数量实际上没有限制。  
  2. 相关的预测变量不会破坏回归拟合。

但是,在许多情况下,执行类似于PCA的分解要明智得多。

今天,我们将 在Arcene数据集上执行PLS-DA,  其中包含100个观察值和10,000个解释变量。

让我们开始使用R

癌症/无癌标签(编码为-1 / 1)存储在不同的文件中,因此我们可以将其直接附加到完整的数据集,然后使用公式语法来训练模型。

  ;
# 安装加载

library(caret)
arcene <- read.table("train.data", sep = " ",
 colClasses = c(rep("numeric", 10000), "NULL"))

# 将标签添加为附加列


arcene$class <- factor(scan("rain.labels", sep = "\t"))

 现在的主要问题是:

  • 我们如何根据其血清的MS谱准确预测患者是否生病?
  • 哪种蛋白质/ MS峰最能区分患者和健康患者?

 关于预处理,我们将使用preProc参数以精确的顺​​序删除零方差预测变量,并对所有剩余的变量进行标准化。考虑样本的大小(n= 100),我将选择10次重复的5折交叉验证(CV)–大量重复弥补了因减少的验证次数而产生的高方差–总共进行了50次准确性估算。 

  ;
# 编译交叉验证设置


set.seed(100)
myfolds <- createMultiFolds(arcene$class, k = 5, times = 10)
control <- trainControl("repeatedcv", index = myfolds, selectionFunction = "oneSE")

绘图

此图描绘了CV曲线,在这里我们可以学习从使用不同数量的LV(x轴)训练的模型中获得的平均准确度(y轴,%)。 

现在,我们 进行线性判别分析(LDA)进行比较。 我们还可以尝试一些更复杂的模型,例如随机森林(RF)。 

最后,我们可以比较PLS-DA,PCA-DA和RF的准确性。 

我们将使用resamples编译这三个模型,并借用ggplot2的绘图功能来比较三种情况下最佳交叉验证模型的50个准确性估计值。

 

绘图

显然,长时间的RF运行并没有转化为出色的性能,恰恰相反。尽管三个模型的平均性能相似,但RF的精度差异要大得多,如果我们要寻找一个鲁棒的模型,这当然是一个问题。在这种情况下,PLS-DA和PCA-DA表现出最好的性能(准确度为63-95%),并且这两种模型在诊断新血清样品中的癌症方面都表现出色。

总而言之,我们将使用PLS-DA和PCA-DA中预测的变量重要性(ViP)确定十种最能诊断癌症的蛋白质。 

Rplot01

Rplot02

 

上面的PLS-DA ViP图清楚地将V1184与所有其他蛋白质区分开。这可能是一个有趣的癌症生物标志物。当然,必须进行许多其他测试和模型来提供可靠的诊断工具。 

标签:PLS,变量,模型,DA,RF,PCA,二乘
From: https://www.cnblogs.com/tecdat/p/18256604

相关文章

  • R语言实现偏最小二乘回归法 partial least squares (PLS)回归
    原文链接:http://tecdat.cn/?p=8652原文出处:拓端数据部落公众号 偏最小二乘回归是一种回归形式。 当使用pls时,新的线性组合有助于解释模型中的自变量和因变量。在本文中,我们将使用pls预测“收入” 。   rlibrary(Ecdat)  ##'data.frame':753obs.......
  • CUDA 版本查看
    查看cuda版本的指令:nvidia-smincvv-Vpython-c"importtorch;print(torch.version.cuda)"nvidia-smi(base)liuliu@liuliu-Legion-Y9000P-IAH7H:~/EchoFusion$nvidia-smiMonJan1511:14:412024+--------------------------------------------------......
  • update 修改数据时,依赖或者说需要根据另一个值来进行判断l
    在这点我们需要使用到的sql语句 语法:update表名set某个值=casewhen@你要修改的值>表中的某一个值then成立之后要设置的值else前面没有成立设置的值end举例: 我根据传入的年龄age来设置type为1还是0,1表示成年,0表示未成年updateTablesetname=@name,type=case......
  • 如何在vTestStudio里读取扩展数据(ExtendedData)
    我们使用1906+故障码+扩展信息序号来获取故障码扩展信息,如何在vTestStudio的testtable中使用testcommand读取,有两种方法:1.使用DiagnosticService2.使用FaultMemoryDTCs要注意如果使用FaultMemoryDTCs这个命令,默认EnvironmentData发送的命令是1904(快照信息)......
  • GSVA: Generalized Segmentation via Multimodal Large Language Models论文阅读笔记
    Motivation&AbsGeneralizedReferringExpressionSegmentation(GRES):相比于原始的RES任务,一个文本描述里可能出现多个需要分割的物体,或者没有需要分割的物体,难点在于建模不同实体之间复杂的空间关系,以及识别不存在的描述。现有的方法如LISA难以处理GRES任务,为此作者提出了GSV......
  • ETL可视化工具 DataX -- DataX-Web安装 (三)
    引言DataX系列文章:ETL可视化工具DataX–简介(一)ETL可视化工具DataX–安装部署(二)3.1简介DataXWeb是在DataX之上开发的分布式数据同步工具,提供简单易用的操作界面,降低用户使用DataX的学习成本,缩短任务配置时间,避免配置过程中出错。用户可通过页面选......
  • SpringData初步学习-连接MySQL数据库
    1.添加mysql驱动和spring-data-jpa依赖<dependencies><!--SpringDataJPA--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId><......
  • java spring-data-jpa 使用方法
    SpringDataJPA是Spring生态系统的一部分,它提供了对JPA(JavaPersistenceAPI)的抽象,简化了数据访问层的开发。以下是使用SpringDataJPA的基本步骤和一些核心概念:1.添加依赖        在Maven项目的pom.xml文件中添加SpringDataJPA和相关数据库驱......
  • Oracle DataGuard异常处理【ORA-01119 ORA-17502 ORA-15041】→【ORA-01111 ORA-01110
    收到用户反馈DG上查不到最近一天的数据,怀疑同步有问题一、检查备库同步情况两个节点都未看到MRP0进程SQL>selectprocess,status,thread#,sequence#fromv$managed_standby;PROCESS STATUS THREAD# SEQUENCE#---------------------------------------......
  • Day 26| 39. 组合总和 、 40.组合总和II 、 131.分割回文串
    组合总和本题是集合里元素可以用无数次,那么和组合问题的差别其实仅在于startIndex上的控制题目链接/文章讲解:https://programmercarl.com/0039.组合总和.html视频讲解:https://www.bilibili.com/video/BV1KT4y1M7HJ给定一个无重复元素的数组candidates和一个目标数targ......