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

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

时间:2023-12-03 21:37:50浏览次数:54  
标签: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/17873808.html

相关文章

  • dapper实现CURD
    dapper的使用 1、引用包 2、student类[Table("dbo.Student")]publicpartialclassStudent{[Required]publicintId{get;set;}publicstringName{get;set;}publicstringAddress{get;set;}}2、DapperRepository中以下两个......
  • sms-pdu TP-User-Data的解析
    gsm文档[[23038-i00.docx]]sms内容--7bit和ucs2编码方式在3GTS23.040中,9.2.2PDUTyperepertoireatSM-TL中,有介绍六种类型的SMS,其中五种都有TP-User-Data的域,这部分的呈现也就是我们看到的SMS内容在3GTS23.038中,4SMSDataCodingScheme中,会记录内容的三种编码方式7......
  • Day18 JavaDoc生成文档
    参数信息(加在类上就是类的注释,加在方法上就是方法的注释)/**@author作者名@version版本号@since指明需要最早使用的jdk版本@param参数名@return返回值情况@throws异常抛出情况*/packagecom.baixiaofan.base;/***@authorBaixiaofan*@version1.0*@si......
  • Day16 三元运算符
    三元运算符扩展赋值运算符+=-=*=/=packageoperator;publicclassDemo07{publicstaticvoidmain(String[]args){inta=10;intb=20;a+=b;//a=a+ba-=b;//即a=a-b不推荐比较偷懒//字符串连接......
  • Day15 逻辑运算符、位运算符
    逻辑运算符、位运算符1.逻辑运算符与(&&):两个变量只要有一个是假,结果就是假(两个都是真,结果才是真)或(||):两个变量只要有一个为真,结果就是真(两个都为假,结果才为假)非(!()):与括号内结果相反packageoperator;//逻辑运算符publicclassDemo05{publicstat......
  • Day17 包机制
    包机制包的本质就是文件夹一般利用公司域名倒置作为包名;​如com.baidu.www包语句的语法格式为:packagepkg1[.pkg2[.pkg3...]];​为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能importpackage1[.package2........
  • Java Learning Day4 面向对象基础
    初始化顺序:默认初始化显示初始化构造器初始化(单参先执行)有内部类加载的话,在显式赋值之后,就进行新的加载 Static静态变量:静态成员变量属于类的,完全不需要创建对象使用。 private:同类中缺省:同一包中protected:不同包子类public:不同包 只有成员变量可以用权限修饰符......
  • SQLBI_精通DAX课程笔记_03_计算列
    计算列是由DAX在表中生成的列,逐行计算并储存在模式之中。以下链接是采悟老师关于度量值和计算列的区别的文章,可以同步查看。 https://zhuanlan.zhihu.com/p/75462046 一:课程内容X-MIND 二:笔记计算列是由DAX语言,在现有的模型表上生成的列,是逐行计算并生成的。简单......
  • [https @ 000001a69f0bae00] Protocol 'https' not on whitelist 'file,crypto,data'!
    ffmpeg下载视频并合并到一个视频中,执行如下命令:ffmpeg-iindex.m3u8-ccopyresult.mp4出现[https@000001a69f0bae00]Protocol'https'notonwhitelist'file,crypto,data'!问题,详情如下: 因fmpeg默认不使用https协议,https协议没有在白名单内,所以无法下......
  • day04
    进制在计算机中,任何数据都是以二进制数据来进行存储的.常见的进制有以下几种类型:1.二进制2.八进制3.十进制4.十六进制![](C:\Users\chent\Pictures\Screenshots\屏幕截图2023-12-02142653.png)进制转换公式:系数*基数的权次幂相加![截图](C:\Users\chent\Pictures......