绘制决策曲线decision curve analysis(DCA)

Decision curve analysis-DCA 论文

《Decision Curve Analysis: A Novel Method for Evaluating Prediction Models》

y轴是计算出的收益

x轴是取不同的概率Pt的值

通过不断变换Pt阈值,计算对应的收益值

横直线和点虚线分别为全手术or全不手术的时候对应的收益。如果绘制的DCA曲线高于这两条曲线,则模型是有价值的

 

绘制步骤

1. Chose a value for pt.
2. Calculate the number of true- and false-positive results using pt as the cut-point for determining a positive or negative result.
3. Calculate the net benefit of the prediction model.
4. Vary pt over an appropriate range and repeat steps 2 and 3.
5. Plot net benefit on the y-axis against pt on the x-axis.
6. Repeat steps 1 through 5 for each model under consideration.
7. Repeat steps 1 through 5 for the strategy of assuming all patients are positive.
8. Draw a straight line parallel to the x-axis at y = 0 representing the net benefit associated with the strategy of assuming that all patients are negative.

 

理想条件:

例子:

黑实线比较好 

 

 

R中安装决策曲线工具包

因为R版本问题decisionCurve工具包已经不能直接安装

原网页百度快照:

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631047973545438014688c8d443f93db5f93130b015a23b4eb3a6043558a96293040b23f0bbbab77296a5f51f0db8cdf5786e7c47f659f27432a5ad91f069644ef9d4965d620e118bafe40b4efa72593df84848e0f12910e596d8180da1d40509d&p=8b2a971286cc4afd18fbd13416&newp=8b2a975986cc4afa01b9e62c5f53d83348029f3460c8914212d4984e98700d1a2a22b4fb66794d58dcc17b6c04ab4856eaf630723d072ab09ec88b4fc9fdff6978ca28632c4a9a&user=baidu&fm=sc&query=R+pacage+DecisionCurve&qid=d334a02600075234&p1=3

采用github安装

github说明页面 https://github.com/mdbrown/rmda

教程 https://mdbrown.github.io/rmda/

非常详细的步骤教学 还有画出来的图的展示

 

在r环境中输入如下语句进行安装

install.packages("rmda")

install.packages("devtools")

library(devtools) 

install_github("mdbrown/DecisionCurve")

 

查看帮助文档

help(decisionCurve)

example(decisionCurve)

 

Plot the net benefit curves from a decision_curve object or many decision_curve objects

Description

Plot the net benefit curves from a decision_curve object or many decision_curve objects

Usage

plot_decision_curve(x, curve.names, cost.benefit.axis = TRUE,
  n.cost.benefits = 6, cost.benefits, standardize = TRUE,
  confidence.intervals, col, lty, lwd = 2, xlim, ylim, xlab, ylab,
  cost.benefit.xlab, legend.position = c("topright", "right", "bottomright",
  "bottom", "bottomleft", "left", "topleft", "top", "none"), ...)
Arguments

x    
'decision_curve' object to plot or a list of 'decision_curve' objects. Assumes output from function 'decision_curve'
curve.names    
vector of names to use when plotting legends.
cost.benefit.axis    
logical (default TRUE) indicating whether to print an additional x-axis showing relative cost:benefit ratios in addition to risk thresholds.
n.cost.benefits    
number of cost:benefit ratios to print if cost.benefit.axis = TRUE (default n.cost.benefit = 6).
cost.benefits    
Character vector of the form c("c1:b1", "c2:b2", ..., "cn:bn") with integers ci, bi corresponding to specific cost:benefit ratios to print. Default allows the function to calculate these automatically.
standardize    
logical (default TRUE) indicating whether to use the standardized net benefit (NB/disease prevalence) or not.
confidence.intervals    
logical indicating whether to plot confidence intervals.
col    
vector of color names to be used in plotting corresponding to the 'predictors' given. Default colors will be chosen from rainbow(..., v = .8). See details for more information on plot parameters.
lty    
vector of linetypes.
lwd    
vector of linewidths.
xlim    
vector giving c(min, max) of x-axis. Defaults to c(min(thresholds), max(thresholds)).
ylim    
vector giving c(min, max) of y-axis.
xlab    
label of main x-axis.
ylab    
label of y-axis.
cost.benefit.xlab    
label of cost:benefit ratio axis.
legend.position    
character vector giving position of legend. Options are "topright" (default), "right", "bottomright", "bottom", "bottomleft", "left", "topleft", "top", or "none".
...    
other options directly send to plot()
Details

