二分类资料的决策曲线DCA绘制

41 篇文章 111 订阅
订阅专栏

本文首发于公众号:医学和生信笔记

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。

DCA,临床决策曲线分析,更佳贴近临床实际,对临床工作的开展比AUC/NRI/IDI等更具有指导意义。

我刚接触DCA的时候一个正经画DCA的R包都没有,现在R语言画DCA的方法实在是太多了,本来还想1篇推文讲完多种模型的,结果1篇说1种模型都够呛!

我这里只介绍了5种方法,还没有深入介绍推文就很长了。。后面再慢慢补充。大家看着喜欢哪个就用哪个吧。。

logistic模型的DCA

方法1

使用rmda包。

# 先安装R包
install.packages("rmda")

使用这个包自带的一个dcaData,作为演示,这个数据集一共500行,6列,其中Cancer是结果变量,1代表患病,0代表没病,其余列是预测变量。

library(rmda)
data("dcaData")

dim(dcaData) # 500,6
## [1] 500   6
head(dcaData)
## # A tibble: 6 × 6
##     Age Female Smokes Marker1  Marker2 Cancer
##   <int>  <dbl> <lgl>    <dbl>    <dbl>  <int>
## 1    33      1 FALSE    0.245  1.02         0
## 2    29      1 FALSE    0.943 -0.256        0
## 3    28      1 FALSE    0.774  0.332        0
## 4    27      0 FALSE    0.406 -0.00569      0
## 5    23      1 FALSE    0.508  0.208        0
## 6    35      1 FALSE    0.186  1.41         0
str(dcaData)
## tibble [500 × 6] (S3: tbl_df/tbl/data.frame)
##  $ Age    : int [1:500] 33 29 28 27 23 35 34 29 35 27 ...
##  $ Female : num [1:500] 1 1 1 0 1 1 1 1 1 1 ...
##  $ Smokes : logi [1:500] FALSE FALSE FALSE FALSE FALSE FALSE ...
##  $ Marker1: num [1:500] 0.245 0.943 0.774 0.406 0.508 ...
##  $ Marker2: num [1:500] 1.02108 -0.25576 0.33184 -0.00569 0.20753 ...
##  $ Cancer : int [1:500] 0 0 0 0 0 0 0 0 0 0 ...

使用起来非常简单,首先构建dca,然后画图:

set.seed(123)
 
fit1 <- decision_curve(Cancer ~ Age + Female + Smokes, # R语言里常见的公式类型
                       data = dcaData, 
                       study.design = "cohort"# 选择研究类型
                       bootstraps = 50 # 重抽样次数
                       )
## Note:  The data provided is used to both fit a prediction model and to estimate the respective decision curve. This may cause bias in decision curve estimates leading to over-confidence in model performance.
# 画图
plot_decision_curve(fit1, curve.names = "fit1",
                    cost.benefit.axis = F# 是否需要损失:获益比 轴
                    confidence.intervals = "none" # 不画可信区间
                    )
plot of chunk unnamed-chunk-3
plot of chunk unnamed-chunk-3

可以查看模型中的各个数据的值:

summary(fit1)

多个模型的多条DCA曲线一起绘制也是可以的:

# 新建立1个模型
set.seed(123)
fit2 <- decision_curve(Cancer~Age + Female + Smokes + Marker1 + Marker2,
              data = dcaData, 
              bootstraps = 50
              )
## Note:  The data provided is used to both fit a prediction model and to estimate the respective decision curve. This may cause bias in decision curve estimates leading to over-confidence in model performance.
# 画图只要把多个模型放在1个列表中即可,还可以进行很多自定义调整

