cox版本的Boruta+SHAP分析(心力衰竭数据集)

Cox版本的Boruta+SHAP分析(心力衰竭数据集)

Boruta算法是变量筛选的有力工具,而SHAP分析是观察预测变量与结局变量间关系的不错的方法,在传统的分析方法的基础上提供了一个全新的视角。Boruta算法+SHAP分析,正在逐渐成为一种流行的分析策略。
COX分析是医学分析中最重要的一种类型,分类结局中纳入了时间因素,较单纯的二分类结局能够提供更多的信息,比如某变量对于结局的贡献随时间是如何变化的?Boruta+SHAP的分析策略也可以用在Cox分析中,并且展示了一些cox分析独特的特点。

1. Boruta算法进行变量筛选代码

这部分还是使用Boruta包,如图中仅作稍许变化即可。

library(Boruta)
library(survival)
set.seed(1)

Y = Surv(data$time, data$DEATH_EVENT)
boruta_obj<-Boruta(y=Y,x=data[,c(1:11)],doTrace=0,ntree=500,pValue=0.01)
print(TentativeRoughFix(boruta_obj))#分两类
print(boruta_obj)#三类,包含怀疑的数据

2. SHAP分析代码

参考treeshap包的代码,一键运行可以到和鲸社区相关项目查看。

library(tidyverse)
library(treeshap)
#先转成data.table格式
data <- data.table::data.table(data[,c('age','ejection_fraction','serum_creatinine','serum_sodium','time','DEATH_EVENT')])
surv_cols <- c("DEATH_EVENT", "time")
feature_cols <- colnames(data)
#这里比较少见的函数的操作,属于data.table内容
train_x <- model.matrix(
        ~ -1 + .,
        data[, .SD, .SDcols = setdiff(feature_cols, surv_cols[1:2])]
        )
train_y <- survival::Surv(
        event = (data[, get("DEATH_EVENT")] %>%
        as.character() %>%
        as.integer()),
        time = data[, get("time")],
        type = "right"
        )
rf <- ranger::ranger(
        x = train_x,
        y = train_y,
        data = data,
        max.depth = 10,
        num.trees = 10
        )
unified_model_risk <- ranger_surv.unify(rf, train_x, type = "risk")#"risk"type计算累积风险的sum,
shaps <- treeshap(unified_model_risk, train_x)
# compute shaps for 3 selected months of followup points
unified_model_surv <- ranger_surv.unify(rf, train_x, type = "survival", time = c(36, 60, 120))
shaps_surv <- treeshap(unified_model_surv, train_x)

3. 心力衰竭数据集分析的部分结果

  • 四个变量对于心力衰竭的结局有所贡献,最重要的是ejection_fraction,接下来我们单独考查这一个指标。
    在这里插入图片描述
  • ejection_fraction与心力衰竭的关系,30以下是有风险的,越低风险越大。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0d34c84b396c43a58513a946f6a7029e.png在这里插入图片描述
  • 年龄与心力衰竭的关系
    在这里插入图片描述
    分析的结果展现了一些心力衰竭相关因素的变化,还可以指定时间点,对相关的因素进行更加细致的考察。但是,因为使用的数据集是公开的数据集,我们并不确定来源的可靠性,所以并不确定所展示相关关系的准确性,而只做技术上的讨论。
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

预测模型的开发与应用研究

文中代码请大家随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值