在最近的一次技术讲座网络研讨会,我讨论了预测外周动脉疾病 (PAD) 的风险,其中响应是明确的,有两种可能的结果:是(患者有患 PAD 的风险)和否(患者没有患 PAD 的风险)。
在那次演讲中,我指出预测模型包含两部分:1)模型创建的概率函数;2)用于将数据分类为最有可能是或否的截止值。 我简单提到,ROC 曲线是评估和比较模型创建的概率函数的好方法。
这篇博文将进一步解释 ROC 曲线以及如何解释它们。 我还将在预测罕见事件(不平衡数据)和选择分类截止值时提供一些有关 ROC 曲线的想法。
ROC曲线
外周动脉疾病 (PAD) 风险预测模型的 ROC 曲线如图 1 所示。
Figure 1. ROC Curve for PAD prediction model.Figure 1. ROC Curve for PAD prediction model.Figure 1. ROC Curve for PAD prediction model.Figure 1. ROC Curve for PAD prediction model.图1。 PAD 预测模型的 ROC 曲线。
ROC曲线的标准要素:
- x轴为1-Specificity,即假阳性率;它的范围从 0 到 1。 它也可以被认为是模型的 I 类错误。
- y轴是Sensitivity,即真阳性的比例;它的范围从 0 到 1。 它也可以被认为是模型的力量,或者 1-II 类错误。
- 有时,对角线会穿过 0,0 和 1,1,即真阳性率等于假阳性率的位置。 这条线代表真正的随机模型或没有预测价值的模型。
那么ROC曲线上画的是什么呢?
要了解 ROC 曲线上绘制的内容,请回想一下分类响应的预测模型有两部分:1) 概率函数和 2) 将概率分类为最可能的类别的截止值。 对于数据集中的每个观测值,预测概率用作分类截止值。 为数据集中的每个观测值绘制具有该截止值的模型的最终灵敏度和 1-特异性。 我将在下面更详细地介绍这些计算。
请注意,ROC 曲线永远不会低于穿过 0,0 和 1,1 的对角线。
那么如何解释 ROC 曲线呢?
完美的模型穿过网格的左上角 (0,1)。 x 值为 0 表示模型结果没有误报。 y 值为 1 表示模型结果均为真阳性。
ROC 曲线下面积 (AUC) 指示模型与 ROC 曲线左上角的接近程度。 AUC为1是完美模型,AUC为0.5是随机模型或没有预测价值的模型。 由于 ROC 曲线永远不会低于对角线,因此 AUC 将始终在 0.5 和 1 之间。
AUC 越高,表明模型距离代表没有预测价值的模型的对角线越远,并且接近穿过网格左上角 (0,1) 的完美模型。
仔细观察 PAD 模型的 ROC 曲线
让我们仔细看看 PAD 风险预测模型的 ROC 曲线以及 x 和 y 值的计算方法。 图 2 是数据集中观察值子集的图表,并绘制在 ROC 曲线上。 其中一些点标有 PAD = Yes 的相应预测概率。
Figure 2. ROC Curve for Rare Event Example.Figure 2. ROC Curve for Rare Event Example.Figure 2. ROC Curve for Rare Event Example.Figure 2. ROC Curve for Rare Event Example.图 2. 罕见事件示例的 ROC 曲线。
首先,请注意数据点按预测概率排列,范围从 0.02 到 0.53。 如果我根据“是”和“否”的数量相同的数据集构建了一个模型,我预计范围将在 0 到 1 之间,其中 0.5 靠近曲线中心。 然而,该数据集适用于稀有或不平衡的数据集,这意味着“是”的频率比“否”的频率要低得多。因此,所有预测概率都落在该范围的下限 - 它们均为 0.53 及以下。
图表右上角的数据点对应于数据子集中的最低预测概率 (0.02)。 在我们讨论用于绘制这一点的计算之前,请花一点时间考虑一下该场景。 如果我们使用最低预测概率之一作为截止值对所有预测概率进行分类,我们的分类会发生什么? 当其中许多数据实际上为“否”时,几乎所有数据都会被分类为“是”。这对应于高误报率(1-特异性)。 同样,任何为“是”的数据都将被分类为“是”,即高真阳性率(灵敏度)。
还要考虑图表左下角的数据点。 该点对应于数据中的最高预测概率 (0.53)。如果使用最高预测概率作为截止值,则所有数据将被分类为“否”,这意味着误报率(1-特异性)很低,实际上为零。任何为“是”的数据都将被分类为“否”,这会导致真阳性率(灵敏度)较低,并且再次为零。
计算 1-特异性和灵敏度
为了在 ROC 曲线上绘制数据,我们必须计算 1-特异性和灵敏度。 让我们从图 2 右上角的数据点开始,它对应于数据子集中的最低预测概率 (0.02)。 首先,使用预测概率 0.02 作为截止值,将整个数据集分类为“是”或“否”。将此预测条件与实际或真实条件进行比较,数据可分为四种结果:真阳性、真阴性、假阴性、假阳性(图3)。 图 3 称为混淆矩阵,混淆矩阵中填充的数字用于计算 1-特异性和灵敏度。
|
真实情况
|
实际积极
|
实际负面
|
预测状况
|
预测为阳性
|
真阳性 (TP)
|
误报 (FP)
|
预测阴性
|
假阴性 (FN)
|
真阴性 (TN)
|
图 3. 二元分类模型的结果(混淆矩阵)。
1-特异性
1-特异性是假阳性率,通过用 1 减去真阴性率来计算。 真阴性率是模型预测的真阴性 (TN) 数量除以实际阴性总数,其中包括真阴性 (TN) 和假阳性 (FP)。

