手把手的教程!一文小果教你学会临床决策曲线(DCA)!!
做肿瘤分析的小伙伴看过来啦,小伙伴平时做临床分析的时候,肯定都少不了对模型的构建,比如一些单因素的Cox回归分析,或者多因素的Cox回归分析,lasso等等,既然做了模型我们肯定少不了对模型的验证,验证的方式也有很多用比如对模型ROC曲线验证,再比如,临床特征比较多的情况下,小伙伴有的就会构建Nomogram模型,那么就会使用校准曲线去验证模型,以上我们介绍的都是对模型的本身去验证,小果在这里教大家一个新的曲线,可以去验证小伙伴构建的模型在临床上的适用性!就是决策曲线,小果这里先简单给大家介绍一下:
决策曲线分析法(decision curve analysis,DCA)是一种评估临床预测模型、诊断试验和分子标记物的简单方法。 我们在传统的诊断试验指标如:敏感性,特异性和ROC曲线下面积仅测量预测模型的诊断准确性,未能考虑特定模型的临床效用,而DCA的优势在于它将患者或决策者的偏好整合到分析中。这种理念的提出满足了临床决策的实际需要,在临床分析中的应用日益广泛。所以呢,小果这里较小伙伴绘制,用在你的文章中,大大的增长文章的丰富度!
公众号后台回复“111”领取代码,代码编号:231010
小果这里使用的是R包rmda包去绘制DCA,其实还有很多包比如ggDCA等,
我们先导入数据:
dcaData <- read.table("test2.txt",sep = "t",row.names = 1,check.names = F,stringsAsFactors = F,header = T)
小果这里使用的是小果平时整理的,小伙伴可以按照自己数据形式去设置,小果提醒一下,数据形式要设置成数字的形式,这里小果的临床特征在图中,也加入了一些基因放入模型中
library(rmda)#加载包
#data("dcaData")
#构架基础DCA模型
model <- decision_curve(event~stage + age + Mstage + Nstage + Grade+PCNA+MCM2+GINS2+time ,
family=binomial(link='logit'),
data = dcaData,
thresholds = seq(0, .4, by = .005),
bootstraps = 10)
在上述decision_curve()函数中, family=binomial(link=‘logit)是使用Logistic回归来拟合模型,默认值。threshold设置横坐标阈概率的范围,一般是0~1。但如果有某种具体情况,大家一致认为阈概率达到某个值以上,比如50%,则必须采取干预措施,那么0.5以上的研究就没什么意义了,可以设为0-0.5。by是指每隔多少距离计算一个数据点。bootsrap 重抽样次数
小果这里是按照自己的临床特征还有基因,小伙伴要按照自己情况来
#event~stage + age + Mstage + Nstage + Grade+PCNA+MCM2+GINS2+time
下面就是绘制DCA的基本图形了我们使用默认的参数
plot_decision_curve(model,
curve.names = "Clinical and genetic models",
col = c("#DC0000B2"),
confidence.intervals=F #不显示置信区间
)
颜色名称都可以自己调整
但是有的小伙伴想对比两个模型,总不能绘制两个图吧,小果下面就教大家绘制两个模型的DCA曲线
model.Clinic <- decision_curve(event~stage + age + Mstage + Nstage + Grade,
data = dcaData,
thresholds = seq(0, .4,by = .005),
bootstraps = 10)# stage + age + Mstage + Nstage + Grade变量建立模型
我们先在构建一个模型,这我们随便使用几个变量进行展示,小伙伴要按照自己的变量去设置
#绘制两个模型DCA曲线
plot_decision_curve(list(model, model.Clinic),
curve.names = c("Hub Gene model", "Clinic model"),
col = c("#3C5488B2", "#DC0000B2"),#设置线的颜色
lty = c(1,2), # 设置线形
lwd = c(3,3, 2, 2), #设置线宽,分别为baseling.model、full.model、All和None
confidence.intervals = F,
legend.position = "topright")
DCA曲线不止可以构建模型的验证,还可以绘制临床的影响曲线:
这里我们使用plot_clinical_impact()函数绘制baseline.model模型的临床影响曲线(clinical impact curve)。模型预测1 000人的风险分层,显示“损失:受益”坐标轴,显示置信区间。
plot_clinical_impact(model,
xlim = c(0, .4),
col = c("#3C5488B2", "#DC0000B2"))
如果小伙伴觉得两个模型的计算方式一样,我们可以使用交叉的验证去绘制DCA曲线
#交叉验证
full.model <- cv_decision_curve(event~stage + age + GINS2 + MCM2 + PCNA,
data = dcaData,
folds = 5,
thresholds = seq(0, .4, by = .01))
full.model_Hub <- decision_curve(event~stage + age + GINS2 + MCM2 + PCNA,
data = dcaData,
thresholds = seq(0, .4,by = .01),
confidence.intervals = 'none')
同样的我们先绘制两个模型,计算方式有改变,一个是cv_decision_curve,一个是decision_curve
plot_decision_curve(list(full.model_Hub, full.model),
curve.names = c('Apparent curve',
'Cross-validated curve'),
col = c("#3C5488B2", "#DC0000B2"),
lty = c(2,1),
lwd = c(3,2, 2, 1),
legend.position = ("topright"))
同样的代码绘制两个曲线
结果不一样,好了上述代码我们手把手教会大家如何绘制DCA图,还不快去试试?小伙伴要多多理解代码的意义,也要理解绘制图的含义,这样才能将绘制的图放入自己的文章中!
往期推荐