SPSS 命令: SPSS ROC

在浏览器中绘制 ROC 曲线并计算 AUC

ROC 曲线以每个可能临界值下的灵敏度对 1 − 特异度作图,展示一个评分区分阳性与阴性个案的能力。

免费 · 无需注册 · 文件留在本机 · 更新于 2026年10月18日

能告诉你什么

Crosstabs 在你的设备上运行与 SPSS ROC 对应的过程,最多支持四个检验变量,给出 ROC 曲线下面积、其非参数或双负指数标准误、与 AUC = .5 的比较检验,以及完整的临界值表。

  • 曲线下面积:随机抽取的阳性个案得分高于随机阴性个案的概率。
  • 检验的区分能力是否优于随机:给出面积的渐近 p 值与置信区间。
  • 每个临界值下的灵敏度、1 − 特异度和精确率,便于选择工作点。
  • Gini 指数(2·AUC − 1)以及 Kolmogorov-Smirnov 统计量,即灵敏度与 1 − 特异度之间的最大差距。

适用场景

适合使用

  • 以已知的二分类结局评价诊断检验、风险评分或模型预测概率。
  • 选择一个在漏诊与误报之间取得平衡的临界值。
  • 在同一批个案上并列比较最多四个评分的区分能力。

改用其他方法

  • 需要检验两个 AUC 之差是否显著:使用 ROC 分析,其中提供 DeLong 检验或独立组比较。
  • 关心的是校准(预测概率是否准确)而非排序:AUC 不反映校准,可查看 logistic 回归中的 Hosmer-Lemeshow 检验。
  • 阳性非常罕见且假阳性代价高:还需查看精确率列,因为 AUC 看起来不错时精确率可能很差。

在 Crosstabs 中如何操作

  1. 01

    打开数据

    打开每行一个个案、包含评分和真实状态的文件,并切换到“统计”模式。

  2. 02

    选择 ROC 曲线

    在“一致性与诊断”组中选择“ROC 曲线”(ROC)。

  3. 03

    选择检验变量和状态变量

    勾选最多四个数值型“检验变量”,选择“状态变量”及“状态变量的值(阳性)”。

  4. 04

    设置方向和置信水平

    在“检验方向”中指定检验结果越大还是越小越倾向阳性,并设置“置信水平(%)”。

  5. 05

    选择标准误并运行

    将“面积的标准误”设为非参数或双负指数(后者要求阳性与阴性个案数相等,否则显示非参数标准误);如有权重,将其声明为频数权重,然后点击“运行”。

计算示例

以下结果由 Crosstabs 引擎在构建本页时根据模拟数据实际计算得出,并非手工填写。

用示例数据试一试

数据

100 名模拟患者,其中 40 人患病(状态为阳性)、60 人未患病。生物标志物为整数,分别从均值 62(患病)和 50(未患病)的正态分布中抽取;值越大越倾向患病。固定随机种子。

个案处理摘要
患病状态有效 N(成列)
阳性40
阴性60
曲线下面积
检验结果变量面积标准误渐近显著性95% 置信区间Gini 指数K-S
biomarker0.7910.046<.0010.701 – 0.8810.5830.458

基于非参数假设。零假设:真实面积 = 0.5。部分取值在阳性组与阴性组之间存在结值。

曲线坐标 — biomarker(部分行)
大于或等于时判为阳性灵敏度1 - 特异度精确率
26.01.0001.0000.400
38.51.0000.9000.426
44.50.9500.7830.447
49.50.8750.5170.530
52.50.8250.3670.600
54.50.7500.3500.588
59.50.5250.2000.636
65.50.4000.0330.889
71.00.1750.0001.000
86.00.0250.0001.000

每隔五个临界值取一行,并加上达到 K-S 统计量的临界值;工作区会列出全部临界值。

结果解读

曲线下面积为 0.791(95% 置信区间 0.701 – 0.881,p < .001):随机抽取一名患病者和一名未患病者,前者生物标志物更高的概率为 79.1%(结值按一半计)。灵敏度与 1 − 特异度之差最大(K-S = 0.458)出现在临界值 52.5 处,此时灵敏度为 0.825,特异度为 0.633。

输出表格说明

个案处理摘要
在状态变量与所有检验变量上成列删除后的有效阳性与阴性个案数。
曲线下面积
每个检验变量的面积、标准误、相对 0.5 的渐近显著性、置信区间、Gini 指数和 K-S。若两组间存在结值,脚注会给出提示。
曲线坐标
每个临界值对应的灵敏度、1 − 特异度和精确率。临界值取相邻观察值的中点,另加最小值减 1 和最大值加 1。

前提假设与注意事项

  • 状态变量代表真实情况,且独立于检验本身测量。
  • 个案相互独立;同一人的重复测量会夸大表观精度。
  • 非参数标准误不作分布假设;双负指数标准误假设该模型成立且两组样本量相等。
  • 权重须声明为整数频数权重;抽样权重会使该过程停止运行。

结果如何验证

引擎复现了 SPSS ROC 算法文档中的示例(面积 .64,标准误 .183)。在含权重的 180 例参考数据上,面积与 scikit-learn 1.9.1 roc_auc_score 及 R pROC 1.19.1 一致到 1e-12;非参数(含结值的 Hanley-McNeil)标准误在两种检验方向下均与独立的 NumPy 实现一致到 1e-12,p 值一致到 1e-9。 验证证据(英文)

常见问题

AUC 多大算好?

0.5 相当于随机,1.0 表示完全区分。粗略的惯例认为 0.7–0.8 尚可、0.8–0.9 良好、0.9 以上优秀,但关键在于该检验是否优于实践中使用的其他方法。

AUC 低于 0.5 是怎么回事?

很可能检验方向设反了:分数越低越倾向阳性。将“检验方向”改为“检验结果越小表示越倾向阳性”,面积就会变为 1 减去原值。

如何选择最佳临界值?

常见做法是使灵敏度 + 特异度 − 1(Youden 指数)最大,即面积表中报告的 K-S 统计量。若漏诊的代价高于误报,可从坐标表中选择灵敏度更高的较低临界值。

坐标表中为什么有精确率?

精确率(阳性预测值)取决于数据中阳性的比例。在阳性类别罕见时,它是对 ROC 曲线的重要补充。

用你自己的数据运行 ROC 曲线

打开 .sav、CSV 或 Excel 文件。所有计算都在浏览器中完成,文件不会离开你的设备。

打开分析工作区

SPSS 是 IBM Corp. 的商标。Crosstabs 与 IBM 无关联,也未获得 IBM 认可。