前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🤩 Mime1 | 终极机器学习算法大组合筛选你的最佳模型(一)(预后模型篇)

🤩 Mime1 | 终极机器学习算法大组合筛选你的最佳模型(一)(预后模型篇)

作者头像
生信漫卷
发布2024-07-12 16:08:36
1350
发布2024-07-12 16:08:36
举报
文章被收录于专栏:R语言及实用科研软件

写在前面

终于到了周六,这周手术做的有点多了。🫠

下周又是工作量满满的一周。🙃

今天讲一下机器学习的神包,Mime1,之所以写这个名字,是怕大家和Mime包混淆,影响安装。😂

用到的包

代码语言:javascript
复制
rm(list = ls())
# if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
# 
# depens<-c('GSEABase', 'GSVA', 'cancerclass', 'mixOmics', 'sparrow', 'sva' , 'ComplexHeatmap' )
# 
# for(i in 1:length(depens)){
#   depen<-depens[i]
#   if (!requireNamespace(depen, quietly = TRUE))  BiocManager::install(depen,update = FALSE)
# }
# 
# if (!requireNamespace("CoxBoost", quietly = TRUE))
#   devtools::install_github("binderh/CoxBoost")
# 
# if (!requireNamespace("fastAdaboost", quietly = TRUE))
#   devtools::install_github("souravc83/fastAdaboost")
# 
# if (!requireNamespace("Mime", quietly = TRUE))
#   devtools::install_github("l-magnificence/Mime")

library(Mime1)

示例数据

代码语言:javascript
复制
load("./Example.cohort.Rdata")
list_train_vali_Data[["Dataset1"]][1:5,1:5]

代码语言:javascript
复制
load("./genelist.Rdata")

genelist

创建预后模型并选择最优模型

来小试牛刀一下吧。😘

代码语言:javascript
复制
res <- Mime1::ML.Dev.Prog.Sig(train_data = list_train_vali_Data$Dataset1,
                     list_train_vali_Data = list_train_vali_Data,
                     unicox.filter.for.candi = T,
                     unicox_p_cutoff = 0.05,
                     candidate_genes = genelist,
                     mode = 'all', ## 'all', 'single', and 'double'
                     nodesize =5,
                     seed = 123 
                     )

可视化C-index。😘

代码语言:javascript
复制
cindex_dis_all(res,
               validate_set = names(list_train_vali_Data)[-1],
               order = names(list_train_vali_Data),
               width = 0.35
               )

展示指定模型的C-index。🙊

代码语言:javascript
复制
cindex_dis_select(res,
                  model="StepCox[forward] + plsRcox",
                  order= names(list_train_vali_Data))

根据特定模型计算的风险评分,绘制不同数据集中患者的生存曲线。💪

代码语言:javascript
复制
survplot <- vector("list",2) 
for (i in c(1:2)) {
  print(survplot[[i]]<-rs_sur(res, model_name = "StepCox[forward] + plsRcox",
                              dataset = names(list_train_vali_Data)[i],
                              #color=c("blue","green"),
                              median.line = "hv",
                              cutoff = 0.5,
                              conf.int = T,
                              xlab="Day",pval.coord=c(1000,0.9))
        )
}
aplot::plot_list(gglist=survplot,ncol=2)

计算模型的AUC

代码语言:javascript
复制
all.auc.1y <- cal_AUC_ml_res(res.by.ML.Dev.Prog.Sig = res,train_data = list_train_vali_Data[["Dataset1"]],
                            inputmatrix.list = list_train_vali_Data,mode = 'all',AUC_time = 1,
                            auc_cal_method="KM")
all.auc.3y <- cal_AUC_ml_res(res.by.ML.Dev.Prog.Sig = res,train_data = list_train_vali_Data[["Dataset1"]],
                            inputmatrix.list = list_train_vali_Data,mode = 'all',AUC_time = 3,
                            auc_cal_method="KM")
all.auc.5y <- cal_AUC_ml_res(res.by.ML.Dev.Prog.Sig = res,train_data = list_train_vali_Data[["Dataset1"]],
                            inputmatrix.list = list_train_vali_Data,mode = 'all',AUC_time = 5,
                            auc_cal_method="KM")

可视化AUC。😘

这里我们只展示一下1年的。😏

代码语言:javascript
复制
auc_dis_all(all.auc.1y,
            dataset = names(list_train_vali_Data),
            validate_set=names(list_train_vali_Data)[-1],
            order= names(list_train_vali_Data),
            width = 0.35,
            year=1)

绘制不同数据集中特定模型的ROC曲线。😘

代码语言:javascript
复制
roc_vis(all.auc.1y,
        model_name = "StepCox[forward] + plsRcox",
        dataset = names(list_train_vali_Data),
        order= names(list_train_vali_Data),
        anno_position=c(0.65,0.55),
        year=1)

绘制不同数据集中特定模型的135年的AUC。😘

代码语言:javascript
复制
auc_dis_select(list(all.auc.1y,all.auc.3y,all.auc.5y),
               model_name="StepCox[forward] + plsRcox",
               dataset = names(list_train_vali_Data),
               order= names(list_train_vali_Data),
               year=c(1,3,5))

单变量cox回归特定模型的meta分析

代码语言:javascript
复制
unicox.rs.res <- cal_unicox_ml_res(res.by.ML.Dev.Prog.Sig = res,
                                   optimal.model = "StepCox[forward] + plsRcox",
                                   type ='categorical' # 'categorical' or 'continuous'
                                   )

metamodel <- cal_unicox_meta_ml_res(input = unicox.rs.res)

meta_unicox_vis(metamodel,
                dataset = names(list_train_vali_Data))

与已知模型相比较

7.1 计算risk score

代码语言:javascript
复制
rs.glioma.lgg.gbm <- cal_RS_pre.prog.sig(use_your_own_collected_sig = F,
                                         type.sig = c('LGG','GBM','Glioma'),
                                        list_input_data = list_train_vali_Data)

可视化比较HR。😘

代码语言:javascript
复制
HR_com(rs.glioma.lgg.gbm,
       res,
       model_name="StepCox[forward] + plsRcox",
       dataset=names(list_train_vali_Data),
       type = "categorical")

7.2 计算C-index

代码语言:javascript
复制
cc.glioma.lgg.gbm <- cal_cindex_pre.prog.sig(use_your_own_collected_sig = F,
                                             type.sig = c('Glioma','LGG','GBM'),
                                            list_input_data = list_train_vali_Data)

可视化比较C-index。🌟

代码语言:javascript
复制
cindex_comp(cc.glioma.lgg.gbm,
            res,
            model_name="StepCox[forward] + plsRcox",
            dataset=names(list_train_vali_Data))

7.3 计算AUC

代码语言:javascript
复制
auc.glioma.lgg.gbm.1 <- cal_auc_pre.prog.sig(use_your_own_collected_sig = F,
                                            type.sig = c('Glioma','LGG','GBM'),
                                            list_input_data = list_train_vali_Data,AUC_time = 1,
                                            auc_cal_method = 'KM')

可视化比较AUC。😘

代码语言:javascript
复制
auc_comp(auc.glioma.lgg.gbm.1,
         all.auc.1y,
         model_name="StepCox[forward] + plsRcox",
         dataset=names(list_train_vali_Data))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 用到的包
  • 示例数据
  • 创建预后模型并选择最优模型
  • 计算模型的AUC
  • 单变量cox回归特定模型的meta分析
  • 与已知模型相比较
    • 7.1 计算risk score
      • 7.2 计算C-index
        • 7.3 计算AUC
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档