1 DCA曲线介绍
上一篇文章,我们讲到 如何使用R语言,进行倾向性评分匹配分析,本来今天准备总结如何使用易侕软件进行倾向匹配评分操作,不过刚好有个朋友想要了解,决策曲线分析,在生存资料中,对两个模型的比较。同时,网上的文章,DCA研究多集中在诊断模型,在生存资料中的模型比较,仍然较少。所以我就这么没有原则的调整了计划
步入正文:
既往对于预测模型的评估,常采用ROC等传统方法,而ROC仅能够预测模型准确性,对于模型实际应用价值,缺乏指导意义。
2006年,纪念斯隆凯特琳癌症研究所的AndrewVickers博士等人研究出另一种评价方法,叫决策曲线分析法(Decision Curve Analysis,DCA),因此本文所用关键R包,需要到其研究中心官网进行下载。
以一篇JAMA Oncology 发表的一篇文献为例,讲解DCA曲线
注:该文章做的还是二分类变量,logistic回归,与本文所讲生存资料不同,仅用于介绍DCA曲线构成与意义。
题目:基于磁共振成像参数的前列腺活检风险分层预测模型
研究目的:
确定基于MRI的预测模型是否可以提高前列腺癌诊断效果,减少可疑前列腺癌患者不必要的活检。
方法:
筛选合适的建模人群与验证人群,所有患者均经过前列腺穿刺病理检查(金标准)。综合MRI参数及相应临床变量,构建诊断模型,通过ROC曲线,分析模型预测准确性。但是传统ROC,只能检测准确性,对于模型实际临床应用价值,缺乏相应指导。而决策曲线DCA的存在,恰好解决这一问题。
Figure1: 传统ROC曲线比较AUC:MRI模型预测准确性更高
Figure2:DCA曲线
DCA曲线讲解:
这幅图的横坐标为阈概率(ThresholdProbability)。当各种评价方法达到某个值时,患者i诊断为前列腺癌的概率记为Pi;当Pi达某个阈值(记为Pt),就界定为阳性,采取某种干预措施(比如实行穿刺)。
那么实行穿刺,自然就改变了确诊(及时检查)与误诊(不必要的穿刺)之间的利弊平衡,纵坐标就是利减去弊之后的净获益率(Net Benefit, NB)。
存在两种极端情况:
蓝色虚线(直线):None,代表所有患者经模型评估,全都不诊断为前列腺癌,因此均未行穿刺活检。
此时,实际患病人群,未得到及时穿刺检查而无法获益,而实际未患病人群,避免了不必要的检查。
蓝色实线(反曲线):All, 代表所有患者经模型评估,全都诊断为前列腺癌,因此均行穿刺活检。
此时,实际患病人群,得到及时检查。而实际未患病人群,被实行了多余的穿刺。
如图所示,黄色曲线(MRI模型)对比黑色曲线(Baseline模型),在一个很大的Pt区间范围内(安全范围),在相同概率的情况下,人群净获益率更高。即临床实际应用价值更高。
通俗的讲:曲线离两种极端情况越远越好。
2 生存资料DCA曲线绘制
演示文件:data.csv
本地R包资源:stdca.R
setwd("C:\\Users\\Desktop\\DCA")
source("stdca.R") #一定要把stdca.R放在当前设定的起始目录中。
dev<-read.csv("data.csv")
head(dev)
Srv=Surv(dev$time,dev$OS)coxmod=coxph(Srv ~ A + B + C ,data=dev)
#计算3年生存率
dev$three.years.Survival.Probabilitynew = c(1- (summary(survfit(coxmod,newdata=dev),times=36)$surv))
#计算5年生存率
dev$five.years.Survival.Probabilitynew = c(1- (summary(survfit(coxmod,newdata=dev),times=60)$surv))
如有需要观察每一名患者3年、5年生存概率得分,可生成新的数据,用于后续分析
write.csv(dev, "datanew.csv")
绘制预测3年生存率的决策曲线
stdca(data=dev,outcome="OS",ttoutcome="time",timepoint=36,predictors="three.years.Survival.Probabilitynew",xstop=0.9,smooth=TRUE)
Figure3 : 3年DCA
绘制预测5年生存率的决策曲线
stdca(data=dev,outcome="OS",ttoutcome="time",timepoint=60,predictors="five.years.Survival.Probabilitynew",xstop=0.9,smooth=TRUE)
Figure4: 5年DCA
3 两个模型间生存资料DCA曲线比较
#两模型比较,以3年为例,进行示范
fit1<-coxph(Srv ~ A+ B+ C,data=dev)
fit2<-coxph(Srv ~ A+ B,data=dev)
dev$model1<-c(1- (summary(survfit(fit1,newdata=dev),times=36)$surv))
dev$model2<-c(1- (summary(survfit(fit2,newdata=dev),times=36)$surv))
stdca(data=dev,outcome="OS",ttoutcome="time",timepoint=36,predictors=c("model1"),smooth=TRUE)
stdca(data=dev,outcome="OS",ttoutcome="time",timepoint=36,predictors=c("model1","model2"),smooth=TRUE)
Figure5: 两个model在预测3年生存率时,临床净获益率比较,可见model1(A+B+C)优于model2(A+B),也凸显了变量C的加入,对于改善模型的临床应用,具有实际预测价值。
以上是小编有关生存资料决策曲线,在两个模型间的比较,一些经验和心得,
当然也可以加入更多的model3、model4等等,可以自行尝试,交流学习为主~
获取本文示范用数据和代码,以及stdca.R资源包,关注微信公众号,后台回复 DCA生存资料比较 即可
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ15101117,本站将立刻清除。