专栏首页生信修炼手册预后建模绕不开的lasso cox回归

预后建模绕不开的lasso cox回归

回归我们并不陌生,线性回归和最小二乘法,逻辑回归和最大似然法,这些都是我们耳熟能详的事物,在生物信息学中的应用也比较广泛, 回归中经常出现两类问题,欠拟合和过拟合。

对于欠拟合,简单而言就是我们考虑的少了,一般通过在回归模型中增加自变量或者扩大样本数量来解决;对于过拟合,简单而言就是考虑的太多了,模型过于复杂了,这时候可以对已有的自变量进行筛选,在代价函数中增加惩罚项来限制模型的复杂度,增加的惩罚项我们称之为正则化,正则化常用的有L1正则化和L2正则化,

所谓正则化Regularization, 指的是在回归模型代价函数后面添加一个约束项, 在线性回归模型中,有两种不同的正则化项

1. 所有参数绝对值之和,即L1范数,对应的回归方法叫做Lasso回归

2. 所有参数的平方和,即L2范数,对应的回归方法叫做Ridge回归,岭回归

lasso回归对应的代价函数如下

岭回归对应的代价函数如下

红框标记的就是正则项,需要注意的是,正则项中的回归系数为每个自变量对应的回归系数,不包含回归常数项。

在预后建模的文章中,我们需要针对多个marker基因的表达量汇总形成一个指标,使用该指标来作为最终的maker, 而这个指标在文章中被称之为各种risk score, 比如NAD+基因的预后模型,构建的maker就叫做NPRS, 全称的解释如下

The NAD+ metabolism-related prognostic risk score (NPRS) of each sample was calculated using the formula: NPRS = ΣExp (mRNAί) × Coefficient (mRNAί)

所以各种的预后建模,其实都是lasso回归技术在生物信息学领域的应用。注意观察上述的Lasso回归代价函数,,可以看到有一个未知数λ, 这个参数是一个惩罚项的系数,数值越大,惩罚项对应的影响就越大,我们求解的目标是代价函数值最小,λ = 0时,惩罚项失去意义,代价函数变成了普通的线性回归,而λ过大,惩罚项的影响被放的过大,过小时,惩罚项又失去了原本的意义,所以使用lasso回归,第一个问题是设置合理的λ 值。

这个λ 值 如何设置呢?最简单的办法是找到两个队列,训练集和验证集,适应一系列的λ值对训练集进行建模,观察模型在验证集上的表现,然后选择在验证集上表现最佳模型的λ值,当没有额外的验证集时,就只能通过交叉验证的方式将数据集人工划分为训练集和验证集,然后进行分析。在NAD+的文献中,也是采用了10折交叉验证的方式

In the training cohort, using the Least Absolute Shrinkage And Selection Operator (LASSO) regression with 10-fold cross-validated to screen out NMRGs associated with survival in ALS patients.

具体到实际操作,使用的是glmnet这个R包

Here, the glmnet package was applied to determine the optimal lambda value corresponding to the minimum of the error mean via cross-validation.

官方链接如下

https://glmnet.stanford.edu/

正则项本身只是一个代价函数中的添加项,所以其应用范围不仅局限于线性回归,逻辑回归,cox回归都支持,所以glmnet这个R包也支持多种回归模型的正则化处理。对于cox回归而言,其用法可以参考如下链接

https://glmnet.stanford.edu/articles/Coxnet.html

基本的操作步骤如下

1. 准备输入文件

包括自变量和因变量,自变量是一个矩阵,每一行表示一个患者,每一列表示一个自变量;因变量也是一个矩阵,共两列,分别为代表生存信息的time加status, 代码如下

> library(glmnet)
载入需要的程辑包:Matrix
Loaded glmnet 4.1-2
> library(survival)
> data(CoxExample)
> x <- CoxExample$x
> y <- CoxExample$y
# 自变量数据,每一行表示一个患者,每一列表示一个自变量
> head(x[, 1:5])
           [,1]       [,2]        [,3]       [,4]        [,5]
