生信分析

您所在的位置:网站首页 ROC曲线约登指数 生信分析

生信分析

2024-07-10 01:33| 来源: 网络整理| 查看: 265

各位老师好!相信通过前几篇文章大家已经了解了模型构建、评估的基础知识,登~登~登~,今天,我们为大家请出模型评估中当之无愧的流量明星——“ROC曲线”!为了更好的认识它,我们还需要了解“截断值”。所以今天内容包括以下几部分:

1 截断值的含义与作用

2 ROC曲线来源与结果解读

3 文章实例

4 ROC绘制实操

4.1 导入数据

4.2 定义字段

4.3 绘制ROC曲线

4.4 截断值分析

01 截断值的含义与作用

前文提到过,我们建立临床模型,其实不是一步给出是否患病的结论,而是首先有一个综合评分或者概率的计算,然后选取一个临界点用于作出是否患病的决断。截断值(cut-off point,简称cutpoint),又称分界点,就是用来判定正常与异常、阴性与阳性的临界点。比如我们用一个模型或指标来判断是否患病,可能存在以下三种情况:

图1

图1展示了病人与非病人的分布曲线,横坐标显示模型的评分值或是指标的测量值,纵坐标显示频数。

最理想的情况如图1-a所示,病人与非病人呈现出两个独立且互不重叠的分布,只要截断值为病人中的最小值或非病人的最大值,灵敏度和特异度均可达到100%(即没有假阴性也没有假阳性)。或者如图1-b中,病人与非病人一起呈现单峰连续分布,截断值选择为病人中的最小值,也可达到100%灵敏度和特异度。

但现实情况多如图1-c,病人与非病人的分布有重叠,在这个重叠区,既有病人,又有非病人。所以无论临界点定在两条分布曲线的何处,都会出现假阳性和假阴性,根据图1-c中的截断值进行分类时会出现以下四种情况,分别对应了我们上一篇学习的混淆矩阵(点击查看详情)四格中的真阳性TP、假阴性FN、假阳性FP和真阴性TN,如图2所示:

图2

如果将图2的临界点右移,特异度增高而灵敏度降低,假阴性率(漏诊率)增加;反之,将临界点左移,特异度降低而灵敏度增高,假阳性率(误诊率)增加。

那么该如何确定截断值呢?我们在实际应用中会考虑不同情况,若疾病预后较差,漏诊病人带来严重后果,且目前针对这个疾病有可靠治疗方法,则应该将临界点左移,提高灵敏度以尽可能多地发现可疑病人;若疾病预后不严重、现有诊疗手段不佳或后续诊断的经费支出过大,则临界点可适当右移,提高特异度,尽可能将非患者鉴别出来,避免假阳性带来的心理和经济负担;若灵敏度和特异度同等重要,取灵敏度和特异度之和最大的值(衡量指标:约登指数=灵敏度+特异度-1)作为最佳截断值。而ROC曲线就是能将该过程可视化的图形,来看看如何实现吧~

02  ROC曲线来源与结果解读

ROC曲线:受试者工作特征(receiver operating characteristic)曲线,横坐标是假阳性率(1-特异度,1-specificity),纵坐标是真阳性率(灵敏度,sensitivity)。ROC计算过程见图3: 

图3

对20个样本同时进行金标准的诊断和模型的预测,结果如图3左边表格所示,第二列表示样本根据金标准的正确分类Class(N代表阴性,P代表阳性),第三列表示每个样本通过模型预测的Score值(取值0到1);然后按Score值对样本进行从大到小排序。如果我们从上到下,依次将每一个样本对应的Score作为截断值,其他样本的Score值只有大于该值,才会被认为是患病;根据此截断值预测的分类情况与实际分类情况构成20个混淆矩阵,并计算得出20对灵敏度和1-特异度值,分别对应图3右边坐标中的每个点,这样就能绘制出ROC曲线啦!而最佳截断值就是曲线最靠近左上角的点(此点的假阳性率和假阴性率之和最小)。此外,根据此图还能计算ROC曲线下面积(AUC,area under curve)值,常用来评估预测模型的区分度,一般认为AUC≥0.90,模型区分能力优秀;0.90>AUC≥0.75,模型区分能力良好;0.75>AUC≥0.60,模型有一定区分能力,但不推荐使用;0.60>定义字段>>数据修改>>绘制ROC曲线(配对数据)>>绘制ROC曲线(非配对数据)>>分界点(Cutpoint)分析”,接下来我们将简化该流程,分为以下四步。

