实战 lasso特征筛选得到5个基因 cox单因素分析得到很多有意义的基因 如何lasso筛选特征基因 然后再进行cox多因素分析

这篇具有很好参考价值的文章主要介绍了实战 lasso特征筛选得到5个基因 cox单因素分析得到很多有意义的基因 如何lasso筛选特征基因 然后再进行cox多因素分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

二、为什么需要用 Lasso + Cox 生存分析模式一般我们在筛选影响患者预后的变量时,通常先进行单因素Cox分析筛选出关联的变量,然后构建多因素模型进一步确认变量与生存的关联是否独立。
但这种做法没有考虑到变量之间多重共线性的影响,有时候我们甚至会发现单因素和多因素Cox回归得到的风险比是矛盾的,这是变量之间多重共线性导致模型 失真的结果。并且,当变量个数大于样本量时(例如筛选影响预后的基因或突变位点,候选的变量数可能远超样本个数),此时传统的Cox回归的逐步回归、前 进法、后退法等变量筛选方法都不再适用。
因此,当变量之间存在多重共线性或者变量个数大于样本量时,需要用Lasso
(Least absolute shrinkage and selection operator)回归首先进行变量的筛选,然后构建Cox回归模型分析预后影响,这就是Lasso + Cox 生存分析模式。
三、什么是 Lasso + Cox 生存分析模式Lasso可以在模型参数估计的同时实现变量的选择,能够较好的解决回归分析中的多重共线性问题,并且能够很好的解释结果。Lasso回归算法使用L1范数进行收缩惩罚,对一些对于因变量贡献不大的变量系数进行罚分矫正,将一些不太重要的变量的系数压缩为0,保留重要变量的系数大于0,以减少Cox回归中协变量的个数

5.7+生信文章复现(五):单因素cox+lasso筛选预后相关DEGs

load("G:/r/duqiang_IPF/GSE70866_metainformation_4_platforms/3_ipf_combined_cox_univariate_Adjuste_for_age_sex.RData")


head(cox_results)
rownames(cox_results)
cox_results2=cox_results %>% as.data.frame() %>% filter(p<0.05)

lasso 基因筛选,回归分析(logistic cox),生存分析,机器学习,人工智能

identical(colnames(exprSet),rownames(phe))

x=exprSet[rownames(exprSet) %in% rownames(cox_results2),]
x=t(x)
dim(x)
y=phe %>%select('time','event')
head(y)[1:4,1:2]
head(x)[1:4,1:4]

lasso 基因筛选,回归分析(logistic cox),生存分析,机器学习,人工智能

模型构建 input  x  y

#构建模型
y=data.matrix(Surv(time=y$time,
                   event= y$event))
head(y)
head(x)[1:4,1:5]

lasso 基因筛选,回归分析(logistic cox),生存分析,机器学习,人工智能

1 模型构建

fit <- glmnet(x, y, family = 'cox', type.measure = "deviance", nfolds = 10)
plot(fit,xvar = 'lambda',label = T) #候选DEHGs的lasso系数

lasso 基因筛选,回归分析(logistic cox),生存分析,机器学习,人工智能

2 十折交叉检验筛选最佳lambda: 

#十折交叉检验筛选最佳lambda:
set.seed(007)
lasso_fit <- cv.glmnet(x, y, family = 'cox', type.measure = 'deviance', nfolds = 10)

lasso 基因筛选,回归分析(logistic cox),生存分析,机器学习,人工智能

3 提取最佳λ值(这里选择1se对应lambda): 

#提取最佳λ值(这里选择1se对应lambda):
lambda.1se <- lasso_fit$lambda.1se
lasso_fit$lambda.min
lambda.1se  #[1] 0.2617315

4.使用1se的lambda重新建模:

model_lasso_1se <- glmnet(x, y, family = 'cox',
                          type.measure = 'deviance', nfolds = 10,
                          lambda = lambda.1se)

5 拎出建模使用基因:

#拎出建模使用基因:
gene_1se <- rownames(model_lasso_1se$beta)[as.numeric(model_lasso_1se$beta)!=0]#as.numeric后"."会转化为0
gene_1se #筛选出5个  #"HS3ST1"  "MRVI1"   "TPST1"   "SOD3"    "S100A14"




library(dplyr)

#save(phe,phe_final_3,exprSet,cox_results,file = "G:/r/duqiang_IPF/GSE70866_metainformation_4_platforms/3_ipf_combined_cox_univariate_Adjuste_for_age_sex.RData")
load("G:/r/duqiang_IPF/GSE70866_metainformation_4_platforms/3_ipf_combined_cox_univariate_Adjuste_for_age_sex.RData")


