Тест Макнемара в R - разреженные данные

Я пытаюсь запустить набор данных хорошего размера через R, используя тест Мак-Немара, чтобы определить, есть ли у меня разница в пропорции объектов, обнаруженных одним методом, над другим в парных выборках. Я заметил, что тест работает нормально, когда у меня есть таблица 2x2

   test1
   y    n
y  34   2
n  12   16

но если я попытаюсь запустить что-то вроде:

34   0
12   0

из-за ошибки мне говорят, что "x" и "y" должны иметь одинаковое количество уровней (минимум 2) ".

Я должен уточнить, что я пытался преобразовать широкие данные в матрицу 2x2, используя табличную функцию в моем широком наборе данных, где вместо того, чтобы показываться, как указано выше, он сводит на нет последний столбец, давая мне.

test1
    y
y  34
n  12

Я также запустил mcnemar.test с опцией факторного объекта, которая выдает мне ту же ошибку, поэтому я предполагаю, что она делает нечто подобное. Мне интересно, есть ли способ заставить табличную функцию генерировать 2-й столбец, несмотря на отсутствие наблюдений, которые подпадают под одну из этих категорий, или есть ли способ заставить тест пропустить эти пропущенные данные?

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
Другие вопросы по тегам