欢迎光临散文网 会员登陆 & 注册

多因素竞争风险模型R如何实现?

2023-06-17 23:02 作者:临床科研小病房  | 我要投稿

数据说明

这里使用survival包(v3.1-12)的mgus2 dataset

  • hgb 血红蛋白;

  • creat 肌酐;

  • ptime 直至发展为浆细胞恶性肿瘤(PCM)或最后一次访视的时间(以月为单位);

  • pstat 出现PCM(浆细胞恶性肿瘤):0 =否,1 =是;

  • futime 直到死亡或最后一次接触的时间,以月为单位;

  • death 发生死亡:0 =否,1 =是;

  • 这里把PCM作为结局事件,death作为竞争事件。

加载包

library("survival") 

library("cmprsk")

预处理

etime <- with(mgus2, ifelse(pstat==0, futime, ptime)) 

event <- with(mgus2, ifelse(pstat==0, 2*death, 1)) 

# 0 1 2 labels分别对应("censor", "pcm", "death") event <- factor(event, 0:2)

多因素分析(crr)

01考虑多个协变量

x <- mgus2[, c('age', 'hgb', 'creat')] 

fit <- crr(etime,event,x)

summary(fit)

上述以年龄,血红蛋白水平,肌酐水平作为协变量,建立多因素竞争风险模型,上图是模型结果,血红蛋白与肌酐的P值均大于0.05,说明对结局的影响不显著。

02 竞争风险,探讨其他结局

crr函数默认是以1作为结局事件

如果想要探讨协变量对竞争事件的影响,就需要加上参数"failcode=2","2"对应竞争事件的取值,我们这里2表示death。

fit2<-crr(etime,event,x,failcode = 2)

summary(fit2)

可见age、血红蛋白、肌酐三个指标P值均小于0.05,系数两正一负,为负的变量“血红蛋白”意味着较高的值表示发生death结局的风险越小,而为正的变量“age”和“肌酐”意味着较高的值表示发生death结局的风险越高。

03 预测与绘图

以fit模型为例

predict_crr <- predict.crr(fit, data.frame('age'=60))

plot(predict_crr)

这里是预测age为60的患者,在各个时间点的事件发生风险。(可以同时指定多个待预测患者的属性,每个患者一行,列中指标顺序必须与crr中顺序一致!)


多因素竞争风险模型R如何实现?的评论 (共 条)

分享到微博请遵守国家法律