多因素竞争风险模型R如何实现?
数据说明
这里使用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中顺序一致!)


