1

我正在尝试通过 R 运行一个大小合适的数据集,使用 McNemar 测试来确定我在配对样本上一种方法检测到的对象的比例是否存在差异。我注意到当我有一个 2x2 表时,测试工作正常

   test1
   y    n
y  34   2
n  12   16

但如果我尝试运行类似的东西:

34   0
12   0

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

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

test1
    y
y  34
n  12

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

4

1 回答 1

1

也许有更好的方法来做到这一点,但您可以强制 R 构造一个稀疏列联表,方法是确保列表中的因子具有相同的levels属性并且指定了 2 个不同的级别。

# 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
于 2015-05-01T21:19:04.520 回答