1、基本概念:决策曲线分析(DCA),一种评估预测模型和诊断模型的方法。横坐标:阈概率,超过阈值为阳性。纵坐标:净获益率(Standard Net Benefit):利减去弊之后。两条虛线,水平线表示所有样本都是阴性,所有人都没干预,净获益一直0。斜线代表所有样本都是阳性,所有人都接受了干预,净获益随阈值变化。若模型曲线在越接近两条曲线,越无意义,越靠近右上角表明越有价值。
2、R语言实现方法:
library(ggDCA)
#生成模拟生存资料
set.seed(1)
#创建一个包含50个观察值和2个预测变量的数据框
data <- data.frame(
x1 = rnorm(50),
x2 = sample(c("A", "B"), 50, replace = TRUE))
#创建随机截尾时间截点并将其加入数据集
data$time<-pmin(rexp(50,rate=0.05),10)
#创建失败指标,并以70%的概率对其进行剪除
data$status<-ifelse(runif(50)<0.7,0,1)
#将分类变量x2编码为数值变量
data$x2 <- as.numeric(factor(data$x2))
#将数据集分成训练集和测试集,其中70%用作训练集
train.idx <- sample(1:nrow(data), round(nrow(data) * 0.7))
train.data <- data[train.idx, ]
test.data <- data[-train.idx, ]
#构建Cox回归模型
library(survival)
cox_1<-coxph(Surv(time,status)~x1+x2,data)
cox_2<-coxph(Surv(time,status)~x1,data)
cox_3<-coxph(Surv(time,status)~x2,data)
#绘制多个模型DCA曲线
d1 <- dca(cox_1,cox_2,cox_3)
ggplot(d1)
#绘制不同时间点的DCA曲线
t <- c(3,6,9)
d <- dca(cox_1,cox_2,cox_3,
times = t)
#按照时间点分面
library(ggsci)
ggplot(d,linetype = F)+
scale_color_manual(values = c("red", "blue", "green","black","pink"))+
theme_bw()+
facet_wrap(~time)