Рассмотренный ранее критерий \(\chi^2\) для анализ таблиц сопряженности размером 2х2 применим только в отношении независимых наблюдений. Если же учет какого-либо дихотомического признака выполняется, например, на одних и тех же испытуемых, вместо критерия \(\chi^2\) следует использовать критерий Мак-Немара (назван по имени автора - американского психолога и статистика Куинна Мак-Немара; оригинальная статья, в которой был описан этот критерий (McNemar 1947), доступна для скачивания в свободном доступе с сайта издательсва Springer).

Представим такую ситуацию: 15-ти испытуемым дали попробовать новый освежительный напиток, который скоро должен будет поступить в продажу. Испытуемых попросили ответить на вопрос, понравился ли им этот напиток - с вариантами ответа "да" или "нет". После этого тем же 15 участникам эксперимента показали рекламу, содержащую информацию о пользе и вкусовых качествах напитка. По завершении просмотра испытуемым снова дали выпить напиток и попросили ответить на ранее поставленный вопрос. Производитель напитка желает выяснить эффективность рекламы, изучив изменения в предпочтениях участников эксперимента после ее просмотра.

Данные, полученые в ходе эксперимента, могли бы выглядеть так (пример заимствован с сайта Cookbook for R):

data <- read.table(header=TRUE, con <- textConnection("
 subject time result
       1  pre      0
       1 post      1
       2  pre      1
       2 post      1
       3  pre      0
       3 post      1
       4  pre      1
       4 post      0
       5  pre      1
       5 post      1
       6  pre      0
       6 post      1
       7  pre      0
       7 post      1
       8  pre      0
       8 post      1
       9  pre      0
       9 post      1
      10  pre      1
      10 post      1
      11  pre      0
      11 post      0
      12  pre      1
      12 post      1
      13  pre      0
      13 post      1
      14  pre      0
      14 post      0
      15  pre      0
      15 post      1
"))

В таблице data столбец subject содержит идентификационные номера испытуемых, столбец time - метки, отражающие время проведения опроса (pre - до показа рекламы, post - после), а столбец result - ответы на вопрос (закодированы как 0 - "нет" и 1 - "да"). Данные умышленно приведены сначала в т.н. "длинном формате" - чтобы продемонстрировать еще раз, что те же 15 испытуемых были опрошены дважды и что их ответы могли измениться после просмотра рекламы.

Подобно критерию \(\chi^2\), критерий Мак-Немара работает с таблицей сопряженности размером 2х2. Для преобразования объекта data в такую таблицу необходимо выполнить пару дополнительных операций. Сначала преобразуем data в таблицу "широкого формата" (для этого использованы возможности пакета reshape2 (Wickham 2007)):

# Если пакет еще не установлен на Вашем компьютере, выполните:
install.packages("reshape2")
 
# Преобразуем данные в "широкий формат":
data.wide <- dcast(data, subject ~ time, value_var="result")
 
data.wide
   subject post pre
1        1    1   0
2        2    1   1
3        3    1   0
4        4    0   1
5        5    1   1
6        6    1   0
7        7    1   0
8        8    1   0
9        9    1   0
10      10    1   1
11      11    0   0
12      12    1   1
13      13    1   0
14      14    0   0
15      15    1   0

Теперь эти данные можно легко свести в матрицу, соответствующую таблице сопряженности (использованная ниже функция table() входит в базовый набор функций R):

ct <- table( data.wide[,c("pre","post")] )
 
ct
   post
pre 0 1
  0 2 8
  1 1 4

Полученная таблица сопряженности отражает изменения предпочтений участников эксперимента до и после показа рекламы (сравните с критерием Стьюдента для парных выборок). Так, например, мы видим, что двоим испытуемым напиток не нравился как до, так и после показа рекламы (пересечение строки 0 и столбца 0); восьми испытуемым напиток не нравился до показа рекламы, но понравился после (пересечение строки 0 и столбца 1), и т.д. В общем виде таблицу сопряженности для критерия Мак-Немара мы можем представить так:


Тест 2 (-)
Тест 2 (+)
Всего
Тест 1 (-)
а
b
a + b
Тест 1 (+)
c
d
c + d
Всего
a + c
b + d
a + b + c + d

Критерий Мак-Немара предназначен для проверки нулевой гипотезы о том, что маргинальные частоты строк и столбцов таблицы сопряженности не различаются:
\[p_a + p_b = p_a + p_c\] \[p_c + p_d = p_b + p_d\]
После сокращения получаем (McNemar 1947):
\[H_0: p_b = p_c\] \[H_1: p_b \not= p_c\]
Критерий рассчитывается следующим образом:
\[Q = \frac{(b-c)^2}{b+c}\]
При больших объемах выборок (примерно 50 и выше) Q имеет распределение, близкое к распределению \(\chi^2\) с одной степенью свободы. Более точное приближение достигается при помощи поправки Эдвардса (Edwards 1948):
\[Q = \frac{(|b-c| - 1)^2}{b+c}\]
В R приведенные формулы реализованы в базовой функции mcnemar.test():

mcnemar.test(ct)
 
 McNemar's Chi-squared test with continuity correction
 
data:  ct 
McNemar's chi-squared = 4, df = 1, p-value = 0.0455

По умолчанию поправка Эдвардса применяется. При необходимости ее можно отключить, воспользовавшись аргументом correct:

mcnemar.test(ct, correct = FALSE)
 
 McNemar's Chi-squared test
 
data:  ct 
McNemar's chi-squared = 5.4444, df = 1, p-value = 0.01963

Как видим, в обоих случаях p-value < 0.05, что дает нам основания отклонить нулевую гипотезу об отсутствии эффекта рекламы - число испытуемых, которым напиток понравился после ее просмотра, увеличилось.

Обратите внимание: хотя критерий Мак-Немара имеет дело с таблицей сопряженности 2х2, структура этой таблицы в корне отличается от таковой для критерия \(\chi^2\). В случае с \(\chi^2\) факт повторного учета дихотомического признака на тех же объектах не отражен:

table(data[,c("time","result")])
      result
time    0  1
  post  3 12
  pre  10  5


1 Комментарии

Анонимный написал(а)…
Доброго времени суток.
Применим ли критерий Мак-Немара для таблиц сопряжённости 3х3 или 4х4 ?
Новые Старые