灵敏度
灵敏度是真阳性率,即模型预测的真阳性数 (TP) 除以实际阳性总数,包括真阳性 (TP) 和假阴性 (FN)。

将 0.02 的分类截止值应用于整个数据集后,我们得到如图 4 所示的结果。
|
真实情况
|
实际积极
|
实际负面
|
预测状况
|
预测为阳性
|
目标价 = 277
|
FP = 3394
|
预测阴性
|
FN = 0
|
TN = 312
|
图 4. 分类截止值为 0.02 的 PAD 预测模型的结果。
根据这些结果,我们可以计算 1-特异性和敏感性,分别对应于绘制在 ROC 曲线上的 x 和 y 值。


总之,ROC 曲线是用于创建概率函数的数据集中每个数据点的图。 1-当预测概率用作分类截止值时,通过使用混淆矩阵中的结果来计算每个数据点的特异性和敏感性。
通过对 ROC 曲线的这些计算,我们还可以得出结论,使用概率函数和 0.02 分类的预测模型并不是一个很好的模型。 首先,由于该点接近代表真正随机模型的对角线,因此我们并不比简单地将 PAD 风险随机分配给患者好多少。 从计算中我们还可以看到,我们的真阴性率(特异性)为0.08,真阳性率(敏感性)为1,存在很大差异。 换句话说,虽然 PAD 真实病例的分类率为 100%,但误报率为 92%。 我们需要选择一个平衡特异性和敏感性的分类截止值,并且距离对角线更远,更靠近图表的左上角。
选择分类截止值
默认情况下,使用 0.5 的截止值根据概率函数对数据进行分类,联合管理计划使用此截止值创建预测公式。 对于具有相同数量的实际正数和负数的数据,0.5 的截止值可能是合适的。 然而,当实际阳性率较低时(例如,罕见事件或不平衡数据),0.5 的截止值可能不是最佳的。
那么问题就变成了,可以使用什么方法来选择罕见事件的分类截止值? ROC曲线确实给了我们一些线索。 图表的左上角是真阴性率(特异性)和真阳性率(敏感性)最大化的地方。 查看图 2,其中标记了预测概率,我们可以看到,如果我们的目标是平衡特异性和敏感性,则 0.07 左右的截止值对于该预测模型来说是最佳的。然而,ROC 曲线通常不标有其预测概率。
Youden's J Statistic 可用于查找与 ROC 曲线上特异性和敏感性最大化的点相对应的预测概率。

Youden 的 J 统计量范围在 0 和 1 之间,其中 0 对应于相同的真阳性率和假阳性率,1 对应于所有真阳性且没有假阳性的模型。 它也可以被认为是 ROC 曲线上距离代表随机模型的对角线最远的点。
如果您在拟合模型平台中使用Nominal Logistic,当您选择ROC曲线时,您还将获得相应的ROC表。 表中的一列是 Youden's J Statistic,标记为 Sens-(1-Spec)。 ROC 表可以按 Sens-(1-Spec) 降序排序,以识别具有最大 Sen-(1-spec) 的预测概率 (Prob),即真阴性率(特异性)和真阳性率(灵敏度) )两者都最大化。 您可以看到 JMP 在 Sens-(1-Spec) 的最大值旁边添加了一个星号。

在 PAD 示例中,3,983 名患者的数据集中只有 277 名 PAD 患者; 0.07 的分类截止值平衡了真阳性率和真阴性率。 一旦确定了分类截止值,就可以在保存到数据表的预测公式中进行更改。 我要指出的是,选择截止值取决于预测模型的目标以及与结果相关的风险。 例如,如果研究人员希望防止误报或误报,则可以选择不同的截止值。