1. 首页 > 知识问答

决策曲线分析法(比ROC曲线还好的模型评估方法?)

在以往的推文中,我们已经探索了C统计量(即,AUC,ROC曲线下的面积),它评估预测模型的区分性。但是它足够好吗?答案是:没有最好的,只有更好的。例如,无论选择哪个值作为分界值,通过连续指标预测患者是否生病都有一定的假阳性和假阴性概率。由于这两种情况都无法避免,我们将从构建预测模型的最初动机出发,试图找到一个预测最大净收益的模型。但是,我们如何计算这一预测的净效益呢?

2006年,安德鲁·维克斯(Andrew Vickers)等人为纪念斯隆-凯特琳癌症中心工作的世卫组织发明了一种新的计算方法,称为决策分析曲线(DCA)。与二次大战时的ROC分析相比,DCA显然“稚嫩”,但“青出于蓝而胜于蓝”,许多顶级医学期刊,如Ann Intern Med、JAMA、BMJ、J Clin Oncol等,都鼓励使用DCA决策曲线分析法。那么如何绘制吸引人的决策分析曲线呢?

 

确实,统计学家总是首先想到使用R来实现新的算法。他们首先公布了基于R语言的DCA算法,然后是基于SAA和STATA的DCA算法。Kerr等人还创建了一个名为DecisionCurve的R包用于实现决策曲线方法,它无法在CRAN官网下载。原始DecisionCurve包的所有功能都已集成到rmda包中。因此,当您需要绘制决策曲线时,您只需在R中安装rmda包。在互联网上最新版本的R软件中安装DecisionCurve包的教程是不恰当的。正确的方法是直接安装rmda包。下面我们将重点介绍DCA曲线的绘制方法,不会解释太多复杂的统计原理。

 

案例研究

 

  • 【案例1】

 

我们使用的数据是NHLBI(国家心肺和血液研究所)著名的弗雷明翰心脏研究数据集的子集,包含4699个样本和10个变量。自变量包括性别(Sex)、SBP、舒张压(DBP)、血清胆固醇(SCL)、年龄(Age)、体重指数(BMI)等,因变量为冠心病相关死亡事件(CHDFATE)。在这种情况下,因变量是一个二类变量,在随访期间死亡为1,没有死亡为0。数据结构如下表所示。我们整理并将其命名为‘Framingham.csv’,可以找客服领取。

 

我们将使用数据集CHD相关死亡事件(CHDFATE)为结果变量建立两个Logistic回归模型来演示DCA曲线方法。一种是以SCL为预测因子的简单Logistic回归模型(simple),其结果为冠心病相关死亡(结果);另一种是多因素Logistic回归模型(complex),其中性别、年龄、BMI、SCL、SBP为预测因素,舒张压和冠心病相关死亡事件为预后(结果)。

 

加载rmda包(需要提前安装),然后加载数据。

 

构建DCA模型。我们首先使用Decision_curve()函数构建一个简单的模型,名为simple。

 

R代码解读

 

在Decision_Curve()函数中,family=binomial(link=‘logit’)使用Logistic回归来拟合模型。阈值设置横坐标阈值概率的阈值,一般是0-1;但如果有特定情况,大家都认为阈值概率高于某个值,比如40%,那么必须采取干预措施,这样0.4之后的研究就没有意义了,可以设为0-0.4。By是每隔一段距离计算一次数据点。“Study.design”可以设置研究的类型,也就是是“队列”还是“病例对照”。当研究类型为“病例对照”时,应增加“人群患病率”参数。因为在病例对照研究中,不能计算患病率,需要事先提供患病率。

 

然后,我们使用Decision_curve()函数构建复杂的Logistic回归模型,并将其命名为complex。语法和简单模型构造基本相同,只是在原有简单模型的基础上增加了自变量sbp+ dbp+ age + bmi+ sex 。

 

我们将拟合的简单模型和复杂模型组合成单个模型,并将其命名为List。

 

我们使用plot_decision_curve()函数绘制DCA曲线,如下面的图所示。

 

代码解读:plot_decision_curve()函数的对象是前面定义的列表。如果只画一条曲线,可以直接将列表替换为simple或complex。curve.names是绘制绘图时图例上每条曲线的名称。写入顺序与上面合成列表时的顺序相同。cost.benefit.axis是横坐标的附加轴,loss-to-return的默认值为TRUE。当您不需要它时,请记住将其设置为false。col设置颜色。confidence.intervals设置是否绘制曲线的置信区间,标准化设置是否使用流行率校正净获益率(NB)。DCA曲线如下面的图所示。

 

曲线解读:可以看出,门槛在0.1-0.5的范围内,复杂模型的净获益率高于简单模型。

 

你可以通过下面的命令查看复杂模型曲线上的数据点,其中NB也可以更改为SNB,表示标准患病率。

 

绘制临床影响曲线,我们使用plot_clinical_impact()函数绘制简单模型的临床影响曲线。使用单因素模型预测1,000人的风险分层,显示“损失:收益”轴,赋予8个刻度,显示置信区间,得到如图所示的结果。

 

使用复杂模型预测1,000人的风险分层,显示“损失:收益”轴,赋予8个刻度,显示置信区间,得到如图所示。

 

曲线解释:红色曲线(高危人数)表示在每个阈值概率下,由单因素模型或多因素模型划分为阳性(高危人数)的人数; 蓝色曲线是在每个阈值概率下真阳性的人数。

 


 

 

 

  • 【案例2】

 

黑色素瘤数据框包含丹麦205例恶性黑色素瘤患者的数据。该数据框包含以下列:

 

(I)时间:以天为单位的生存时间,可能经过审查;

(II)状况:1名死于黑色素瘤,2活着,3死于其他原因;

(III)性别:1 =男性,0 =女性;

(IV)年龄:岁;

(V)手术年份;(VI)厚度:以毫米为单位的肿瘤厚度;

(VII)溃疡:1 =存在,0 =不存在.

 

R代码及其解释

 

目前,对于结果是生存数据的资料,CRAN当前已经没有关于DCA分析的相应软件包。我们可以采用自定义功能,或使用其他研究人员编写的函数。stdca.R文件是其他研究人员编写的函数源代码,您可以直接使用。我们首先加载stdca.R的源代码,可以找我们的客服领取。

 

加载MASS包并将Melanoma命名为data.set

 

定义生存结局

 

使用上一步中定义的stdca()函数执行决策曲线分析。

 

生存数据的DCA曲线解释原理与二进制数据的DCA曲线相似。

 

 

 

小结

 

 

决策曲线分析法是目前临床应用评价的一种预测方法。两种资料结局的处理方法相对成熟,但生存数据结局的处理比较棘手,因此还需要对该方法进行进一步的改进和更新。然而,我们应该理解这个事实:DCA分析不是评估预测模型临床实用性的唯一方法,也不是一个完美的方法。事实上,之前教程中已经提到了我们最常用的方法。对于两种分类结果的预测,要看预测模型是否具有更好的敏感性和特异性;对于生存结果的预测,一般要看基于预测模型能否将患者分为预后良好和预后不良,比如用nomogram计算每个受试者的评分,按照一个分界值对患者进行治疗,并将其分为预后良好和预后不良,然后绘制Kaplan-Meier生存曲线。

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ15101117,本站将立刻清除。

联系我们

在线咨询:点击这里给我发消息

微信号:666666