决策曲线 DCA 学习

roc回顾ROC及曲线面积汇总学习-CSDN博客

原理

P:给真阳性患者施加干预的受益值(比如用某生化指标预测某患者有癌症,实际也有,予活检,达到了确诊的目的);

L:给假阳性患者施加干预的损失值(比如预测有癌症,给做了活检,原来只是个增生,白白受了一刀);

Pi:患者i有癌症的概率,当Pi > Pt时为阳性,给予干预。

所以较为合理的干预的时机是,当且仅当Pi × P >(1 – Pi) × L,即预期的受益高于预期的损失。推导一下可得,Pi > L / ( P + L )即为合理的干预时机,于是把L / ( P + L )定义为Pi的阈值,即Pt。

但对二元的预测指标来说,如果结果是阳性,则强制Pi=1,阴性则Pi = 0。这样,二元和其他类型的指标就有了可比性。

然后我们还可用这些参数来定义真阳性(A)、假阳性(B)、假阴性(C)、真阴性(D),即:

A:Pi ≥ Pt,实际患病;

B:Pi ≥ Pt,实际不患病;

C:Pi < Pt,实际患病;

D:Pi < Pt,实际不患病。

我们有一个随机抽样的样本,A、B、C、D分别为这四类个体在样本中的比例,则A+B+C+D = 1。那么,患病率(π)就是A + C了。
原文链接:https://blog.csdn.net/weixin_41368414/article/details/123723467


实操

rm(list = ls())
library(rmda)
data("dcaData")

决策曲线 DCA 学习_第1张图片

set.seed(123)
fit1 <- decision_curve(Cancer ~ Age + Female + Smokes, # R语言里常见的公式类型
                       data = dcaData, 
                       study.design = "cohort", # 选择研究类型
                       bootstraps = 50 # 重抽样次数
)

# 画图
plot_decision_curve(fit1, curve.names = "fit1",
                    cost.benefit.axis = F, # 是否需要损失:获益比 轴
                    confidence.intervals = "none" # 不画可信区间
)

决策曲线 DCA 学习_第2张图片

新建模型:绘制多个模型

# 新建立1个模型
set.seed(123)
fit2 <- decision_curve(Cancer~Age + Female + Smokes + Marker1 + Marker2,
                       data = dcaData, 
                       bootstraps = 50
)
# 画图只要把多个模型放在1个列表中即可,还可以进行很多自定义调整

plot_decision_curve(list(fit1, fit2),
                    curve.names = c("fit1", "fit2"), 
                    xlim = c(0, 1), # 可以设置x轴范围
                    legend.position = "topright", # 图例位置,
                    col = c("red","blue"), # 自定义颜色
                    confidence.intervals = "none",
                    lty = c(1,2), # 线型,注意顺序
                    lwd = c(3,2,2,1) # 注意顺序,先是自己的2个模型,然后是All,然后是None
)

决策曲线 DCA 学习_第3张图片

参考:

1:Topic 15. 临床预测模型之决策曲线 (DCA)_dca曲线-CSDN博客

2:二分类资料的决策曲线DCA绘制_dca曲线,r语言-CSDN博客

你可能感兴趣的:(学习)