head(cox_results)
rownames(cox_results)
cox_results2=cox_results %>% as.data.frame() %>% filter(p<0.05)

getElement(cox_results,"p")
cox_results['p']
head(cox_results)
dim(cox_results)

head(exprSet)
dim(exprSet)

dim(phe)
head(phe)

identical(colnames(exprSet),rownames(phe))

x=exprSet[rownames(exprSet) %in% rownames(cox_results2),]
x=t(x)
dim(x)
y=phe %>%select('time','event')
head(y)[1:4,1:2]
head(x)[1:4,1:4]



table(y$time==0)


#OS单位从天转换为年: 是否转换成年不影响结果
if(1==1){
  y$time <- round(y$time/365,5) #单位年,保留5位小数  time不可以有0
  head(y)
}



#构建模型
y=data.matrix(Surv(time=y$time,
                   event= y$event))
head(y)
head(x)[1:4,1:5]
fit <- glmnet(x, y, family = 'cox', type.measure = "deviance", nfolds = 10)
plot(fit,xvar = 'lambda',label = T) #候选DEHGs的lasso系数
head(coef(fit))



#十折交叉检验筛选最佳lambda:
set.seed(007)
lasso_fit <- cv.glmnet(x, y, family = 'cox', type.measure = 'deviance', nfolds = 10)

plot(lasso_fit)
lasso_fit
head(coef(lasso_fit))
rownames(lasso_fit$beta)[as.numeric(lasso_fit$beta)>0]


#提取最佳λ值(这里选择1se对应lambda):
lambda.1se <- lasso_fit$lambda.1se
lasso_fit$lambda.min
lambda.1se  #[1] 0.2617315


#使用1se的lambda重新建模:
model_lasso_1se <- glmnet(x, y, family = 'cox',
                          type.measure = 'deviance', nfolds = 10,
                          lambda = lambda.1se)
head(model_lasso_1se)
head(coef(model_lasso_1se))


#拎出建模使用基因:
gene_1se <- rownames(model_lasso_1se$beta)[as.numeric(model_lasso_1se$beta)!=0]#as.numeric后"."会转化为0
gene_1se #筛选出5个  #"HS3ST1"  "MRVI1"   "TPST1"   "SOD3"    "S100A14"

cox回归与logistic回归的区别

lasso 基因筛选,回归分析(logistic cox),生存分析,机器学习,人工智能

lasso 基因筛选,回归分析(logistic cox),生存分析,机器学习,人工智能

一、LASSO简要介绍

       随着科技的进步,收集数据的技术也有了很大的发展。因此如何有效地从数据中挖掘出有用的信息也越来越受到人们的关注。统计建模无疑是目前处理这一问题的最有效的手段之一。在模型建立之初,为了尽量减小因缺少重要自变量而出现的模型偏差,人们通常会选择尽可能多的自变量。但实际建模过程中通常需要寻找对响应变量最具有解释性的自变量子集—即模型选择(或称变量选择、特征选择),以提高模型的解释性和预测精度。所以模型选择在统计建模过程中是极其重要的问题。

       Lasso(Least absolute shrinkage and selection operator, Tibshirani(1996))方法是一种压缩估计。它通过构造一个罚函数得到一个较为精炼的模型,使得它压缩一些系数,同时设定一些系数为零。因此保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。

      Lasso 的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0 的回归系数,得到可以解释的模型。R的Lars 算法的软件包提供了Lasso编程,我们根据模型改进的需要,可以给出Lasso算法,并利用AIC准则和BIC准则给统计模型的变量做一个截断,进而达到降维的目的。因此,我们通过研究Lasso可以将其更好的应用到变量选择中去。

     说简单点:在回归分析中因素筛选主要用到逐步回归stepwise、向前、向后等等方法,这些方法比较传统,而对于共线性问题比较严重的数据,或者变量个数大于观测值个数例如基因测序数据,基因个数远大于观测值个数(病人数),上述传统方法不合适,而Lasso 方法就是为了解决上述问题而生,它提供了一种新的变量筛选算法,可以很好的解决共线性问题,对于我们平常做的回归分析,如果大家觉得用普通的方法筛选到的变量不理想,自己想要的变量没有筛选到,可以用此方法试一试,具体流程是先在R软件中用此方法筛选出变量,之后对筛选出的变量再做COX回归或者其他回归分析。文章来源地址https://www.toymoban.com/news/detail-790721.html

