R 中的 McNemar 检验 - 稀疏数据

McNemar test in R - sparse data

我正在尝试通过 R 运行 一个大小合适的数据集,使用 McNemar 测试来确定我在配对样本上用一种方法检测到的对象比例是否与另一种方法不同。我注意到当我有

的 2x2 table 时测试工作正常
   test1
   y    n
y  34   2
n  12   16

但如果我尝试 运行 更像:

34   0
12   0

它错误地告诉我“'x' 和 'y' 必须具有相同数量的级别(最少 2 个)”。

我应该澄清一下,我已经尝试在我的宽数据集上使用 table 函数将宽数据转换为 2x2 矩阵,而不是像上面那样出现,它否定了最后一列,给了我.

test1
    y
y  34
n  12

我也运行 mcnemar.test 使用了因子对象选项,这给了我同样的错误,所以我假设它做了类似的事情。我想知道是否有一种方法可以强制 table 函数生成第二列,尽管它们没有属于这些类别的观察结果,或者是否有一种方法可以使测试忽略这个缺失数据?

也许有更好的方法来做到这一点,但您可以通过确保表格中的因素具有相同的 levels 属性并且恰好有 2 个来强制 R 构造稀疏意外事件 table指定了不同的级别。

# Example data
x1 <- c(rep("y", 34), rep("n", 12))
x2 <- rep("n", 46)

# Set levels explicitly
x1 <- factor(x1, levels = c("y", "n"))
x2 <- factor(x2, levels = c("y", "n"))

table(x1, x2)
#    x2
# x1   y  n
#   y  0 34
#   n  0 12

mcnemar.test(table(x1, x2))
#
#  McNemar's Chi-squared test with continuity correction
#
# data:   table(x1, x2)
# McNemar's chi-squared = 32.0294, df = 1, p-value = 1.519e-08