В этом сообщении я опишу принцип работы критерия \(\chi^2\) на (гипотетическом) примере из иммунологии. Представим, что мы выполнили эксперимент по установлению эффективности подавления развития микробного заболевания при введении в организм соответствующих антител. Всего в эксперименте было задействовано 111 мышей, которых мы разделили на две группы, включающие 57 и 54 животных соответственно. Первой группе мышей сделали инъекции патогенных бактерий с последующим введением сыворотки крови, содержащей антитела против этих бактерий. Животные из второй группы служили контролем – им сделали только бактериальные инъекции. После некоторого времени инкубации оказалось, что 38 мышей погибли, а 73 выжили. Из погибших 13 принадлежали первой группе, а 25 – ко второй (контрольной). Проверяемую в этом эксперименте нулевую гипотезу можно сформулировать так: введение сыворотки с антителами не оказывает никакого влияния на выживаемость мышей. Иными словами, мы утверждаем, что наблюдаемые различия в выживаемости мышей (77.2% в первой группе против 53.7% во второй группе) совершенно случайны и не связаны с действием антител.
Полученные в эксперименте данные можно представить в виде таблицы:
Группа
|
Погибло
|
Выжило
|
Всего
|
Бактерии + сыворотка
|
13
|
44
|
57
|
Только бактерии
|
25
|
29
|
54
|
Всего
|
38
|
73
|
111
|
Таблицы, подобные приведенной, называют таблицами сопряженности. В рассматриваемом примере таблица имеет размерность 2х2: есть два класса объектов («Бактерии + сыворотка» и «Только бактерии»), которые исследуются по двум признакам ("Погибло" и "Выжило"). Это простейший случай таблицы сопряженности: безусловно, и количество исследуемых классов, и количество признаков может быть бóльшим.
Для проверки сформулированной выше нулевой гипотезы нам необходимо знать, какова была бы ситуация, если бы антитела действительно не оказывали никакого действия на выживаемость мышей. Другими словами, нужно рассчитать ожидаемые частоты для соответствующих ячеек таблицы сопряженности. Как это сделать? В эксперименте всего погибло 38 мышей, что составляет 34.2% от общего числа задействованных животных. Если введение антител не влияет на выживаемость мышей, в обеих экспериментальных группах должен наблюдаться одинаковый процент смертности, а именно 34.2%. Рассчитав, сколько составляет 34.2% от 57 и 54, получим 19.5 и 18.5. Это и есть ожидаемые величины смертности в наших экспериментальных группах. Аналогичным образом рассчитываются и ожидаемые величины выживаемости: поскольку всего выжили 73 мыши, или 65.8% от общего их числа, то ожидаемые частоты выживаемости составят 37.5 и 35.5. Составим новую таблицу сопряженности, теперь уже с ожидаемыми частотами:
Группа
|
Погибшие
|
Выжившие
|
Всего
|
Бактерии
+ сыворотка
|
19.5
|
37.5
|
57
|
Только
бактерии
|
18.5
|
35.5
|
54
|
Всего
|
38
|
73
|
111
|
Как видим, ожидаемые частоты довольно сильно отличаются от наблюдаемых, т.е. введение антител, похоже, все-таки оказывает влияние на выживаемость мышей, зараженных патогенным микроорганизмом. Это впечатление мы можем выразить количественно при помощи критерия согласия Пирсона \(\chi^2\):
\[\chi^2 = \sum_{}\frac{(f_o - f_e)^2}{f_e},\]
где \(f_o\) и \(f_e\) - наблюдаемые и ожидаемые частоты соответственно. Суммирование производится по всем ячейкам таблицы. Так, для рассматриваемого примера имеем
\[\chi^2 = (13 – 19.5)^2/19.5 + (44 – 37.5)^2/37.5 + (25 – 18.5)^2/18.5 + (29 – 35.5)^2/35.5 = \]
\[2.16 + 1.12 + 2.31 + 1.20 = 6.79\]
Достаточно ли велико полученное значение \(\chi^2\), чтобы отклонить нулевую гипотезу? Для ответа на этот вопрос необходимо найти соответствующее критическое значение критерия. Число степеней свободы для \(\chi^2\) рассчитывается как \(df = (R - 1)(C - 1)\), где \(R\) и \(C\) - количество строк и столбцов в таблице сопряженности. В нашем случае \(df = (2 -1)(2 - 1) = 1\). Зная число степеней свободы, мы теперь легко можем узнать критическое значение \(\chi^2\) при помощи стандартной R-функции qchisq():
Таким образом, при одной степени свободы только в 5% случаев величина критерия \(\chi^2\) превышает 3.841. Полученное нами значение 6.79 значительно превышает это критического значение, что дает нам право отвергнуть нулевую гипотезу об отсутствии связи между введением антител и выживаемостью зараженных мышей. Отвергая эту гипотезу, мы рискуем ошибиться с вероятностью менее 5%.
Следует отметить, что приведенная выше формула для критерия \(\chi^2\) дает несколько завышенные значения при работе с таблицами сопряженности размером 2х2. Причина заключается в том, что распределение самого критерия \(\chi^2\) является непрерывным, тогда как частоты бинарных признаков ("погибло" / "выжило") по определению дискретны. В связи с этим при расчете критерия принято вводить т.н. поправку на непрерывность, или поправку Йетса:
В нашем случае критерий \(\chi^2\) с поправкой на непрерывность составил бы 5.792, и нулевая гипотеза об отсутствии эффекта антител все равно была бы отклонена. Возможно, однако, что в других ситуациях это сделать так легко не удалось бы.
Безусловно, нет необходимости выполнять приведенные выше вычисления вручную. В R для этого имеется стандартная функция chisq.test(). При работе с этой функцией данные оформляются в виде матрицы, напоминающей приведенную выше таблицу сопряженности:
Как видим, R автоматически применяет поправку Йетса на непрерывность (Pearson's Chi-squared test with Yates' continuity correction). Рассчитанное программой значение \(\chi^2\) составило 5.79213. Мы можем отклонить нулевую гипотезу об отсутствии эффекта антител, рискуя ошибиться с вероятностью чуть более 1% (p-value = 0.0161).
Следует отметить, что приведенная выше формула для критерия \(\chi^2\) дает несколько завышенные значения при работе с таблицами сопряженности размером 2х2. Причина заключается в том, что распределение самого критерия \(\chi^2\) является непрерывным, тогда как частоты бинарных признаков ("погибло" / "выжило") по определению дискретны. В связи с этим при расчете критерия принято вводить т.н. поправку на непрерывность, или поправку Йетса:
\[\chi^2_Y = \sum_{}\frac{(|f_o - f_e| - 0.5)^2}{f_e}.\]
В нашем случае критерий \(\chi^2\) с поправкой на непрерывность составил бы 5.792, и нулевая гипотеза об отсутствии эффекта антител все равно была бы отклонена. Возможно, однако, что в других ситуациях это сделать так легко не удалось бы.
Безусловно, нет необходимости выполнять приведенные выше вычисления вручную. В R для этого имеется стандартная функция chisq.test(). При работе с этой функцией данные оформляются в виде матрицы, напоминающей приведенную выше таблицу сопряженности:
mice <- matrix(c(13, 44, 25, 29), nrow = 2, byrow = TRUE) mice # просмотр содержимого матрицы [,1] [,2] [1,] 13 44 [2,] 25 29 chisq.test(mice) # тест хи-квадрат Pearson's Chi-squared test with Yates' continuity correction data: mice X-squared = 5.7923, df = 1, p-value = 0.0161
Как видим, R автоматически применяет поправку Йетса на непрерывность (Pearson's Chi-squared test with Yates' continuity correction). Рассчитанное программой значение \(\chi^2\) составило 5.79213. Мы можем отклонить нулевую гипотезу об отсутствии эффекта антител, рискуя ошибиться с вероятностью чуть более 1% (p-value = 0.0161).
и (частично) здесь:
http://r-analytics.blogspot.de/2013/05/blog-post.html#.UnZHSsjf-Hs
Большое спасибо за предельно доходчивое объяснение. Обратите, однако, внимание на то, что в самой первой приведённой Вами формуле есть ошибка: в знаменателе стоит f экспериментальное. А по далее приводимым расчётам понятно, что это должнобыть f ожидаемое.
Ещё раз спасибо за Вашу работу!
Дарья Сухова
data: headache_p_n
X-squared = 9.3745e-32, df = 1, p-value = 1
Предупреждение:
В chisq.test(headache_p_n) :
аппроксимация на основе хи-квадрат может быть неправильной
что означает данная ошибка, как ее избежать?
Отправить комментарий