4.1 导入数据

进入导入数据界面,在【导入文件】区点击浏览,导入同时包含结局变量Y和分类连续性变量X的文件(txt、csv、xls、xlsx等格式)后点击【导入数据】,我们的示例数据筛选自临床建模系列公众号第①期的示例数据(点击查看详情),在Lasso回归后筛选的变量中选择系数绝对值最大的的两个自变量SUCO和JADE2蛋白,用来区分是否患病结局Group(Group“0”=“未患病”;Group“1”=“患病”)并绘制ROC曲线以及探索最佳cutpoint,表格内容如图6:

图6

每行为一个样本,第一列sample是样本ID用来区分不同的样本,第二行Group是组别,用0/1表示未患病/患病,第三和四列表示蛋白表达量。

4.2 定义字段

在定义字段功能区可以勾选纳入分析的变量、修改变量名、变量类型、查看数据缺失和重复的情况。

图7

如图7所示,我们一般将“样本名sample”定义为“字符型character”;“组别Group”定义为“分类变量factor”;“蛋白表达量”定义为“数值型numeric。”这里可选的其他变量类型还包括:“整数型integer”、“日期date、日期和时间datetime。”注意Group一定要设置成分类变量哦!

设置完成后,点击最下方的【应用更改】,看到“√数据上传成功!”就可以进行下一步了。

4.3 绘制ROC曲线

后面的分析可以有多种选择,既可以检测同一批人的两种蛋白表达量,也可以用两批不同人分别检测两种蛋白表达量。由于我们这里是同一个人检测到的两种蛋白,所以我们选择配对数据的方式绘制ROC曲线。

接下来根据提示选择【金标准结局变量-Group】-【阳性事件-1】-勾选【比较多条曲线】-依次选择【自变量JADE2/SUCO】-选择建模方向【自动】-勾选【显示AUC值】【显示配对检验P值】(若勾选平滑曲线网卡加载较慢,可能会导致网页卡住)-调整图例与主图的距离-选择【调色方案】后点击【生成/更新ROC曲线】(可以跳过参数文字描述,直接参照下方的图8进行设置)

图8

 

从下方生成的结果图9中可以看出以蛋白JADE2和蛋白SUCO对Group进行分组的AUC分别为0.813和0.716,差异没有统计学意义(P>0.05)。接下来寻找两种蛋白区分Group的最佳分界点Optimal Cutpoint。

图9

4.4 截断值分析

该网站一次只能对一个自变量进行optimal cutpoint的选择,我们先以JADE2蛋白为例,在【生成所有分界点一览表功能区】按照要求设置后点击-生成;接下来在【用单个评价指标探寻最优分界点】功能区中选择约登指数评价方法,让我们看一下结果:表中展示了处在容忍度范围内的3个cutpoint的评价指标(点击查看详情);图10中展示了所有cutpoint所对应的约登指数大小,其中约登指数越大,点的位置越高,则区分度越好。

表1 截断值评价表

 图10

那么到此为止我们已经掌握了ROC曲线绘制和寻找最佳分界点的理论和实操。实际应用中,大家通过此工具既可以只寻找一个自变量对结局的最佳截断值,也可以通过比较不同自变量的AUC值,确定预测结局最佳自变量的最佳截断值~如果大家感兴趣,还可以试试手动删除部分原数据,用缺失值填补后的数据构建ROC曲线并寻找最佳Cutpoint,看看结果有什么不同吧!本系列到今天为止关于模型评估中的区分度已经介绍得差不多啦,下一篇我们将开始介绍评估模型校准度的工具。关注“谱度众合”,了解更多临床科研干货!下周见~

05  参考文献

[1] Junge MRJ,Dettori JR. ROC Solid: Receiver Operator Characteristic (ROC) Curves as a Foundation for Better Diagnostic Tests. Global Spine J. 2018;8 (4):424-429.

[2] Levis B, Negeri Z, Sun Y, et.al. Accuracy of the Edinburgh Postnatal Depression Scale (EPDS) for screening to detect major depression among pregnant and postpartum women: systematic review and meta-analysis of individual participant data. BMJ. 2020 Nov 11;371:m4022.

[3] D'Amore S,Sano H,Chappell DDG, et al. Radiographic Cortical Thickness Index Predicts Fragility Fracture in Gaucher Disease. Radiology. 2023;307 (1):e212779.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3