乳腺癌是女性常见的恶性肿瘤之一,对女性的身体健康和生命安全产生了重要影响。早期诊断和风险评估可以帮助医生和患者制定更好的治疗方案,并提高治愈率和生存率。因此,乳腺癌风险评估模型的研究和应用变得越来越重要。
在乳腺癌风险评估的研究中,评估模型的多样性和鲁棒性是一个重要的问题。目前存在的评估模型往往具有不同的结构和参数设置,可能会导致预测结果的差异。为了解决这个问题,本文引入多模型DCA曲线作为评估模型多样性和鲁棒性的方法。
在本文中,我们将介绍乳腺癌风险评估模型的现状和挑战,解释多模型DCA曲线的概念和应用,并展示多模型DCA曲线作为评估乳腺癌风险评估模型多样性和鲁棒性的方法的实际效果。通过本文的阐述,我们希望为乳腺癌风险评估模型的发展和应用提供一些新的思路和方法。
目前使用的乳腺癌风险评估模型主要包括以下几种:
「DCA曲线(Decision Curve Analysis)」 是一种评估预测模型临床应用价值的可视化工具。DCA曲线基于医学决策理论,将预测模型的预测结果与实际临床决策进行比较,评估模型在不同阈值下的准确性和利益。DCA曲线的横轴表示阈值范围,纵轴表示净利益(即真阳性率减去假阳性率),曲线上的点表示该阈值下模型的净利益。
多模型DCA曲线指的是将多个预测模型的DCA曲线绘制在同一图表中,用于比较不同模型之间的优劣和多样性。通过比较不同模型在不同阈值下的净利益,可以评估模型的多样性和鲁棒性。多模型DCA曲线的绘制需要针对不同模型分别计算其预测结果、净利益、敏感性和特异性等参数。
「多模型DCA曲线的应用场景包括:」
「多模型DCA曲线的优势包括:」
library(survival)
head(gbsg)
结果展示:
???pid?age?meno?size?grade?nodes?pgr?er?hormon?rfstime?status
1??132??49????0???18?????2?????2???0??0??????0????1838??????0
2?1575??55????1???20?????3????16???0??0??????0?????403??????1
3?1140??56????1???40?????3?????3???0??0??????0????1603??????0
4??769??45????0???25?????3?????1???0??4??????0?????177??????0
5??130??65????1???30?????2?????5???0?36??????1????1855??????0
6?1642??48????0???52?????2????11???0??0??????0?????842??????1
>?str(gbsg)
'data.frame':???686?obs.?of??10?variables:
?$?age????:?int??49?55?56?45?65?48?48?37?67?45?...
?$?meno???:?int??0?1?1?0?1?0?0?0?1?0?...
?$?size???:?int??18?20?40?25?30?52?21?20?20?30?...
?$?grade??:?int??2?3?3?3?2?2?3?2?2?2?...
?$?nodes??:?int??2?16?3?1?5?11?8?9?1?1?...
?$?pgr????:?int??0?0?0?0?0?0?0?0?0?0?...
?$?er?????:?int??0?0?0?4?36?0?0?0?0?0?...
?$?hormon?:?int??0?0?0?0?1?0?0?1?1?0?...
?$?rfstime:?int??1838?403?1603?177?1855?842?293?42?564?1093?...
?$?status?:?Factor?w/?2?levels?"0","1":?1?2?1?1?1?2?2?1?2?2?...
age:患者年龄
meno:更年期状态(0表示未更年期,1表示已更年期)
size:肿瘤大小
grade:肿瘤分级
nodes:受累淋巴结数量
pgr:孕激素受体表达水平
er:雌激素受体表达水平
hormon:激素治疗(0表示否,1表示是)
rfstime:复发或死亡时间(以天为单位)
status:事件状态(0表示被截尾,1表示事件发生)
#?划分训练集和测试集
set.seed(123)
data?<-?gbsg[,c(-1)]
data$status?<-?as.factor(data$status)
install.packages("tidymodels")
install.packages("discrim")
library(tidymodels)
library(discrim)
#?设置recipe?
rec?<-?recipe(status~.,data)???
xgb_mod?<-?boost_tree()?%>%???????????
??set_engine("xgboost")?%>%???????????
??set_mode("classification")?
???????????
dt_mod?<-?decision_tree()?%>%???????????
??set_engine("rpart")?%>%???????????
??set_mode("classification")?
???????????
logistic_mod?<-??????????
??logistic_reg()?%>%??????????
??set_engine('glm')??????????
??????????
nnet_mod?<-??????????
??mlp()?%>%??????????
??set_engine('nnet')?%>%??????????
??set_mode('classification')??????????
??????
rf_mod?<-??????????
??rand_forest()?%>%??????????
??set_engine('ranger')?%>%??????????
??set_mode('classification')??????????
??????????
svm_mod?<-??????????
??svm_rbf()?%>%??????????
??set_engine('kernlab')?%>%??????????
??set_mode('classification')
wf?<-?workflow_set(preproc=list(rec),??????????
???????????????????models=list(xgb=xgb_mod,?
????????????????????????dt=dt_mod,??????????
????????????????????????log=?logistic_mod,?
????????????????????????nnet=nnet_mod,??????????
????????????????????????rf=rf_mod,??????????
????????????????????????svm=svm_mod))
folds?<-?bootstraps(data,10)??????????
ctr?<-?control_resamples(save_pred?=?TRUE)??
wf_res?<-?wf?%>%workflow_map("fit_resamples",resamples=folds,??control=ctr)
绘制的DCA曲线依次为XGBoost、decision_tree、Logistic、nnet、randomForest和SVM。
library(dcurves)??????????
p?<-?collect_predictions(wf_res)?%>%???????????
??group_by(wflow_id)?%>%??????????
??group_map(~dca(data=.x,status~.pred_1))
#?XGBoost
p[[1]]
#?decision_tree
p[[2]]
这里只贴XGBoost和decision_tree,对应的指标是12,剩下的就是3456了,如果想看的话可以自己打印出来。
dca_data?<-?collect_predictions(wf_res)?%>%?????
??group_by(model)?%>%???????????
??select(status,.pred_1)?%>%???????????
??tidyr::pivot_wider(??????????
????names_from?=?model,??????????
????values_from?=?.pred_1)?%>%???????????
??unnest()
??
dca(data?=?dca_data,status~.)?%>%??????????
??as_tibble()?%>%???????????
??ggplot(aes(x?=?threshold,???????????
?????????????y?=?net_benefit,???????????
?????????????color?=?label))?+??????????
??geom_line(lwd=1)?+??????????
??coord_cartesian(ylim?=?c(0,?0.3))?+??????????
??scale_x_continuous(??????????
????labels?=?scales::percent_format(accuracy?=?1))?+??????????
??labs(x?=?"Threshold?Probability",???????????
???????y?=?"Net?Benefit",?color?=?"")?+??????????
??theme_bw()+??????????
??theme(legend.position?=?c(0.85,0.6))
综上所述,多模型DCA曲线是一种评估乳腺癌风险评估模型多样性和鲁棒性的有效方法。通过比较不同模型在不同阈值下的净利益,可以评估模型的优劣和多样性,并选择最佳模型用于临床应用。同时,多模型DCA曲线还可以用于评估模型改进和研究模型适用性等方面,具有较强的实用性和广泛的应用前景。
如果想知道如何解读DCA曲线,请关注+点赞+私信我。
*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」