When k decision_curve objects are input, the first k elements of col, lty, lwd ... correspond to the curves provided. The next two elements (..., k+1, k+2) correspond to the attributes of the 'all' and 'none' curves. See below for an example.

Examples

data(dcaData)
set.seed(123)
baseline.model <- decision_curve(Cancer~Age + Female + Smokes,
                                data = dcaData,
                                thresholds = seq(0, .4, by = .005),
                                bootstraps = 10)

#plot using the defaults
plot_decision_curve(baseline.model,  curve.names = "baseline model")

set.seed(123)
full.model <- decision_curve(Cancer~Age + Female + Smokes + Marker1 + Marker2,
                            data = dcaData,
                            thresholds = seq(0, .4, by = .005),
                            bootstraps = 10)

# for lwd, the first two positions correspond to the decision curves, then 'all' and 'none'
plot_decision_curve( list(baseline.model, full.model),
                    curve.names = c("Baseline model", "Full model"),
                    col = c("blue", "red"),
                    lty = c(1,2),
                    lwd = c(3,2, 2, 1),
                    legend.position = "bottomright")


plot_decision_curve( list(baseline.model, full.model),
                    curve.names = c("Baseline model", "Full model"),
                    col = c("blue", "red"),
                    confidence.intervals = FALSE,  #remove confidence intervals
                    cost.benefit.axis = FALSE, #remove cost benefit axis
                    legend.position = "none") #remove the legend

#Set specific cost:benefit ratios.

plot_decision_curve( list(baseline.model, full.model),
                    curve.names = c("Baseline model", "Full model"),
                    col = c("blue", "red"),
                    cost.benefits = c("1:1000", "1:4", "1:9", "2:3", "1:3"),
                    legend.position = "bottomright")

#Plot net benefit instead of standardize net benefit.

plot_decision_curve( list(baseline.model, full.model),
                    curve.names = c("Baseline model", "Full model"),
                    col = c("blue", "red"),
                    ylim = c(-0.05, 0.15), #set ylim
                    lty = c(2,1),
                    standardize = FALSE, #plot Net benefit instead of standardized net benefit
                   legend.position = "topright")

 

  • 6
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Decision curve analysis(DCA曲线是一种可用于评估基于预测模型的决策效果的分析工具。它可以帮助我们确定在不同阈值下,采取某种决策对于患者治疗的益处和风险。下面是对DCA曲线结果图进行分析的一般步骤: 步骤1:查看横坐标和纵坐标 DCA曲线的横坐标是不同阈值(阈值通常表示预测模型输出的概率,例如预测患者是否患病的概率)。纵坐标是净益(net benefit),可以理解为在特定阈值下采用某种决策所得到的益处减去不采取任何决策的益处。净益等于益处减去不良后果的损失。 步骤2:观察理想的决策曲线 理想的决策曲线是指具有最大净益的阈值。因此,我们希望在某个阈值上,决策曲线的净益达到最大值。这种决策曲线代表了在这个阈值下采取某种决策时,相对于不采取任何决策获得更多益处的情况。 步骤3:比较不同决策曲线 DCA曲线提供了不同决策策略的净益随阈值的变化情况。通过比较不同决策曲线的整体趋势以及它们与理想决策曲线之间的差异,我们可以确定在特定阈值下,哪种决策策略的净益更高。 步骤4:评估决策的实用性 除了比较净益差异,我们还可以通过观察不同决策曲线的斜率来评估决策的实用性。较陡的曲线表示决策在一定阈值范围内相对较优,而较平缓的曲线则表示决策的实用性相对较低。 总之,分析DCA曲线结果图需要考虑横纵坐标、理想决策曲线、不同决策曲线之间的净益差异以及决策的实用性。这些分析可以帮助我们确定最佳的决策阈值,并为临床实践提供有用的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值