plot_decision_curve(list(fit1, fit2),
                    curve.names = c("fit1""fit2"), 
                    xlim = c(01), # 可以设置x轴范围
                    legend.position = "topright"# 图例位置,
                    col = c("red","blue"), # 自定义颜色
                    confidence.intervals = "none",
                    lty = c(1,2), # 线型,注意顺序
                    lwd = c(3,2,2,1# 注意顺序,先是自己的2个模型,然后是All,然后是None
                    )
## Note: When multiple decision curves are plotted, decision curves for 'All' are calculated using the prevalence from the first DecisionCurve object in the list provided.
plot of chunk unnamed-chunk-5
plot of chunk unnamed-chunk-5

这个包还可以绘制临床影响曲线:

# 1次只能绘制1个模型
plot_clinical_impact(fit1,
                     population.size= 1000,
                     cost.benefit.axis = T,
                     n.cost.benefits= 8,
                     col=c('red','blue'),
                     confidence.intervals= T,
                     ylim=c(0,1000),
                     legend.position="topright")
plot of chunk unnamed-chunk-6
plot of chunk unnamed-chunk-6

这就是这个包画DCA的例子,效果还是不错的,自定义设置也很多,方便大家画出更好看的图。这个包还有很多其他功能,我们就不演示了,感兴趣的小伙伴可以自己探索哦。美中不足的是不能画生存资料的DCA。

方法2

使用这个网站[1]给出的dca.r文件绘制DCA,需要代码的直接去网站下载即可。

还是使用rmda包的数据,首先我们画一个简单的DCA,结果变量是Cancer,预测变量我们只用一个Smokes。使用起来非常简单,一句代码即可:

source("../000files/dca.r")

df <- as.data.frame(dcaData)

dca(data = df, # 指定数据集,必须是data.frame类型
    outcome="Cancer"# 指定结果变量
    predictors="Smokes"# 指定预测变量
    probability = F # Smokes这一列是0,1组成的二分类变量,不是概率,所以是F
    )
## [1] "Smokes converted to a probability with logistic regression. Due to linearity assumption, miscalibration may occur."
plot of chunk unnamed-chunk-7
plot of chunk unnamed-chunk-7

但是如果你的预测变量不是0,1这种,或者有多个的话,这个函数就比较蛋疼了,它需要你先把预测概率算出来,才能使用这个函数。

# 建立包含多个自变量的logistic模型
model <- glm(Cancer ~ Age + Female + Smokes + Marker1 + Marker2, 
            family=binomial(),
            data = df
            )

# 算出概率
df$prob <- predict(model, type="response")

# 绘制多个预测变量的DCA
dca(data=df, outcome="Cancer", predictors="prob"
    probability = T,
    xstop=0.35 # 控制x轴范围
    )
plot of chunk unnamed-chunk-8
plot of chunk unnamed-chunk-8

把多个模型画在一起的方式也有点奇怪,比如我们下面演示下3个模型画在一起,其中prob代表的是上面的model模型,Marker2代表的是只有一个预测变量Marker2的模型,Smokes代表只有一个预测变量Smokes的模型!

prob是概率,所以是T,SmokesMarker2不是概率,所以是F。

dca(data = df, outcome="Cancer"
    predictors=c("prob","Smokes","Marker2"), # 这是3个模型哦!
    probability = c(T,F,F# 和上面是对应的!
    )
plot of chunk unnamed-chunk-9
plot of chunk unnamed-chunk-9

方法3

上面的方法自定义选项也很少,不利于美化图形。但是呢,有一个优点就是可以直接返回画图数据,我们只要稍加修改,就能使用ggplot2画图了!而且由于直接给出了源码,我们可以试着自己修改,这样可发挥的地方就太多了!

下面几个将要介绍的方法,都是可以返回数据的,都支持使用ggplot2画图!

下面我们返回2个模型的画图数据,自己稍加整理,然后使用ggplot2画DCA,大家如果只有1个模型或者更多的模型,道理都是一样的哦,就是整成ggplot2需要的格式就行了!

# 返回模型1的画图数据
dca_data1 <- dca(data = df, 
    outcome="Cancer"
    predictors="prob"
    probability = T,
    graph = F
    )

然后提取数据,数据转换:

# 转换数据
library(tidyr)

dca_df1 <- dca_data1$net.benefit %>% # 画图数据就藏在这里!
  # 变成长数据,还不懂长宽数据转换这个超强操作的快去翻一下历史文章!
  pivot_longer(cols = -threshold, names_to = "type", values_to = "net_benefit"

# 看下数据结构
str(dca_df1)
## tibble [297 × 3] (S3: tbl_df/tbl/data.frame)
##  $ threshold  : num [1:297] 0.01 0.01 0.01 0.02 0.02 0.02 0.03 0.03 0.03 0.04 ...
##  $ type       : chr [1:297] "all" "none" "prob" "all" ...
##  $ net_benefit: num [1:297] 0.111 0 0.11 0.102 0 ...

画图就是非常简单了,先给大家看看只画1个模型的例子:

library(ggplot2)
library(ggsci)

# 以prob这个模型为例

ggplot(dca_df1, aes(threshold, net_benefit, color = type))+
  geom_line(size = 1.2)+
  scale_color_jama(name = "Model Type")+ # c("steelblue","firebrick","green4")
  scale_y_continuous(limits = c(-0.03,0.12),name = "Net Benefit")+ #限定y轴范围是重点,你可以去掉这句看看
  scale_x_continuous(limits = c(0,1),name = "Threshold Probility")+
  theme_bw(base_size = 16)+
  theme(legend.position = c(0.8,0.8),
        legend.background = element_blank()
        )
## Warning: Removed 85 row(s) containing missing values (geom_path).
plot of chunk unnamed-chunk-12
plot of chunk unnamed-chunk-12

看着是不是比上面的颜值都高些?是不是已经有了JAMA杂志的味道?

下面是2个模型画在一起的例子,和上面的思路一模一样!

# 构建模型2
mod2 <- glm(Cancer ~ Marker1 + Age + Smokes, df, family = binomial)
df$model2 <- predict(mod2, type="response")

# 返回两个模型的画图数据
dca12 <- dca(data = df, 
             outcome="Cancer"
             predictors=c("prob","model2") ,
             probability = c(T,T),
             graph = F
             )


# 合并数据,大家可以打开这2个数据看下,可以直接合并
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
dca_df_all <- dca12$net.benefit %>% 
  pivot_longer(cols = -threshold,names_to = "models",values_to = "net_benefit")

glimpse(dca_df_all)
## Rows: 396
## Columns: 3
## $ threshold   <dbl> 0.01, 0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03…
## $ models      <chr> "all", "none", "prob", "model2", "all", "none", "prob", "m…
## $ net_benefit <dbl> 0.11111111, 0.00000000, 0.10957576, 0.11111111, 0.10204082…

画图也是一样的简单:

ggplot(dca_df_all, aes(threshold, net_benefit, color = models))+
  #geom_line(size = 1.2)+
  stat_smooth(method = "loess", se = FALSE, formula = "y ~ x", span = 0.2)+ # 灵感来自于方法5!
  scale_color_jama(name = "Model Type")+
  scale_y_continuous(limits = c(-0.03,0.12),name = "Net Benefit")+
  scale_x_continuous(limits = c(0,1),name = "Threshold Probility")+
  theme_bw(base_size = 16)+
  theme(legend.position = c(0.8,0.75),
        legend.background = element_blank()
        )
plot of chunk unnamed-chunk-14
plot of chunk unnamed-chunk-14

挺好,还是不错的,能直接返回数据的都是可以高度自定义的,配合ggplot2,你可以尽情发挥。

在今天推荐的所有方法中,这个方法我是最喜欢的,虽然只有一段代码,连个正经的R包都没有,但是很明显这个方法的潜力最大!只要你会自己修改,那这个方法就是万能的,适合很多模型的DCA绘制!

方法4

使用ggDCA包,和上面的提取数据再画图有点像,不过它给你简化了,一句代码即可,省事儿!

# 安装R包,使用有问题的小伙伴请安装github版本
install.packages("ggDCA")

remotes::install_github('yikeshu0611/ggDCA')

还是使用rmda包里面自带的dcaData演示。

library(ggDCA)
## 
## Attaching package: 'ggDCA'
## The following object is masked _by_ '.GlobalEnv':
## 
##     dca
library(rmda)

# 构建模型
fit1 <- glm(Cancer ~ Age + Female + Smokes, data = dcaData, family = binomial())

fit2 <- glm(Cancer~Age + Female + Smokes + Marker1 + Marker2,
              data = dcaData,family = binomial())

画图,非常简洁!

library(ggplot2)

dca1 <- ggDCA::dca(fit1)

ggplot(dca1)
## Warning: Removed 18 row(s) containing missing values (geom_path).
plot of chunk unnamed-chunk-17
plot of chunk unnamed-chunk-17

大家可以使用ggplot2语法继续修改细节,在此之前先给大家看看这个dca1的数据结构。

str(dca1)
## Classes 'dca.lrm' and 'data.frame': 188 obs. of  5 variables:
##  $ thresholds: num  0.021 0.0228 0.0251 0.0272 0.0298 ...
##  $ TPR       : num  0.12 0.12 0.12 0.118 0.118 0.116 0.112 0.112 0.112 0.112 ...
##  $ FPR       : num  0.88 0.85 0.832 0.806 0.784 0.758 0.732 0.7 0.67 0.648 ...
##  $ NB        : num  0.1011 0.1001 0.0986 0.0955 0.0939 ...
##  $ model     : Factor w/ 3 levels "fit1","All","None": 1 1 1 1 1 1 1 1 1 1 ...

还自动算出了TPR和FPR,如果你想画ROC的话也是一句代码的事,咱就不演示了!就给大家演示下怎么自定义细节。

ggplot(dca1,linetype = 1,color = c("firebrick","steelblue","green4"))+
  theme(legend.position = c(0.8,0.75))
## Warning: Removed 18 row(s) containing missing values (geom_path).
plot of chunk unnamed-chunk-19
plot of chunk unnamed-chunk-19

多个模型画在一起也是非常简单!

# 2个模型画在一起
dca12 <- ggDCA::dca(fit1,fit2)

ggplot(dca12, linetype = 1,color = c("firebrick","steelblue","green4","tomato"))+
  theme(legend.position = c(0.8,0.75))
## Warning: Removed 131 row(s) containing missing values (geom_path).
plot of chunk unnamed-chunk-20
plot of chunk unnamed-chunk-20

简洁强大!

方法5

使用dcurves包。

# 安装,2选1
install.packages("dcurves")

# install.packages("devtools")
devtools::install_github("ddsjoberg/dcurves")

还是使用rmda包的dcaData数据进行演示。

dca.r的使用很像。废话不多说了,直接上 画2个模型DCA 的代码。

library(dcurves)
## 
## Attaching package: 'dcurves'
## The following object is masked _by_ '.GlobalEnv':
## 
##     dca
## The following object is masked from 'package:ggDCA':
## 
##     dca
library(rmda)
data("dcaData")

# 建立2个模型,算出概率
mod1 <- glm(Cancer ~ Marker1 + Age + Smokes, dcaData, family = binomial)
dcaData$model1 <- predict(mod1, type="response")

mod2 <- glm(Cancer ~ Marker1 + Marker2 + Age + Smokes + Female, 
            dcaData, family = binomial)
dcaData$model2 <- predict(mod2, type="response")
  
dcurves::dca(Cancer ~ model1 + model2,
             data = dcaData
             ) %>% 
  plot(smooth = T,
       show_ggplot_code = T # 显示ggplot2代码,方便大家自己调整
       )
## Assuming '1' is [Event] and '0' is [non-Event]
## # ggplot2 code to create DCA figure -------------------------------
## as_tibble(x) %>%
##   dplyr::filter(!is.na(net_benefit)) %>%
##   ggplot(aes(x = threshold, y = net_benefit, color = label)) +
##   stat_smooth(method = "loess", se = FALSE, formula = "y ~ x", 
##     span = 0.2) +
##   coord_cartesian(ylim = c(-0.012, 0.12)) +
##   scale_x_continuous(labels = scales::percent_format(accuracy = 1)) +
##   labs(x = "Threshold Probability", y = "Net Benefit", color = "") +
##   theme_bw()
plot of chunk unnamed-chunk-22
plot of chunk unnamed-chunk-22

大家看到ggplot2的代码了吧?自己调整就可以了。

今天就给大家简单介绍下logistic回归DCA的5种画法,其实还有很多,留着以后再介绍吧,实在是写不动了。。除了常见的logistic、cox,其实随机森林、决策树、lasso、xgboost、SVM等很多模型都是可以绘制DCA的,慢慢介绍。

本文首发于公众号:医学和生信笔记

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。

参考资料

[1]

dca.r: https://www.mskcc.org/departments/epidemiology-biostatistics/biostatistics/decision-curve-analysis

本文由 mdnice 多平台发布

R语言使用for循环绘制多个模型的DCA(Decision Curve Analysis)曲线并保存特定分辨率的DCA曲线的结果文件
data+scenario+science+insight
11-21 1125
R语言使用for循环绘制多个模型的DCA(Decision Curve Analysis)曲线并保存特定分辨率的DCA曲线的结果文件
DCA决策曲线的解读和代码实现
weixin_42960896的博客
06-07 1万+
0.决策曲线 决策曲线分析法(Decision Curve Analysis,DCA)是个与ROC曲线相提并论的相对比较新的模型评价方法。 关于它的原理,长篇大论的医学统计学知识解读实在不是我的强项,放上两个链接偷偷懒: https://www.plob.org/article/12455.html https://www.iikx.com/news/statistics/1622.html 如果想看文章,这篇里的fig7就是:https://www.ncbi.nlm.nih.gov/pmc/artic
Logistic构建预测模型:如何用R语言绘制DCA曲线?(附全套代码)
最新发布
qq_37610365的博客
08-15 648
共纳入了4,920名患有BM的NSCLC患者,并随机分为两个队列(7:3),包括训练队列(n=3,444)和验证队列(n=1,476)。全因ED和癌症特异性ED的独立预后因素包括年龄、性别、种族、肿瘤大小、组织学、T分期、N分期、分级、手术、放疗、化疗、骨转移和肝转移。:在非小细胞肺癌(NSCLC)的整个病程中,很多患者会出现预后差、死亡率高的脑转移(BM)。Logistic构建临床预测模型系列主要以一篇基于logistic回归构建预测模型的文章为例,从整理数据到构建预测模型,再到内部验证模型,
7. 预测模型评价——DCA曲线
Dr_long1996的博客
01-16 6798
ROC曲线分析,主要是评价模型的准确性,但无论如何选择,都会存在假阳性和/或假阴性的问题。如果疾病危害较小,尚无法治愈,则可以适当增加假阴性,避免假阳性;若疾病的危害大且晚发现预后差,则可以适当增加假阳性,避免假阴性。横坐标为阈概率(threshold probability),纵坐标为净获益( net benefit,NB)。DCA曲线中存在两种极端情况的曲线:1.横的曲线表示所有样本都是阴性,所有人都没有干预,净获益率为0.
生存资料Cox回归DCA曲线绘制(1)
weixin_49320263的博客
06-09 830
1、基本概念:决策曲线分析(DCA),一种评估预测模型和诊断模型的方法。横坐标:阈概率,超过阈值为阳性。纵坐标:净获益率(Standard Net Benefit):利减去弊之后。两条虛线,水平线表示所有样本都是阴性,所有人都没干预,净获益一直0。斜线代表所有样本都是阳性,所有人都接受了干预,净获益随阈值变化。若模型曲线在越接近两条曲线,越无意义,越靠近右上角表明越有价值。
绘制决策曲线decision curve analysis(DCA)
sunflower_sara的机器学习园地
09-29 2万+
Decision curve analysis-DCA 论文 《Decision Curve Analysis: A Novel Method for Evaluating Prediction Models》 y轴是计算出的收益 x轴是取不同的概率Pt的值 通过不断变换Pt阈值,计算对应的收益值 横直线和点虚线分别为全手术or全不手术的时候对应的收益。如果绘制的DCA曲线高于这两条曲线...
临床预测模型:DCA曲线决策曲线分析)
xzxg001的博客
04-10 1万+
在DCA图中,通常会包括几条参考线作为比较的基准,最常见的有:“不采取任何行动”(Treat None)的净收益线:假设没有患者被治疗,此时的净收益是零。模型的净收益曲线如果在较宽的阈值概率范围内保持较高的净收益,且变化平稳,可能表明该模型具有较好的泛化能力和一致的性能。4)曲线的交叉点:如果两个模型的决策曲线在某些阈值概率下交叉,这表明不同模型可能在不同的阈值概率范围内各有优势。1)查找净收益最高的曲线:在特定的阈值概率下,净收益最高的模型曲线表示该模型在该阈值下为临床决策提供了最大的益处。
Topic 15. 临床预测模型之决策曲线 (DCA)
weixin_41368414的博客
03-24 1万+
全网最全决策曲线绘制方法 DCA
生存资料决策曲线分析DCA
医学和生信笔记的博客
09-08 5735
本文首发于公众号:医学和生信笔记 “ 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。 前面介绍了logistic回归的DCA的5种绘制方法,今天学习下cox回归的DCA绘制方法。也是有多种方法可以实现,但我比较推荐能返回数据,用ggplot2自己画的那种。 生存资料的DCA方法1方法2方法3方法4 生存资料的DCA 方法1 使用dcurves包,使用的数据集是包自带的df_surv数据集,一
决策曲线分析DCA(Decision curve analysis)详解
qq_59922536的博客
07-03 6286
一个预测模型的输出通常为介于0到1之间的一个值(pi),根据事前确定的阈值概率(cutoff value, probability threshold, pt),当pi > pt时,判断为阳性;净获益是在一系列阈值概率范围内计算的,阈值概率定义为需要进一步干预的疾病的最小概率,净获益=灵敏度×患病率-(1 -特异性)×(1 -患病率)× w,其中w是阈值概率的比值。对于给出疾病预测概率p的预测模型,通过将测试阳性定义为p ≥ pt来计算给定阈值概率pt下的灵敏度和特异性[1]。暂时不梳理,有时间再写啦!
R语言自定义编程进行决策曲线分析DCA曲线绘制(Decision Curve Analysis)
data+scenario+science+insight
08-11 9556
R语言自定义编程进行决策曲线分析DCA曲线绘制(Decision Curve Analysis) 我们可能使用别的语言获得了机器学习模型以及对应的预测概率和标签,我们想直接使用这些信息进行DCA曲线绘制,可是R包中默认提供的方案都是打包的方法: 主要R函数及工具: decision_curve_analysis plot_decision_curve plot_clinical_impact 我想要自定义怎么办???? 我这里有一个方案: # 输出原始数据并绘制DCA曲线(Deci.
DCA练习文件
12-28
DCA的分析数据源码分析。希望喜欢的朋友支持
R数据分析:临床预测模型实操,校准曲线和DCA曲线做法示例
Codewar的博客
07-14 1775
之前给大家写过好几篇很详细的临床预测模型的原理解析,本文接着之前的文章,继续写做法,首先依然是找到一篇参照论文,今天我们的示例文章是一篇来自美国心脏学会杂志的文章:原文给大家贴在上面,我们要做的就是对文章统计部分进行复现。整篇文章就是开发了一个用于预测癌症患者的3个月死亡率风险诺模图,考虑了什么变量,用的是什么人群队列,本文不关心,感兴趣的同学自行去阅读原文哈,本文着重写宏观做法,作者具体使用的模型是Step-wise logistic regression,文章中有报告各个变量的OR和整体模型的conco
(DCA)Decision Curve Analysis画图及意义
data+scenario+science+insight
04-12 8012
问题1:已经有了ROC和AUC了为什么还还需要DCA(Decision Curve Analysis)分析,绘制DCA曲线? 问题2:DCA曲线如何解读? 先上图: 纵轴:计算出的收益 横轴:取不同的概率(Pt)的值 接着,通过不断变换Pt阈值,计算对应的收益值。横直线和点虚线分别为实施某种操作与完全不实施某种操作的时候所对应的收益。 如果绘制的DCA曲线高于这两条曲线,则模型是有价值的。 也有学者举了抗凝血的DCA的例子: 这是一个来自Lancet的例子,研究者为了评价房颤患者口服抗
决策曲线拆解分析兼随机森林DCA绘制
skyskytotop的博客
03-19 1758
对照线性模型的情况来看,应该使用全部数据集来绘制DCA曲线,那麽我们就要使用训练出的模型来预测整个数据集的概率,这会产生overfit的疑虑,所以目前觉得使用交叉验证的方法来获得整个数据集的预测概率是比较妥当的。目前为止,官方只给出了线性模型(逻辑回归和COX)的DCA绘制方法,这一点是有点奇怪的,可能有些方面不适合向随机森林这样的模型(可能是其中的某些关键元素只能用线性模型来解释),但是从技术层面来看,各种模型都可以制作DCA曲线。以下是模型曲线净收益的计算公式。可以看到两者是略有区别的。
R语言多条决策曲线分析DCA(Decision Curve Analysis)曲线可视化在同一图像中、自定义保存图像的分辨率(指定图像的宽度、高度参数)
statistics+insight+vista+power
04-24 1437
R语言多条决策曲线分析DCA(Decision Curve Analysis)曲线可视化在同一图像中、自定义保存图像的分辨率(指定图像的宽度、高度参数)
决策曲线 Decision Curve
热门推荐
FanJin的博客
04-01 2万+
本文转自:决策曲线分析法(Decision Curve Analysis,DCA) 简介 评价一种诊断方法是否好用,一般是作ROC曲线,计算AUC。但是,ROC只是从该方法的特异性和敏感性考虑,追求的是准确。而临床上,准确就足够了吗?患者就一定受益吗? 比如我通过某个生物标志物预测患者是否患了某病,无论选取哪个值为临界值,都会遇到假阳性和假阴性的可能,有时候避免假阳性受益更大,有时候则更希望...
如何用R的绘制高颜值的列线图、校准曲线和DCA曲线
宽嘴鱼汤的博客
01-25 4677
做出高颜值的列线图、校准曲线,同时关于图的图例“legend()”函数、“plots() ”函数在这个绘图中的作用稍作演示,希望做出更好看、更直观的图片
用ggplot2美化临床决策曲线
一口吃两口饭的博客
07-26 2799
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、提取模型数据二、使用步骤1.从模型中提取模型的数据2.提取All和None数据3.画图3.汇总代码总结 前言 今天小伙伴要我帮他改一个临床决策曲线图,我一看,这图好像有点不那么好看,画图函数是rmda包的plot_decision_curve(),我一看帮助文档,可以传入plot()函数的参数,但是我对plot函数又不太熟悉,倒腾了半天也没美化好(菜是原罪),本着不懂就放弃的原则,我决定用ggplot2去画。 下图一张数原
R语言绘制DCA决策曲线
06-06
您好!感谢您的提问。以下是使用R语言绘制DCA决策曲线的基本步骤: 1. 安装"DCA"包:在R控制台中输入以下命令:install.packages("DCA") 2. 载入包:在R控制台中输入以下命令:library(DCA) 3. 载入数据:假设您已经有了数据集,将其载入R环境中。 4. 进行DCA分析:使用DCA()函数进行DCA分析,如下所示: ``` dca <- DCA(data) ``` 其中,data为您的数据集。 5. 绘制决策曲线:使用plot()函数绘制决策曲线,如下所示: ``` plot(dca$DCA, type = "l", xlab = "Eigenvalue", ylab = "Cumulative variance") ``` 其中,dca$DCA为DCA分析的结果,type = "l"表示绘制折线图,xlab和ylab分别为x轴和y轴标签。 希望这可以帮助您完成问题的解答!
写文章