到了这里,关于实战 lasso特征筛选得到5个基因 cox单因素分析得到很多有意义的基因 如何lasso筛选特征基因 然后再进行cox多因素分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习项目实战-能源利用率 Part-3(特征工程与特征筛选)

    博主前期相关的博客可见下: 机器学习项目实战-能源利用率 Part-1(数据清洗) 机器学习项目实战-能源利用率 Part-2(探索性数据分析) 这部分进行的特征工程与特征筛选。 一般情况下我们分两步走:特征工程与特征筛选: 特征工程: 概括性来说就是尽可能的多在数据中提

    2024年02月05日
    浏览(41)
  • 数据分析时,进行数据建模该如何筛选关键特征?

    1.为什么要做关键特征筛选? 在数据量与日俱增的时代,我们收集到的数据越来越多,能运用到数据分析挖掘的数据也逐渐丰富起来,但同时,我们也面临着如何从庞大的数据中筛选出与我们业务息息相关的数据。(大背景)从数据中挖掘潜在的规律,辅助我们在实际业务中

    2023年04月13日
    浏览(41)
  • limma包实现差异基因筛选

    载入工作路径: 安装limma包(这里用BiocManager安装的):  读取表达矩阵和分组信息: 表达矩阵行为基因,列为样本。  构建分组矩阵和比较矩阵: 线性拟合,会得到一个DEG文件,里面有logFC、P.Value值以及adj.P.Val值: 根据标准进行筛选 : 绘制火山图:  

    2024年02月06日
    浏览(28)
  • 二分类结局LASSO回归筛选变量-R操作(从数据开始)+全套代码

    一、原始数据处理 如图: 结局status为二分类变量(用0,1表示) 自变量为X1~X15 数据文件名为mydata.csv 二、将数据导入Rstudio 点readr后点击browse找到你的数据,点击Import就可以导入进来了。 三、R代码进行LASSO回归 如下图所示,第一张图为plot(lasso_model,xvar=“lambda”)的结果 第

    2024年01月22日
    浏览(58)
  • 数据特征选择 | Lasso特征选择(Python)

    效果一览 文章概述 Lasso算法是一种经典的线性回归算法,被广泛应用于特征选择和降维问题。相较于传统的线性回归算法,Lasso算法能够在保持预测准确性的同时,自动筛选出对目标变量影响较大的特征变量,从而达到降低模型复杂度、提高泛化性能的效果。 其中,Lasso算法

    2024年02月07日
    浏览(40)
  • 群组变量选择、组惩罚group lasso套索模型预测新生儿出生体重风险因素数据和交叉验证、可视化...

    原文链接:http://tecdat.cn/?p=25158 本文介绍具有分组惩罚的线性回归、GLM和Cox回归模型的正则化路径。这包括组选择方法,如组lasso套索、组MCP和组SCAD,以及双级选择方法,如组指数lasso、组MCP ( 点击文末“阅读原文”获取完整 代码数据 )。 还提供了进行交叉验证以及拟合后

    2024年02月16日
    浏览(47)
  • 全量知识系统 三个矩阵-基因活性/特征明度/实体实性

    前面在谈到“祖传代码”的表示--“元素周期表”时,提出了表示“元素”属性的三个重要矩阵:基因活性矩阵、特征明度矩阵和实体实性矩阵。以下单就这三个矩阵的本身以及 它们在 全量知识系统中的意义等方面的一些问题讨论。(百度AI的回复) 基因活性矩阵 (Gene Ac

    2024年04月17日
    浏览(38)
  • 机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)

    数据集和源码请点赞关注收藏后评论区留下QQ邮箱或者私信 线性回归是利用最小二乘函数对一个或多个因变量之间关系进行建模的一种回归分析,这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个变量的称为一元回归,大于一个变量的情况叫做多元回归。

    2024年01月21日
    浏览(51)
  • Python数据分析实战-dataframe筛选某字段包含(模糊匹配)某些值的记录(附源码和实现效果)

    实现功能 Python利用df[\\\'\\\'].str.contains()对dataframe筛选某字段包含(模糊匹配)某些值的记录 实现代码 实现效果  本人读研期间发表5篇SCI数据挖掘相关论文,现在某研究院从事数据挖掘相关科研工作,对数据挖掘有一定认知和理解,会结合自身科研实践经历不定期分享关于pytho

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包