2.1.1. Основные понятия о статистической гипотезе
Полученные
в экспериментах выборочные данные
всегда ограничены и носят в значительной
степени случайный характер. Именно
поэтому для анализа таких данных и
используется математическая статистика,
позволяющая обобщать закономерности,
полученные на выборке, и распространять
их на всю генеральную совокупность.
Однако,
в связи с действием случайных причин,
оценка параметров генеральной
совокупности, сделанная на основании
экспериментальных (выборочных) данных,
всегда будет сопровождаться погрешностью,
и поэтому подобного рода оценка должна
рассматриваться как предположительное,
а не как окончательное утверждение.
Подобные предположения о свойствах и
параметрах генеральной совокупности
носят название статистических гипотез.
Сущность
проверки статистической гипотезы
заключается в том, чтобы установить,
согласуются ли экспериментальные
данные и выдвинутая гипотеза, допустимо
ли отнести расхождение между гипотезой
и результатом статистического анализа
экспериментальных данных за счет
случайных причин?
Рассмотрим
простой пример. Подбросим монету 10 раз.
Если монета не имеет дефектов формы,
то количество выпадений герба и цифры
должно быть примерно одинаковым. Таким
образом, возможны гипотезы:
—
монета правильная и частота выпадений
герба и цифры примерно одинакова,
—
монета деформирована и чаще выпадает
герб,
—
монета деформирована и чаще выпадает
цифра.
Но
нам надо выразить понятия «правильная»
или «деформированная» монета в
математических параметрах. В качестве
параметра выбираем вероятность Р
выпадения герба. Тогда приведенные выше
гипотезы можно записать (в порядке
упоминания) так:
—
Р = ½,
—
Р > ½,
—
Р < ½.
При
проведении эксперимента надо ответить
на вопрос, какая же из приведенных
гипотез верна?
При
проверке статистических гипотез
используется два понятия: нулевая
гипотеза (ее обозначают Н0) и альтернативная
гипотеза (обозначение Н1). Как правило,
принято считать, что нулевая гипотеза
Н0 – это гипотеза о сходстве, а
альтернативная Н1 – гипотеза о различии.
Таким образом, принятие нулевой гипотезы
свидетельствует об отсутствии различий,
а альтернативной – о наличии различий.
Для
нашего примера в качестве нулевой
(будем называть ее основной) гипотезы
Н0 принимаем – монета правильная, а
качестве альтернативной гипотезы Н1 –
монета деформированная. Альтернативных
гипотез может быть несколько. В нашем
случае их две (больше и меньше ½).
2.1.2. Ошибки при проверке статистических гипотез
Обозначим
через N множество всевозможных
результатов наблюдений (выборок) m.
Выделим в N область n , исходя из следующих
соображений: если гипотеза Н0 верна,
то наступление события m ∈
n маловероятно. Это записывается так:
Р
{ m ∈
n/Но} = α ,
где
α – малое число, близкое к нулю.
Иными
словами, вероятность Р события m ∈
n при условии, что верна гипотеза Н0,
равна α. Если это событие все же произошло,
то гипотеза Н0 отвергается. При этом
сохраняется небольшая вероятность
(учитывая, что α мало, но не равно нулю),
что гипотеза Н0 отвергается, хотя она
верна. Такая ошибка называется ошибкой
первого рода. Ее вероятность равна α.
Возможна
и ошибка второго рода β, которая состоит
в том, что гипотеза Н0 принимается, хотя
она неверна, а верна альтернативная
гипотеза Н1.
Р
{m ∈
n/Н1} = β.
Разберем
порядок проверки статистических гипотез
на примере. Допустим, что проводится
приемочный контроль партии продукции.
Известно, что в партии могут содержаться
дефектные изделия. Поставщик полагает,
что доля дефектных изделий составляет
не более 3%, а заказчик считает, что
качество изготовления изделий низкое
и доля дефектных изделий значительна
и составляет 20%. Между поставщиком и
заказчиком достигнута следующая
договоренность: партия продукции
принимается, если в выборке из 10 изделий
будет обнаружено не более одного
дефектного изделия.
Требуется
в процессе решения примера сформулировать:
—
нулевую (основную) и альтернативную
гипотезы,
—
определить критическую область и
область принятия нулевой гипотезы,
—
определить, в чем состоят ошибки первого
и второго рода, и найти их вероятность.
Если
смотреть на ситуацию с точки зрения
заказчика (потребителя), учитывая, что
заказчик всегда прав, то нулевой гипотезой
Н0 следует принять гипотезу, что
продукция содержит 20% брака. Альтернативная
гипотеза Н1 соответствует версии
поставщика – 3% брака.
Поскольку
отбирается 10 изделий, то множество
возможных результатов (наличие дефектного
изделия) составит N = (0,1,2,3…10), так как в
выборке может оказаться и 0, и 10 дефектных
изделий. По условиям поставок, принятым
и заказчиком, и поставщиком, гипотеза
заказчика Н0 считается:
− отвергнутой,
если число дефектов находится в области
n = {0,1};
− принятой,
если число дефектов находится в области
n = {2,3,4…10}.
Область
результатов выборки, при попадании в
которую принятая гипотеза отвергается,
называется критической. В нашем
случае это – область n = {0,1}.
Напомним,
что ошибка первого рода возникает тогда,
когда гипотеза Н0 отвергается, хотя
она верна. Для нашего примера это
означает, что партия изделий принимается
(закупается), хотя в ней 20% дефектных
изделий. Ошибка второго рода для
нашего примера возникает тогда, когда
нулевая гипотеза принимается (т.е.
партия бракуется), в то время как верна
альтернативная гипотеза (дефектных
изделий всего 3%). Найдем вероятность
этих ошибок.
Сначала
заметим, что число дефектных изделий m
является биномиальной, случайной
величиной. Если допустить, что гипотеза
Н0 верна то в выборке N=10 этому
соответствует 2 случая: m =0 и m = 1. Тогда
биномиальная величина имеет вид Bi
(10;2). Найдем вероятность каждого из двух
событий:
Р(m
= 0) = (0,8)10
=
0,107,
Р(m
= 1) = 10·(0,8)9·0,2
= 0,268.
Тогда
ошибка первого рода α будет равна сумме
этих вероятностей:
α
= Р (m ≤ 1) = Р (m=0/Н0) + Р (m =1/Н0) = 0,375.
Если
верна гипотеза Н1, то вероятность
выбрать дефектное изделие составляет
по условию примера 0,03 (3%). Ошибка
второго рода произойдет, если из 10
изделий в выборке окажутся дефектных
2 и более. В этом случае биномиальная
величина имеет вид Bi (10;0,03). Тогда для
событий m ≤ 1 вероятность составит:
Р(m=0)
= (0,97)10
=
0,737,
Р(m=1)
= 10·(0,97)9·0,03
= 0,228.
Таким
образом, вероятность альтернативных
событий (m > 1) составит величину ошибки
второго рода β:
β
= Р(m>1/Н1) = 1 – Р(m ≤ 1/Н1) = 1 – Р(m =0/Н1) –
Р(m=1/Н1) = =1 – 0,737 – 0,228 = 0,035.
Из
сравнения ошибок α и β можно заключить,
что оговоренная процедура по приему
партии выгодна скорее поставщику, чем
потребителю (заказчику).
Соседние файлы в папке УК работы
- #
- #
- #
11.08.201936.84 Кб35ЛР 6 УК1.xlsx
- #
11.08.201919.67 Кб32ЛР 6 УК2.xlsx
- #
11.08.201941.03 Кб38лр7.xlsx
- #
11.08.201977.53 Кб34лр8.xlsx
Критерии проверки статистических гипотез
Понятие статистической гипотезы
Статистической гипотезой (гипотезой) называется любое утверждение об изучаемом законе распределения или характеристиках случайных величин.
Пример статистических гипотез:
- Генеральная совокупность распределена по нормальному закону.
- Дисперсии двух нормально распределенных совокупностей равны между собой.
Нулевая гипотеза (Н0) — предположение о том, что между параметрами генеральных совокупностей нет различий, то есть эти различия носят не систематический, а случайный характер.
Пример1. Нулевая гипотеза записывается следующим образом:
H0: µ1=µ2 (нулевая гипотеза заключается в том, что генеральное среднее одной совокупности равно генеральному среднему другой совокупности).
Альтернативная гипотеза (Н1) – предположение о том, что между параметрами генеральных совокупностей есть достоверные различия.
Пример 2. Альтернативные гипотезы записываются следующим образом:
- H1: µ1≠µ2 (нулевая гипотеза заключается в том, что генеральное среднее одной совокупности не равно генеральному среднему другой совокупности).
- H1: µ1>µ2 (нулевая гипотеза заключается в том, что генеральное среднее одной совокупности больше генерального среднего другой совокупности).
- H1: µ1<µ2 (нулевая гипотеза заключается в том, что генеральное среднее одной совокупности меньше генерального среднего другой совокупности).
Ошибки при проверке гипотез
Ошибки, допускаемые при проверке статистических гипотез, делятся на два типа:
- ошибки первого рода;
- ошибки второго рода.
Ошибка первого рода – отклонение гипотезы Н0, когда она верна. Вероятность ошибки первого рода обозначается α и называется уровнем значимости.
Ошибка второго рода – принятие гипотезы Н0, когда верна альтернативная гипотеза. Вероятность ошибки второго рода обозначается β.
Классификация критериев значимости (критериев проверки статистических гипотез)
Для проверки правдоподобия статистической гипотезы используют критерий значимости – метод проверки статистической гипотезы.
Необходимо отметить, что до получения исследователем экспериментальных данных необходимо сформулировать статистическую гипотезу и задать уровень значимости α. При выборе уровня значимости исследователь должен исходить из практических соображений, отвечая на вопрос: какую вероятность ошибки он считает допустимой. В области физической культуры и спорта чаще всего задают уровень значимости α=0,05.
Критерии проверки статистических гипотез (критерии значимости) можно разделить на три большие группы:
- Критерии согласия;
- Параметрические критерии;
- Непараметрические критерии.
Критерии согласия называются критерии значимости, применяемые для проверки гипотезы о законе распределения генеральной совокупности, из которой взята выборка. Для проверки статистической гипотезы чаще всего используются следующие критерии согласия: критерий Шапиро-Уилки, критерий хи-квадрат, критерий Колмогорова-Смирнова.
Параметрические критерии – критерии значимости, которые служат для проверки гипотез о параметрах распределений (чаще всего нормального). Такими критериями являются: t-критерий Стьюдента (независимые выборки), t-критерий Стьюдента (связанные выборки), F-критерий Фишера (независимые выборки).
Непараметрические критерии – критерии значимости, которые для проверки статистических гипотез не использует предположений о распределении генеральной совокупности. В качестве примера таких критериев можно назвать критерий Манна-Уитни и критерий Вилкоксона.
Литература
- Высшая математика и математическая статистика: учебное пособие для вузов / Под общ. ред. Г. И. Попова. – М. Физическая культура, 2007.– 368 с.
- Катранов А.Г. Компьютерная обработка данных экспериментальных исследований: Учебное пособие/ А. Г. Катранов, А. В. Самсонова; СПб ГУФК им. П.Ф. Лесгафта. – СПб.: изд-во СПб ГУФК им. П.Ф. Лесгафта, 2005. – 131 с.
- Основы математической статистики: Учебное пособие для ин-тов физ. культ / Под ред. В.С. Иванова.– М.: Физкультура и спорт, 1990. 176 с.
Ошибки I и II рода при проверке гипотез, мощность
Общий обзор
Принятие неправильного решения
Мощность и связанные факторы
Проверка множественных гипотез
Общий обзор
Большинство проверяемых гипотез сравнивают между собой группы объектов, которые испытывают влияние различных факторов.
Например, можно сравнить эффективность двух видов лечения, чтобы сократить 5-летнюю смертность от рака молочной железы. Для данного исхода (например, смерть) сравнение, представляющее интерес (например, различные показатели смертности через 5 лет), называют эффектом или, если уместно, эффектом лечения.
Нулевую гипотезу выражают как отсутствие эффекта (например 5-летняя смертность от рака молочной железы одинаковая в двух группах, получающих разное лечение); двусторонняя альтернативная гипотеза будет означать, что различие эффектов не равно нулю.
Критериальная проверка гипотезы дает возможность определить, достаточно ли аргументов, чтобы отвергнуть нулевую гипотезу. Можно принять только одно из двух решений:
- отвергнуть нулевую гипотезу и принять альтернативную гипотезу
- остаться в рамках нулевой гипотезы
Важно: В литературе достаточно часто встречается понятие «принять нулевую гипотезу». Хотелось бы внести ясность, что со статистической точки зрения принять нулевую гипотезу невозможно, т.к. нулевая гипотеза представляет собой достаточно строгое утверждение (например, средние значения в сравниваемых группах равны ).
Поэтому фразу о принятии нулевой гипотезы следует понимать как то, что мы просто остаемся в рамках гипотезы.
Принятие неправильного решения
Возможно неправильное решение, когда отвергают/не отвергают нулевую гипотезу, потому что есть только выборочная информация.
| |
Верная гипотеза | ||
|---|---|---|---|
| H0 | H1 | ||
| Результат применения критерия |
H0 | H0 верно принята | H0 неверно принята (Ошибка второго рода) |
| H1 | H0 неверно отвергнута (Ошибка первого рода) |
H0 верно отвергнута |
Ошибка 1-го рода: нулевую гипотезу отвергают, когда она истинна, и делают вывод, что имеется эффект, когда в действительности его нет. Максимальный шанс (вероятность) допустить ошибку 1-го рода обозначается α (альфа). Это уровень значимости критерия; нулевую гипотезу отвергают, если наше значение p ниже уровня значимости, т. е., если p < α.
Следует принять решение относительно значения а прежде, чем будут собраны данные; обычно назначают условное значение 0,05, хотя можно выбрать более ограничивающее значение, например 0,01.
Шанс допустить ошибку 1-го рода никогда не превысит выбранного уровня значимости, скажем α = 0,05, так как нулевую гипотезу отвергают только тогда, когда p< 0,05. Если обнаружено, что p > 0,05, то нулевую гипотезу не отвергнут и, следовательно, не допустят ошибки 1-го рода.
Ошибка 2-го рода: не отвергают нулевую гипотезу, когда она ложна, и делают вывод, что нет эффекта, тогда как в действительности он существует. Шанс возникновения ошибки 2-го рода обозначается β (бета); а величина (1-β) называется мощностью критерия.
Следовательно, мощность — это вероятность отклонения нулевой гипотезы, когда она ложна, т.е. это шанс (обычно выраженный в процентах) обнаружить реальный эффект лечения в выборке данного объема как статистически значимый.
В идеале хотелось бы, чтобы мощность критерия составляла 100%; однако это невозможно, так как всегда остается шанс, хотя и незначительный, допустить ошибку 2-го рода.
К счастью, известно, какие факторы влияют на мощность и, таким образом, можно контролировать мощность критерия, рассматривая их.
Мощность и связанные факторы
Планируя исследование, необходимо знать мощность предложенного критерия. Очевидно, можно начинать исследование, если есть «хороший» шанс обнаружить уместный эффект, если таковой существует (под «хорошим» мы подразумеваем, что мощность должна быть по крайней мере 70-80%).
Этически безответственно начинать исследование, у которого, скажем, только 40% вероятности обнаружить реальный эффект лечения; это бесполезная трата времени и денежных средств.
Ряд факторов имеют прямое отношение к мощности критерия.
Объем выборки: мощность критерия увеличивается по мере увеличения объема выборки. Это означает, что у большей выборки больше возможностей, чем у незначительной, обнаружить важный эффект, если он существует.
Когда объем выборки небольшой, у критерия может быть недостаточно мощности, чтобы обнаружить отдельный эффект. Эти методы также можно использовать для оценки мощности критерия для точно установленного объема выборки.
Вариабельность наблюдений: мощность увеличивается по мере того, как вариабельность наблюдений уменьшается.
Интересующий исследователя эффект: мощность критерия больше для более высоких эффектов. Критерий проверки гипотез имеет больше шансов обнаружить значительный реальный эффект, чем незначительный.
Уровень значимости: мощность будет больше, если уровень значимости выше (это эквивалентно увеличению допущения ошибки 1-го рода, α, а допущение ошибки 2-го рода, β, уменьшается).
Таким образом, вероятнее всего, исследователь обнаружит реальный эффект, если на стадии планирования решит, что будет рассматривать значение р как значимое, если оно скорее будет меньше 0,05, чем меньше 0,01.
Обратите внимание, что проверка ДИ для интересующего эффекта указывает на то, была ли мощность адекватной. Большой доверительный интервал следует из небольшой выборки и/или набора данных с существенной вариабельностью и указывает на недостаточную мощность.
Проверка множественных гипотез
Часто нужно выполнить критериальную проверку значимости множественных гипотез на наборе данных с многими переменными или существует более двух видов лечения.
Ошибка 1-го рода драматически увеличивается по мере увеличения числа сравнений, что приводит к ложным выводам относительно гипотез. Следовательно, следует проверить только небольшое число гипотез, выбранных для достижения первоначальной цели исследования и точно установленных априорно.
Можно использовать какую-нибудь форму апостериорного уточнения значения р, принимая во внимание число выполненных проверок гипотез.
Например, при подходе Бонферрони (его часто считают довольно консервативным) умножают каждое значение р на число выполненных проверок; тогда любые решения относительно значимости будут основываться на этом уточненном значении р.
Связанные определения:
p-уровень
Альтернативная гипотеза, альтернатива
Альфа-уровень
Бета-уровень
Гипотеза
Двусторонний критерий
Критерий для проверки гипотезы
Критическая область проверки гипотезы
Мощность
Мощность исследования
Мощность статистического критерия
Нулевая гипотеза
Односторонний критерий
Ошибка I рода
Ошибка II рода
Статистика критерия
Эквивалентные статистические критерии
В начало
Содержание портала
Проверка корректности А/Б тестов
Время на прочтение
8 мин
Количество просмотров 10K
Хабр, привет! Сегодня поговорим о том, что такое корректность статистических критериев в контексте А/Б тестирования. Узнаем, как проверить, является критерий корректным или нет. Разберём пример, в котором тест Стьюдента не работает.
Меня зовут Коля, я работаю аналитиком данных в X5 Tech. Мы с Сашей продолжаем писать серию статей по А/Б тестированию, это наша третья статья. Первые две можно посмотреть тут:
-
Стратификация. Как разбиение выборки повышает чувствительность A/Б теста
-
Бутстреп и А/Б тестирование
Корректный статистический критерий
В А/Б тестировании при проверке гипотез с помощью статистических критериев можно совершить одну из двух ошибок:
-
ошибку первого рода – отклонить нулевую гипотезу, когда на самом деле она верна. То есть сказать, что эффект есть, хотя на самом деле его нет;
-
ошибку второго рода – не отклонить нулевую гипотезу, когда на самом деле она неверна. То есть сказать, что эффекта нет, хотя на самом деле он есть.
Совсем не ошибаться нельзя. Чтобы получить на 100% достоверные результаты, нужно бесконечно много данных. На практике получить столько данных затруднительно. Если совсем не ошибаться нельзя, то хотелось бы ошибаться не слишком часто и контролировать вероятности ошибок.
В статистике ошибка первого рода считается более важной. Поэтому обычно фиксируют допустимую вероятность ошибки первого рода, а затем пытаются минимизировать вероятность ошибки второго рода.
Предположим, мы решили, что допустимые вероятности ошибок первого и второго рода равны 0.1 и 0.2 соответственно. Будем называть статистический критерий корректным, если его вероятности ошибок первого и второго рода равны допустимым вероятностям ошибок первого и второго рода соответственно.
Как сделать критерий, в котором вероятности ошибок будут равны допустимым вероятностям ошибок?
Вероятность ошибки первого рода по определению равна уровню значимости критерия. Если уровень значимости положить равным допустимой вероятности ошибки первого рода, то вероятность ошибки первого рода должна стать равной допустимой вероятности ошибки первого рода.
Вероятность ошибки второго рода можно подогнать под желаемое значение, меняя размер групп или снижая дисперсию в данных. Чем больше размер групп и чем ниже дисперсия, тем меньше вероятность ошибки второго рода. Для некоторых гипотез есть готовые формулы оценки размера групп, при которых достигаются заданные вероятности ошибок.
Например, формула оценки необходимого размера групп для гипотезы о равенстве средних:
где и
– допустимые вероятности ошибок первого и второго рода,
– ожидаемый эффект (на сколько изменится среднее),
и
– стандартные отклонения случайных величин в контрольной и экспериментальной группах.
Проверка корректности
Допустим, мы работаем в онлайн-магазине с доставкой. Хотим исследовать, как новый алгоритм ранжирования товаров на сайте влияет на среднюю выручку с покупателя за неделю. Продолжительность эксперимента – одна неделя. Ожидаемый эффект равен +100 рублей. Допустимая вероятность ошибки первого рода равна 0.1, второго рода – 0.2.
Оценим необходимый размер групп по формуле:
import numpy as np
from scipy import stats
alpha = 0.1 # допустимая вероятность ошибки I рода
beta = 0.2 # допустимая вероятность ошибки II рода
mu_control = 2500 # средняя выручка с пользователя в контрольной группе
effect = 100 # ожидаемый размер эффекта
mu_pilot = mu_control + effect # средняя выручка с пользователя в экспериментальной группе
std = 800 # стандартное отклонение
# исторические данные выручки для 10000 клиентов
values = np.random.normal(mu_control, std, 10000)
def estimate_sample_size(effect, std, alpha, beta):
"""Оценка необходимого размер групп."""
t_alpha = stats.norm.ppf(1 - alpha / 2, loc=0, scale=1)
t_beta = stats.norm.ppf(1 - beta, loc=0, scale=1)
var = 2 * std ** 2
sample_size = int((t_alpha + t_beta) ** 2 * var / (effect ** 2))
return sample_size
estimated_std = np.std(values)
sample_size = estimate_sample_size(effect, estimated_std, alpha, beta)
print(f'оценка необходимого размера групп = {sample_size}')
оценка необходимого размера групп = 784
Чтобы проверить корректность, нужно знать природу случайных величин, с которыми мы работаем. В этом нам помогут исторические данные. Представьте, что мы перенеслись в прошлое на несколько недель назад и запустили эксперимент с таким же дизайном, как мы планировали запустить его сейчас. Дизайн – это совокупность параметров эксперимента, таких как: целевая метрика, допустимые вероятности ошибок первого и второго рода, размеры групп и продолжительность эксперимента, техники снижения дисперсии и т.д.
Так как это было в прошлом, мы знаем, какие покупки совершили пользователи, можем вычислить метрики и оценить значимость отличий. Кроме того, мы знаем, что эффекта на самом деле не было, так как в то время эксперимент на самом деле не запускался. Если значимые отличия были найдены, то мы совершили ошибку первого рода. Иначе получили правильный результат.
Далее нужно повторить эту процедуру с мысленным запуском эксперимента в прошлом на разных группах и временных интервалах много раз, например, 1000.
После этого можно посчитать долю экспериментов, в которых была совершена ошибка. Это будет точечная оценка вероятности ошибки первого рода.
Оценку вероятности ошибки второго рода можно получить аналогичным способом. Единственное отличие состоит в том, что каждый раз нужно искусственно добавлять ожидаемый эффект в данные экспериментальной группы. В этих экспериментах эффект на самом деле есть, так как мы сами его добавили. Если значимых отличий не будет найдено – это ошибка второго рода. Проведя 1000 экспериментов и посчитав долю ошибок второго рода, получим точечную оценку вероятности ошибки второго рода.
Посмотрим, как оценить вероятности ошибок в коде. С помощью численных синтетических А/А и А/Б экспериментов оценим вероятности ошибок и построим доверительные интервалы:
def run_synthetic_experiments(values, sample_size, effect=0, n_iter=10000):
"""Проводим синтетические эксперименты, возвращаем список p-value."""
pvalues = []
for _ in range(n_iter):
a, b = np.random.choice(values, size=(2, sample_size,), replace=False)
b += effect
pvalue = stats.ttest_ind(a, b).pvalue
pvalues.append(pvalue)
return np.array(pvalues)
def print_estimated_errors(pvalues_aa, pvalues_ab, alpha):
"""Оценивает вероятности ошибок."""
estimated_first_type_error = np.mean(pvalues_aa < alpha)
estimated_second_type_error = np.mean(pvalues_ab >= alpha)
ci_first = estimate_ci_bernoulli(estimated_first_type_error, len(pvalues_aa))
ci_second = estimate_ci_bernoulli(estimated_second_type_error, len(pvalues_ab))
print(f'оценка вероятности ошибки I рода = {estimated_first_type_error:0.4f}')
print(f' доверительный интервал = [{ci_first[0]:0.4f}, {ci_first[1]:0.4f}]')
print(f'оценка вероятности ошибки II рода = {estimated_second_type_error:0.4f}')
print(f' доверительный интервал = [{ci_second[0]:0.4f}, {ci_second[1]:0.4f}]')
def estimate_ci_bernoulli(p, n, alpha=0.05):
"""Доверительный интервал для Бернуллиевской случайной величины."""
t = stats.norm.ppf(1 - alpha / 2, loc=0, scale=1)
std_n = np.sqrt(p * (1 - p) / n)
return p - t * std_n, p + t * std_n
pvalues_aa = run_synthetic_experiments(values, sample_size, effect=0)
pvalues_ab = run_synthetic_experiments(values, sample_size, effect=effect)
print_estimated_errors(pvalues_aa, pvalues_ab, alpha)
оценка вероятности ошибки I рода = 0.0991
доверительный интервал = [0.0932, 0.1050]
оценка вероятности ошибки II рода = 0.1978
доверительный интервал = [0.1900, 0.2056]
Оценки вероятностей ошибок примерно равны 0.1 и 0.2, как и должно быть. Всё верно, тест Стьюдента на этих данных работает корректно.
Распределение p-value
Выше рассмотрели случай, когда тест контролирует вероятность ошибки первого рода при фиксированном уровне значимости. Если решим изменить уровень значимости с 0.1 на 0.01, будет ли тест контролировать вероятность ошибки первого рода? Было бы хорошо, если тест контролировал вероятность ошибки первого рода при любом заданном уровне значимости. Формально это можно записать так:
Для любого выполняется
.
Заметим, что в левой части равенства записано выражение для функции распределения p-value. Из равенства следует, что функция распределения p-value в точке X равна X для любого X от 0 до 1. Эта функция распределения является функцией распределения равномерного распределения от 0 до 1. Мы только что показали, что статистический критерий контролирует вероятность ошибки первого рода на заданном уровне для любого уровня значимости тогда и только тогда, когда при верности нулевой гипотезы p-value распределено равномерно от 0 до 1.
При верности нулевой гипотезы p-value должно быть распределено равномерно. А как должно быть распределено p-value при верности альтернативной гипотезы? Из условия для вероятности ошибки второго рода следует, что
.
Получается, график функции распределения p-value при верности альтернативной гипотезы должен проходить через точку , где
и
– допустимые вероятности ошибок конкретного эксперимента.
Проверим, как распределено p-value в численном эксперименте. Построим эмпирические функции распределения p-value:
import matplotlib.pyplot as plt
def plot_pvalue_distribution(pvalues_aa, pvalues_ab, alpha, beta):
"""Рисует графики распределения p-value."""
estimated_first_type_error = np.mean(pvalues_aa < alpha)
estimated_second_type_error = np.mean(pvalues_ab >= alpha)
y_one = estimated_first_type_error
y_two = 1 - estimated_second_type_error
X = np.linspace(0, 1, 1000)
Y_aa = [np.mean(pvalues_aa < x) for x in X]
Y_ab = [np.mean(pvalues_ab < x) for x in X]
plt.plot(X, Y_aa, label='A/A')
plt.plot(X, Y_ab, label='A/B')
plt.plot([alpha, alpha], [0, 1], '--k', alpha=0.8)
plt.plot([0, alpha], [y_one, y_one], '--k', alpha=0.8)
plt.plot([0, alpha], [y_two, y_two], '--k', alpha=0.8)
plt.plot([0, 1], [0, 1], '--k', alpha=0.8)
plt.title('Оценка распределения p-value', size=16)
plt.xlabel('p-value', size=12)
plt.legend(fontsize=12)
plt.grid()
plt.show()
plot_pvalue_distribution(pvalues_aa, pvalues_ab, alpha, beta)
P-value для синтетических А/А тестах действительно оказалось распределено равномерно от 0 до 1, а для синтетических А/Б тестов проходит через точку .
Кроме оценок распределений на графике дополнительно построены четыре пунктирные линии:
-
диагональная из точки [0, 0] в точку [1, 1] – это функция распределения равномерного распределения на отрезке от 0 до 1, по ней можно визуально оценивать равномерность распределения p-value;
-
вертикальная линия с
– пороговое значение p-value, по которому определяем отвергать нулевую гипотезу или нет. Проекция на ось ординат точки пересечения вертикальной линии с функцией распределения p-value для А/А тестов – это вероятность ошибки первого рода. Проекция точки пересечения вертикальной линии с функцией распределения p-value для А/Б тестов – это мощность теста (мощность = 1 —
).
-
две горизонтальные линии – проекции на ось ординат точки пересечения вертикальной линии с функцией распределения p-value для А/А и А/Б тестов.
График с оценками распределения p-value для синтетических А/А и А/Б тестов позволяет проверить корректность теста для любого значения уровня значимости.
Некорректный критерий
Выше рассмотрели пример, когда тест Стьюдента оказался корректным критерием для случайных данных из нормального распределения. Может быть, все критерии всегда работаю корректно, и нет смысла каждый раз проверять вероятности ошибок?
Покажем, что это не так. Немного изменим рассмотренный ранее пример, чтобы продемонстрировать некорректную работу критерия. Допустим, мы решили увеличить продолжительность эксперимента до 2-х недель. Для каждого пользователя будем вычислять стоимость покупок за первую неделю и стоимость покупок за второю неделю. Полученные стоимости будем передавать в тест Стьюдента для проверки значимости отличий. Положим, что поведение пользователей повторяется от недели к неделе, и стоимости покупок одного пользователя совпадают.
def run_synthetic_experiments_two(values, sample_size, effect=0, n_iter=10000):
"""Проводим синтетические эксперименты на двух неделях."""
pvalues = []
for _ in range(n_iter):
a, b = np.random.choice(values, size=(2, sample_size,), replace=False)
b += effect
# дублируем данные
a = np.hstack((a, a,))
b = np.hstack((b, b,))
pvalue = stats.ttest_ind(a, b).pvalue
pvalues.append(pvalue)
return np.array(pvalues)
pvalues_aa = run_synthetic_experiments_two(values, sample_size)
pvalues_ab = run_synthetic_experiments_two(values, sample_size, effect=effect)
print_estimated_errors(pvalues_aa, pvalues_ab, alpha)
plot_pvalue_distribution(pvalues_aa, pvalues_ab, alpha, beta)
оценка вероятности ошибки I рода = 0.2451
доверительный интервал = [0.2367, 0.2535]
оценка вероятности ошибки II рода = 0.0894
доверительный интервал = [0.0838, 0.0950]
Получили оценку вероятности ошибки первого рода около 0.25, что сильно больше уровня значимости 0.1. На графике видно, что распределение p-value для синтетических А/А тестов не равномерно, оно отклоняется от диагонали. В этом примере тест Стьюдента работает некорректно, так как данные зависимые (стоимости покупок одного человека зависимы). Если бы мы сразу не догадались про зависимость данных, то оценка вероятностей ошибок помогла бы нам понять, что такой тест некорректен.
Итоги
Мы обсудили, что такое корректность статистического теста, посмотрели, как оценить вероятности ошибок на исторических данных и привели пример некорректной работы критерия.
Таким образом:
-
корректный критерий – это критерий, у которого вероятности ошибок первого и второго рода равны допустимым вероятностям ошибок первого и второго рода соответственно;
-
чтобы критерий контролировал вероятность ошибки первого рода для любого уровня значимости, необходимо и достаточно, чтобы p-value при верности нулевой гипотезы было распределено равномерно от 0 до 1.



