Как выполнить тест Макнемара в Python


Тест Макнемара используется для определения наличия статистически значимой разницы в пропорциях между парными данными.

В этом руководстве объясняется, как выполнить тест Макнемара в Python.

Пример: тест Макнемара в Python

Предположим, исследователи хотят знать, может ли определенное маркетинговое видео изменить мнение людей о том или ином законе. Они опрашивают 100 человек, чтобы выяснить, поддерживают они закон или нет. Затем они показывают маркетинговое видео всем 100 людям и снова опрашивают их, когда видео заканчивается.

В следующей таблице показано общее количество людей, поддержавших закон как до, так и после просмотра видео:

|  | До маркетингового видео | | --- | --- | | После маркетингового видео | Поддерживать | Не поддерживать | | Поддерживать | 30 | 40 | | Не поддерживать | 12 | 18 |

Чтобы определить, была ли статистически значимая разница в доле людей, поддержавших закон до и после просмотра видео, мы можем провести тест Макнемара.

Шаг 1: Создайте данные.

Сначала мы создадим таблицу для хранения наших данных:

data = [[30, 40],
 [12, 18]]

Шаг 2. Выполните тест Макнемара.

Затем мы можем использовать функцию mcnemar() из библиотеки Python statsmodels, которая использует следующий синтаксис:

mcnemar (таблица, точная = Истина, коррекция = Истина)

куда:

  • таблица: квадратная таблица непредвиденных обстоятельств
  • точное: Если точное истинно, то будет использоваться биномиальное распределение. Если точное ложно, то будет использоваться распределение хи-квадрат.
  • Коррекция: если true, используется коррекция непрерывности. Как правило, эта коррекция обычно применяется, когда количество ячеек в таблице меньше 5.

Следующий код показывает, как использовать эту функцию в нашем конкретном примере:

from statsmodels.stats.contingency_tables import mcnemar

#McNemar's Test with no continuity correction
print(mcnemar(data, exact=False))

pvalue 0.000181
statistic 14.019

#McNemar's Test with continuity correction
print(mcnemar(data, exact=False, correction=False))

pvalue 0.000103
statistic 15.077

В обоих случаях — независимо от того, применяем ли мы поправку на непрерывность или нет — p-значение теста меньше 0,05.

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.