R数据分析:竞争风险模型的做法和解释

今天有粉丝找我做一个竞争风险模型,顺便给大家写一个简易的教程,有问题大家直接私信,根据您的需求,一直做到您满意。

竞争风险模型这个东西还是临床医生用的多:

很直观的情景就是:研究治疗方案A和白血病复发的关系,如果患者在去医院复查的路上出车祸意外死亡了,就观察不到白血病复发了,也就是说“车祸死亡” 和“复发”存在竞争。这样的现象在医学研究中,非常常见!你想研究A因素导致的病人死亡,可是现实情况是病人常常死于其他疾病或情形。这个就是竞争风险模型。

竞争风险模型可以作为Kaplan–Meier (KM)和cox比例风险模型的补充,在你的病人有很多个风险因素暴露的时候,如果你还将死于其余事件的数据记为删失数据就会高估你研究的暴露因素的累计发病率,这个时候使用竞争风险模型才是最好的选择:

Competing risk analysis refers to a special type of survival analysis that aims to correctly estimate marginal probability of an event in the presence of competing events.

实例描述

现在我想对我的病人随访4个月,我关心的结局是病人会不会得A病死亡,但是这4个月中有病人陆陆续续得B病死亡了,我的研究问题是:AB导致的病人的死亡风险分别是如何随时间变化的。

那么这个就是一个竞争风险问题,我们可以模拟看看:

ss <- rexp(100)#结局时间
gg <- factor(sample(1:2,100,replace=TRUE),1:2,c('男','女'))#生成因子分组
cc <- sample(0:2,100,replace=TRUE)#结局
print(xx <- cuminc(ss,cc))

删失结局为0,所以我们有1,2两个结局相互竞争,分别是“死于A病”和“死于B病”,从上面的结果可以看出在不同的时间点死于AB病的边缘概率。比如在时间点1时病人死于A病和B病的边缘概率或者边缘风险分别是0.18和0.26.

我们可以把累计风险函数画出来:

plot(xx, curvlab = c("死于A病", "死于B病"), xlab = "Days")

到这儿,问题一就解决了,病人其实更容易死于B病哦。

然后问题二:男女之间死于AB病的风险有无差异。

这个问题就涉及到竞争模型的分组比较,学会了男女比较其他的分类变量的比较都是一样的:

betweengroups <- cuminc(ftime = ss, fstatus = cc, group = gg)

运行上面的代码就可以构建一个以病人性别分组比较的竞争风险模型,同样的我们可以将各个组的累计风险画出来:

plot(betweengroups, lty = c(1, 1, 2, 2),curvlab = c("死于A病,男", "死于A病,女",
"死于B病,男", "死于B病,女"),
xlab = "Days",color = 1:6)

那么具体男女之间不同疾病的死亡风险有没有差异呢?

可以看到上图的模型输出结果中pv大于0.05,说明男女之间两种疾病的死亡风险并没有统计上的不同。

小结

今天给大家简要介绍了竞争风险模型,注意我们还只是仅仅在探讨死亡风险这个因变量的不同变化,还没有考虑是哪些因素影响这个死亡风险,之后的文章会给大家写。

(0)

相关推荐