[1,] -0.8767670 -0.6135224 -0.56757380  0.6621599  1.82218019
[2,] -0.7463894 -1.7519457  0.28545898  1.1392105  0.80178007
[3,]  1.3759148 -0.2641132  0.88727408  0.3841870  0.05751801
[4,]  0.2375820  0.7859162 -0.89670281 -0.8339338 -0.58237643
[5,]  0.1086275  0.4665686 -0.57637261  1.7041314  0.32750715
[6,]  1.2027213 -0.4187073 -0.05735193  0.5948491  0.44328682
# 因变量数据,生存数据的因变量为time加status
> head(y)
           time status
[1,] 1.76877757      1
[2,] 0.54528404      1
[3,] 0.04485918      0
[4,] 0.85032298      0
[5,] 0.61488426      1
[6,] 0.29860939      0

2. 交叉验证

通过交叉验证,选择最佳的λ值。在选择λ值时,我们需要指定评价指标,就是根据评价指标的值来选择最佳模型和最佳λ值,对应的是typpe.measure参数,对于cox模型而言,只支持以下两种指标

1. deviance

2. C-index

评价指标c-index的代码如下

> cvfit <- cv.glmnet(x, y, family = "cox", type.measure = "C", nfolds = 10)
> plot(cvfit)

输出如下

评价指标deviance的代码如下

> cv.glmnet(x, y, family = "cox", type.measure = "deviance", nfolds = 10)
> plot(cvfit)

输出如下

在上述图片中,横坐标为log λ值,纵坐标为每个λ值对应的评价指标,用error bar的形式展现了多个模型评价指标的均值+标准误,可以看到在图中有两条垂直的虚线,左边的虚线对应评价指标最佳的λ值,即lambda.min, c-index值越大越好,deviance值越小越好;右边的虚线表示评价指标在最佳值1个标准误范围的模型的λ值,即lambda.1se, 通过以下方式可以提取对应的值

> cvfit$lambda.min
[1] 0.01749823
> cvfit$lambda.1se
[1] 0.04868986

通过print函数可以看到交叉验证的关键信息

> print(cvfit)


Call:  cv.glmnet(x = x, y = y, type.measure = "deviance", nfolds = 10, family = "cox")


Measure: Partial Likelihood Deviance


     Lambda Index Measure      SE Nonzero
min 0.01750    29   13.08 0.06221      15
1se 0.04869    18   13.14 0.05369      10

通过coef函数可以显示自变量的回归系数,可以看到很多自变量的回归系数都是0,就意味着这些自变量被过滤掉了

> coef(cvfit, s = cvfit$lambda.1se)
30 x 1 sparse Matrix of class "dgCMatrix"
              1
V1   0.38108115
V2  -0.09838545
V3  -0.13898708
V4   0.10107014
V5  -0.11703684
V6  -0.39278773
V7   0.24631270
V8   0.03861551
V9   0.35114295
V10  0.04167588
V11  .         
V12  .         
V13  .         
V14  .         
V15  .         
V16  .         
V17  .         
V18  .         
V19  .         
V20  .         
V21  .         
V22  .         
V23  .         
V24  .         
V25  .         
V26  .         
V27  .         
V28  .  

通过交叉验证,在选择最佳λ值的同事,也确定了最佳的回归模型,通过coef提取回归系数,我们就得到了最终的回归模型。

·end·

