Биномиальный тест — это точный тест статистической значимости отклонений от теоретически ожидаемого распределения наблюдений по двум категориям с использованием выборочных данных.
Биномиальный тест полезен для проверки гипотез о вероятности ( ) успеха:
где — определяемое пользователем значение от 0 до 1.
Если в выборке размером есть успехи, при этом мы ожидаем , формула биномиального распределения дает вероятность нахождения этого значения:
Если бы нулевая гипотеза была верна, то ожидаемое число успехов было бы . Мы находим наше -значение для этого теста, рассматривая вероятность увидеть результат как экстремальный или более. Для одностороннего теста это легко вычислить. Предположим, что мы хотим проверить , . Тогда наше -значение было бы,
Аналогичное вычисление можно выполнить, если мы проверяем, используем ли вместо этого суммирование диапазона от до .
Вычисление -значения для двухстороннего теста немного сложнее, поскольку биномиальное распределение не симметрично, если . Это означает, что мы не можем просто удвоить -значение из одностороннего теста. Напомним, что мы хотим рассмотреть события, которые являются такими же или более экстремальными, чем то, которое мы видели, поэтому мы должны рассмотреть вероятность того, что мы увидим событие, которое является таким же или менее вероятным, чем . Пусть обозначает все такие события. Тогда двухстороннее -значение вычисляется как,
Одним из распространенных применений биномиального теста является случай, когда нулевая гипотеза предполагает , что две категории встречаются с одинаковой частотой ( ), например, подбрасывание монеты. Таблицы широко доступны для указания значимости наблюдаемых чисел наблюдений в категориях для этого случая. Однако, как показывает пример ниже, биномиальный тест не ограничивается этим случаем.
Если категорий больше двух и требуется точный тест, то вместо биномиального теста следует использовать полиномиальный тест , основанный на полиномиальном распределении . [1]
Для больших выборок, таких как пример ниже, биномиальное распределение хорошо аппроксимируется удобными непрерывными распределениями , и они используются в качестве основы для альтернативных тестов, которые вычисляются гораздо быстрее, таких как критерий хи-квадрат Пирсона и G-тест . Однако для небольших выборок эти аппроксимации не работают, и альтернативы биномиальному тесту нет.
Наиболее распространенным (и простым) приближением является стандартное нормальное распределение, в котором z-тест выполняется для тестовой статистики , заданной как
где — число успехов, наблюдаемых в выборке размером , а — вероятность успеха согласно нулевой гипотезе. Улучшение этого приближения возможно путем введения поправки на непрерывность :
Для очень больших значений эта поправка на непрерывность не будет иметь значения, но для промежуточных значений, где точный биномиальный тест не работает, она даст существенно более точный результат.
В обозначениях с использованием измеренной выборочной доли , нулевой гипотезы для доли и размера выборки , где и , можно переставить и записать z-тест выше как
путем деления на и в числителе, и в знаменателе, что может быть более привычно для некоторых читателей.
Предположим, у нас есть настольная игра , которая зависит от броска одного кубика и придает особое значение выпадению 6. В конкретной игре кубик бросается 235 раз, и 6 выпадает 51 раз. Если кубик честный, мы ожидаем, что выпадет 6
раз. Теперь мы заметили, что число 6 выше, чем мы ожидали бы в среднем по чистой случайности, если бы кость была честной. Но достаточно ли велико это число, чтобы мы могли сделать какой-либо вывод о честности кости? На этот вопрос можно ответить с помощью биномиального теста. Наша нулевая гипотеза будет заключаться в том, что кость честная (вероятность выпадения каждого числа на кости равна 1/6).
Чтобы найти ответ на этот вопрос с помощью биномиального теста, мы используем биномиальное распределение
Поскольку мы наблюдали значение, превышающее ожидаемое, мы могли бы рассмотреть вероятность наблюдения 51 6 или выше при нулевом значении, что будет представлять собой односторонний тест (здесь мы в основном проверяем, смещена ли эта кость в сторону генерации большего количества 6, чем ожидалось). Чтобы вычислить вероятность 51 или более 6 в выборке из 235 при нулевой гипотезе, мы складываем вероятности получения ровно 51 6, ровно 52 6 и так далее до вероятности получения ровно 235 6:
Если уровень значимости равен 5%, то этот результат (0,02654 < 5%) указывает на то, что у нас есть доказательства, достаточно значимые, чтобы отвергнуть нулевую гипотезу о том, что игральная кость является честной.
Обычно, когда мы проверяем честность игральной кости, мы также интересуемся, смещена ли кость в сторону генерации меньшего количества шестерок, чем ожидалось, а не только большего количества шестерок, как мы рассматривали в одностороннем тесте выше. Чтобы учесть оба смещения, мы используем двусторонний тест . Обратите внимание, что для этого мы не можем просто удвоить одностороннее p-значение, если только вероятность события не равна 1/2. Это происходит потому, что биномиальное распределение становится асимметричным, когда эта вероятность отклоняется от 1/2. Существует два метода определения двустороннего p-значения. Один метод заключается в суммировании вероятности того, что общее отклонение количества событий в любом направлении от ожидаемого значения больше или меньше ожидаемого значения. Вероятность того, что это произойдет в нашем примере, составляет 0,0437. Второй метод включает вычисление вероятности того, что отклонение от ожидаемого значения столь же маловероятно или менее маловероятно, чем наблюдаемое значение, т. е. из сравнения функций плотности вероятности. Это может создать тонкую разницу, но в этом примере дает ту же вероятность 0,0437. В обоих случаях двухсторонний тест выявляет значимость на уровне 5%, указывая на то, что число наблюдаемых 6 значительно отличалось для этой кости от ожидаемого числа на уровне 5%.
Биномиальные тесты доступны в большинстве программ, используемых в статистических целях. Например:
binom.test(51, 235, 1/6, alternative = "less")
(односторонний тест)binom.test(51, 235, 1/6, alternative = "greater")
(односторонний тест)binom.test(51, 235, 1/6, alternative = "two.sided")
(двусторонний тест)new BinomialTest().binomialTest(235, 51, 1.0 / 6, AlternativeHypothesis.LESS_THAN)
(односторонний тест)new BinomialTest().binomialTest(235, 51, 1.0 / 6, AlternativeHypothesis.GREATER_THAN)
(односторонний тест)new BinomialTest().binomialTest(235, 51, 1.0 / 6, AlternativeHypothesis.TWO_SIDED)
(двусторонний тест)PROC FREQ DATA=DiceRoll ;ТАБЛИЦЫ Roll / BINOMIAL (P= 0,166667 ) ALPHA= 0,05 ;ТОЧНЫЙ БИНОМ;ВЕС Частота ; ПРОБЕГ;
тесты npar /биномиал (.5) = узел1 узел2.
scipy.stats.binomtest(51, 235, 1.0/6, alternative='greater')
(односторонний тест)scipy.stats.binomtest(51, 235, 1.0/6, alternative='two-sided')
(двусторонний тест)[pout]=myBinomTest(51, 235, 1/6)