应该如何比较两个交叉验证的逻辑回归模型?

机器算法验证 回归 物流 交叉验证 插入符号
2022-03-20 18:39:19

我使用 100 次 10 倍重复交叉验证来评估向现有模型添加生物标志物的 ROC-AUC 性能改进: Model_A : pred1 + pred2 Model_B :pred1 + pred2 + pred3

我之前看到过使用 Wilcoxon 秩检验来比较每个折叠之间的 AUC 的建议。 在交叉验证中平均 ROC 曲线超过折叠

我应该从中提取中位数 p 值吗?是否可以使用 Caret 包中的 diff.resamples 函数并使用 Wilcoxin 等级而不是默认的 t 检验?如果只看 AUC,是否需要 Bonferonni 校正? https://www.rdocumentation.org/packages/caret/versions/6.0-86/topics/diff.resamples

最后,关于使用 DeLong 或似然比检验的任何想法。反而?

2个回答

您可以为Model_AModel_B计算每次迭代的两条 ROC 曲线,而不是平均每个折叠的 AUC (因为每个实例在 k 折叠 CV 中精确预测一次)。要计算添加生物标志物是否会导致模型具有显着不同的 AUC,您可以使用DeLong检验。在这里,我不会使用 p 值的中值 - 一个简单的计数就可以了(例如:100 次 10 倍 CV 中大约有 5 个重要的 p 值可以被偶然解释,并且表明模型性能没有改善) .

Larry V. Hedges 和 Ingram Olkin在“ Meta-Analysis 的统计方法”中提到了“组合”p 值的不同方法。

如果您正在使用 Python 并想使用 DeLong 的测试,这篇博文可能会有所帮助(尽管仍在草稿中):https ://biasedml.com/roc-comparison/

由于这些是嵌套逻辑回归模型,因此 Frank Harrell 的评论毫无疑问显示了如何进行:根据所有数据对 2 个模型*进行标准似然比检验,以确定添加第三个预测变量是否会提高性能。这具有完善的理论基础,比 AUC 更敏感地检测模型差异,并且它本身不需要交叉验证。

交叉验证或引导来评估模型的乐观性和校准肯定会帮助您证明您的建模方法是正确的,但重点不应该放在 AUC 上。显示 AUC 的变化量并没有什么坏处,但这应该是次要考虑因素。validateHarrell 软件包中的函数rms提供了几种基于引导或交叉验证的模型质量度量,包括可以转换为 AUC 值的 Dxy 秩相关值(原始和乐观校正值)。


*我有点担心您的模型中似乎包含如此少的预测变量。如果与结果相关的预测变量被排除在模型之外,则逻辑回归可能具有遗漏变量偏差。与线性回归不同,省略的预测变量甚至不需要与包含的预测变量相关来获得有偏估计。这并不是说您应该过度拟合,但通常有很多临床变量与某些状况或结果相关,仅包括 2 或 3 个往往会有风险。