文章分享自微信公众号:
生信修炼手册

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:lzyg
原始发表时间:2022-05-07
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 联合单细胞与TCGA数据建立肝癌预后模型

    (2)基于此,使用CIBERSORT算法去预测TCGA每个样本的细胞类型组成比例。

    生信技能树jimmy
  • 灵活选择基因集,你也能发6分+!

    范可尼贫血(FA)通路是一种典型的、多酶调节的DNA损伤修复剂,它影响着包括癌症在内的疾病的发生和发展。关于FA相关基因(FARGs)的作用及其在癌症中的预后价...

    作图丫
  • 这篇4+分的文章分析干净利落不老套

    Immune-related gene signature for predicting the prognosis of head and neck squa...

    科研菌
  • 重复一篇3分左右纯生信文章(第二部分)

    使用单变量Cox模型计算每个lncRNA的表达水平与患者的总体存活(OS)之间的关联。当其P值小于0.05时,lncRNA在单变量Cox分析中被认为是统计学上显...

    用户1359560
  • 利用代谢相关基因构建列线图是如何发4分+SCI的?

    大家好!今天跟大家分享的文献是2020年9月发表在Molecular Therapy-Oncolytics(IF=4.115)杂志上的一篇文章。文章利用TGCA...

    百味科研芝士
  • 这篇3+分教你筛选拿出来几个基因应该如何分析

    Construction of a novel gene-based model for prognosis prediction of clear cell ...

    科研菌
  • 灵活利用公共数据集构建预后模型也能发7分+!

    乳腺癌患者的总生存率存在显著的异质性。目前的评估模型不足以准确预测患者的预后,也缺乏预测治疗反应的模型。

    作图丫
  • 四个基因的能量代谢模型构建与验证,轻松发4分sci!

    今天分享一篇2019年6月发表于J Cell Physiol(IF:4.522)的文章,标题是Identification of a four‐gene met...

    百味科研芝士
  • 免疫预后模型发4.9分,这种套路需要掌握!

    今天分享一篇发表于Cancer Immunol Immun,影响因子为4.9的文献。标题是Immune cell infiltration as a bioma...

    百味科研芝士
  • 自噬相关基因模型在非小细胞肺癌中的预后意义

    各位小伙伴们大家好,这次给大家分享的文献是Prognostic implications of autophagy-associated gene signat...

    百味科研芝士
  • 免疫相关基因预后模型构建,这个套路不香吗?

    大家好,今天向大家分享的是2020年4月发表在Frontiers in Genetics (IF=3.517) 杂志上的一篇文献《Novel Immune-Re...

    用户6317549
  • 多发性骨髓瘤单细胞数据挖掘

    文章通过重新分析MM(多发性骨髓瘤)单细胞数据集,将这些MM浆细胞分为7个cluster,并结合轨迹分析分为三个阶段(early, middle, late s...

    生信技能树jimmy
  • 重复一篇3分左右纯生信文章(第一部分)

    这一次要分享的文章题目是:Five key lncRNAs considered as prognostic targets for predicting pa...

    用户1359560
  • 手把手带你画高大上的lasso回归模型图

    这两篇文章均是采用了lasso回归的范文。感兴趣的可以自行下载学习,当然今天我们主要是和大家探讨lasso回归的细枝末节,具体体会这个算法的精妙和思想。

    百味科研芝士
  • 你熟悉的4分+m6A调节基因预后研究配方

    大家好!今天要和大家共同分析的文献为2020年5月发表在Frontiers in Oncology(IF = 4.137)上的文章。本文全面分析了m6A调节基因...

    百味科研芝士
  • 4分+缺氧和免疫相关预后模型标准范文

    大家好!今天跟大家分享的文献是2020年11月发表在Journal of Hepatocellular Carcinoma (IF=4.655)杂志上的一篇文章...

    百味科研芝士
  • 6分+纯生信:基于免疫浸润对多癌种进行化疗获益分析

    今天分享的是2020年4月份发表于Cancers的一篇文章,影响因子6.162。标题是Pan-Cancer Analysis of Radiotherapy B...

    百味科研芝士
  • 7分+铁死亡相关基因与预后和免疫关联分析

    胰腺癌是世界上预后最差的恶性肿瘤之一。铁死亡作为一种新的程序性细胞死亡,已被证明在肿瘤治疗中具有潜力。

    作图丫
  • Oh my god!不做实验也能发3分SCI!

    大家好,本期给大家推荐的文献是Differentially Expressed lncRNAs in Gastric Cancer Patients: A Po...

    百味科研芝士

扫码关注腾讯云开发者

领取腾讯云代金券