McNemar 检验

17 Mar 2025 | 6 分钟阅读

麦克尼马尔检验是一种统计检验,用于确定 2x2 列联表中两个相关分类变量的边际频率(计数)是否存在显著差异。它通常用于配对分类数据,例如在前后实验中,或比较同一数据集上的两种不同分类器时。

检验统计量具有一个自由度的卡方分布。要获得 p 值,请将估计值与具有一个自由度的卡方分布中的关键值进行比较。

如果 p 值小于您指定的显著性水平(例如 0.05),则拒绝原假设。如果 p 值超过您指定的显著性水平,则无法拒绝原假设。

代码

现在我们将实现麦克尼马尔检验,并将其与其他近似统计检验进行比较。

导入库

读取数据集

输出

McNemar Test

模型

现在我们将构建我们的模型。

我们将生成所构建的估计器模型的 HTML 表示。

输出

McNemar Test

输出

McNemar Test

训练

我们将使用分层 K 折交叉验证来训练模型,这有助于获得更可靠的模型性能估计并降低过拟合的风险


输出

McNemar Test

麦克尼马尔检验

麦克尼马尔检验旨在主要关注两个分类器之间的差异,因此也关注它们以不同方式预测的案例。所以我们首先需要做的是计算以下值。

  • n00:A 和 B 都分类错误的项数
  • n01:A 分类错误但 B 未分类错误的项数
  • n10:B 分类错误但 A 未分类错误的项数
  • n11:A 和 B 都分类正确的项数

原假设:n01 = n10,表明 A 和 B 具有相同的错误率。

要获得麦克尼马尔检验的 X² 值,该值类似于配对卡方检验,请使用以下公式。

McNemar Test

在双尾检验中,如果 X² > X²(p),则拒绝原假设。其中 p 是显著性水平。

输出

McNemar Test

McNemar Test

与其他检验的比较

现在我们将麦克尼马尔检验与其他近似统计检验进行比较。我们将比较

  • 比例 Z 检验
  • 麦克尼马尔检验
  • 重采样配对 t 检验
  • 交叉验证配对 t 检验
  • 5x2 交叉验证配对 t 检验

导入库

定义方法

在这里,我们将创建每个近似统计检验的函数。

加载数据集

定义分类器

现在我们将执行各种统计检验,以比较两种机器学习模型(随机森林和 KNN)的性能。

输出

McNemar Test

输出

McNemar Test

虽然比例 Z 检验发现两种模型之间的比例没有显著差异,但麦克尼马尔检验和所有三个 t 检验(重采样配对 t 检验、交叉验证配对 t 检验和 5x2 交叉验证配对 t 检验)均显示模型平均性能得分存在显著差异。


下一主题随机优化