R语言tidycmprsk包分析竞争风险模型

竞争风险模型就是指在临床事件中出现和它竞争的结局事件,这是事件会导致原有结局的改变,因此叫做竞争风险模型。比如我们想观察患者肿瘤的复发情况,但是患者在观察期突然车祸死亡,或者因其他疾病死亡,这样我们就观察不到复发情况了,这种情况下不能把缺失数据仅仅当做右删失处理,这样的话会造成数据的估值错误。这是我们应该优先选择竞争风险模型来做数据分析,而不是COX回归。竞争风险模型在数据挖掘中经常使用到。既往我们在文章《手把手教你使用R语言做竞争风险模型并绘制列线图》和《一步到位:手把手教你R语言竞争风险模型建模-列线图-校准曲线-K折验证-外部验证- 决策曲线》已经介绍了使用cmprsk包绘制和QHScrnomo包进行分析,今天咱们来介绍一下tidycmprsk包,它也是基于cmprsk包进行分析,但是功能更多,绘制图形更加精美。

下面立即开始,先导入数据和R包,使用的是tidycmprsk 包自带的trial数据

r 复制代码
library(tidycmprsk)
data(trial)

这是一个模拟两种化疗药物的模拟治疗肿瘤的数据,数据集包含200名接受药物A或药物B的患者的基线特征。数据集还包含肿瘤对治疗的反应结果。

Trt:化疗的药物,age年龄,marker标记物水平,stage阶段,grade等级,response物流反应,death_cr死亡状态,这个是结局变量,ttdeath时间变量

假设咱们想研究trt不同化疗药物对结局的影响,咱们先来个单因素的分析

r 复制代码
out<-cuminc(Surv(ttdeath, death_cr) ~ trt, trial)
out

咱们可以进一步绘图,如果没有指定,一般是默认第一个结局

r 复制代码
out %>%
  ggcuminc()

咱们也可以进一步指定,这样清楚一点

r 复制代码
out %>%
  ggcuminc(outcome = c("death from cancer", "death other causes"))

加上生存分析人数的表格

r 复制代码
out %>%
  ggcuminc(outcome = c("death from cancer")) +
  add_risktable()

也可以换个格式显示

r 复制代码
out %>%
  ggcuminc(outcome = c("death from cancer")) +
  add_risktable(
    risktable_stats = "n.risk",
    stats_label = list(n.risk = "Number at Risk"),
  )

还可以进一步绘制可信区间

r 复制代码
out %>%
  ggcuminc(outcome = c("death from cancer")) +
  add_risktable(
    risktable_stats = "n.risk",
    stats_label = list(n.risk = "Number at Risk"),
  )  +
  add_confidence_interval()

接下来咱们来演示多因素分析,如果你不指定结局的话,会默认的把第一个结局当成存活,最后一个结局当成竞争风险指标,就是咱们常见的0,1,2形式

r 复制代码
crr_mod <- crr(Surv(ttdeath, death_cr) ~ age + trt, trial)
crr_mod

如上图结果就出来了,结果还表明了选择了癌症为结局。我们也可以指定,我觉得这样比较好点,使用failcode这个参数指定

r 复制代码
crr_mod <- crr(Surv(ttdeath, death_cr) ~ age + trt, failcode="death from cancer",trial)
crr_mod

结果表明药物B相比药物A并没有明显优势。

相关推荐
GIS数据转换器34 分钟前
地下空间综合管廊运营管理平台
大数据·开发语言·人工智能·经验分享·perl
Wang's Blog6 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
砚底藏山河6 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
今年下半年6 小时前
AI智能体项目实战记录(02):初始化 Python 项目
开发语言·人工智能·python·fastapi
Williamtym7 小时前
PickGo Lab实践:用浏览器、Python和MCP串起机器人搬运仿真
开发语言·python·机器人
DongQiShanRen7 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CS创新实验室7 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python
quantdash_cc7 小时前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
yu_zhidun7 小时前
企业电脑监控软件怎么选:别只看功能清单,先看这 6 个底层能力
开发语言·电脑·php·域智盾系统
无忧.芙桃8 小时前
C++语言原理与实践(十六):多态机制讲解
开发语言·c++·多态