热门文章

  • 超详细的R语言热图之complexheatmap系列(1) 25582
  • logistic回归列线图(nomogram)的多种绘制方法 18521
  • R语言聚类分析 15191
  • R语言logistic回归的细节解读 14927
  • 使用pivot_longer和pivot_wider进行长宽数据转换 13704

分类专栏

  • 临床预测模型 41篇
  • R语言机器学习 26篇
  • 生信数据挖掘 54篇
  • 医学统计学 64篇
  • 数据分析 21篇
  • 数据可视化 26篇

最新评论

  • 8种免疫浸润分析1行代码实现

    2401_83354412: ssgsea28

  • easyTCGA:让初学者也能感受“征服“TCGA的喜悦

    cyhxhwsy: 请问GEO数据库的counts数据做差异分析的时候可以用这个包嘛

  • 8种免疫浸润分析1行代码实现

    2401_86295058: ssgsea28

  • 批次效应去除之combat和removebatcheffect

    fairy366: 去批次是针对样本合并吗,如果是同个样本不同特征合并需要去批次吗?

  • 新版TCGA表达矩阵1行代码提取2.0版

    LaLallaLaLasd: 大佬,脚本文件在哪呀,QQ群里好像也没看到

大家在看

  • 计算机毕设项目:016 基于python的教师培训反馈系统(免费领取项目源码+数据库+文档)python开发语言,django技术框架,计算机毕设程序定制 905
  • 毕业设计时发现原来规划的功能不能全部完成,这时该怎么办?
  • 求地址运算符(&)和间接访问运算符(*)的区别 539
  • NVIDIA 发布适用于网络安全的 NIM Blueprint 1289
  • Linux动态Web服务器(Tomcat)

最新文章

  • 决策曲线添加彩色条带
  • time-dependent平滑ROC曲线
  • tidymodels超参数设置
2024年11篇
2023年98篇
2022年127篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家商场橱窗美陈摆设福建商场装饰玻璃钢卡通雕塑宿州卡通玻璃钢雕塑生产厂鹰潭定制玻璃钢雕塑多少钱杭州工业玻璃钢雕塑摆件玻璃钢雕塑清洗不干净江西玻璃钢雕塑凳子定制玻璃钢人物雕塑出厂价格美人鱼玻璃钢雕塑孝感校园玻璃钢雕塑厂家清远玻璃钢动物雕塑怎么样景洪市玻璃钢雕塑价格表梧州商场美陈雕塑天津抽象玻璃钢雕塑优势洛阳市玻璃钢雕塑定制玄武十一商场美陈南宁玻璃钢雕塑厂家陕西玻璃钢花盆加工杭州玻璃钢雕塑服务热线信阳玻璃钢雕塑定制价格玻璃钢艺术雕塑单价梅州玻璃钢造型雕塑吉林动物玻璃钢雕塑市场重庆户内玻璃钢雕塑价位东沙群岛玻璃钢座椅雕塑价格赣州玻璃钢雕塑定制六安卡通玻璃钢雕塑厂泸州玻璃钢园林雕塑中卫玻璃钢雕塑厂夏邑玻璃钢雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化