Привет!
В этом видео мы научимся считать z-критерий для двух долей.
Давайте снова рассмотрим задачу про баннеры.
Напомню условия.
Предположим, что мы хотим рекламировать некоторую услугу или товар с помощью
рекламного баннера.
Для этого у нас уже есть некоторый стандартный баннер,
но дизайнеры разработали для нас новый, более прекрасный баннер.
Нам с вами хочется проверить, правда ли, что новый баннер действительно лучше,
чем старый, и нам имеет смысл заменить старый баннер на новый.
А может быть, это не так, и имеет смысл все-таки остаться со старым.
Для того чтобы это понять, мы можем провести следующий эксперимент.
Создаем простую веб-формочку, в которую размещаем оба этих баннера.
Далее просим некоторое количество людей, например, 1000 человек,
на эти баннеры посмотреть и нажать на кнопочку like, если баннер им понравился.
В результате этого эксперимента мы получим следующую выборку данных:
последовательность нулей и единиц для каждого баннера, где ноль будет обозначать
отсутствие клика, то есть ситуацию, когда человеку баннер не понравился,
а единичка — наличие клика, ситуация, когда баннер человеку понравился.
Итак, давайте загрузим соответствующие данные.
Делаем это с помощью библиотеки pandas.
И давайте посмотрим, как они выглядят.
Мы увидим, что у нас ожидаемо два столбца.
Каждый столбец соотвествует своему баннеру,
и каждый столбец состоит из нулей и единиц.
Ноль, если баннер не понравился, то есть клика не было, единичка, если клик был.
Соответственно, нам с вами интересно оценить долю кликов или долю единичек в
каждом случае.
Давайте посмотрим на некоторые простые статистики по нашим данным.
Видим, что количество наблюдений у нас совпадает, по тысяче наблюдений,
и доля кликов в первом случае меньше, чем во втором.
Остальные статистики нам не очень интересны, потому что они очевидные.
Минимально-максимально ноль и единица,
квантили тоже сильно ни о чем в данном случае нам не скажут.
Итак, самое первое и самое простое, что мы можем сделать,
это построить интервальную оценку для доли.
То есть посмотреть, в каком диапазоне эта доля изменяется.
Вот, напоминаю формулу Уилсона для оценки, для интервальной оценки доли.
В данном случае она нам подходит больше,
потому что значение нашей доли довольно близко к нулю.
Мы это увидели в предыдущей таблице.
Вот давайте рассчитаем интервальную оценку с помощью метода proportion_confint из
модуля Stats Models и выведем результаты.
Видим, что мы получили два интервала.
Они довольно узкие, но проблема в том, что они пересекаются.
Давайте рассчитаем некоторые критерии, которые позволят нам проверить гипотезу о
том, что доли действительно отличаются, что они не равны.
Мы с вами будем рассматривать z-критерий для разности долей.
Для того чтобы его посчитать для начала нам нужно рассчитать следующую матрицу.
Она довольно простая.
Нам нужно посчитать количество единиц и количество нулей отдельно для каждого из
баннеров.
Далее, используя эти баннеры, мы с вами, с одной стороны, можем рассчитать
доверительный интервал для разности долей, мы уже учились это делать.
Напоминаю формулу, она перед вами.
А также мы можем рассчитать z-статистику.
Она также считается довольно просто, можете посмотреть на формулы.
И далее, зная z-статистику,
мы с вами можем оценить p.value по z-критерию, для z-критерия.
Вот давайте это сделаем.
Сначала давайте реализуем функцию для рассчета доверительного интервала,
она довольно простая.
В этой функции мы с вами рассчитаем все необходимые слагаемые, а далее подставим
их вот в эту формулу для того чтобы получить левую и правую границы интервала.
Вот давайте это сделаем.
Реализация довольно простая.
И теперь нам нужно с вами реализовать функцию для подсчета z-критерия.
Ну, давайте посмотрим повнимательней.
Чтобы эту функцию реализовать, нам нужно знать две вещи.
Во-первых, нам нужно знать значение z-статистики, формула все еще перед вами.
А во-вторых, нам с вами нужно понимать, на каком уровне мы хотим этот критерий
проверить и рассчитать p.value для того чтобы понять,
можем мы принять нулевую гипотезу или мы должны ее отклонить.
Вот, давайте для начала рассчитаем z-статистику.
Это довольно просто.
Нам с вами нужно знать следующие параметры: N1 и N2 они очевидным
образом получаются из размеров наших выборок.
Дальше рассчитываем P1 и P2, P большое, и подставляем все это в формулу,
таким образом, функция для рассчета z-статистики готова.
Теперь давайте реализуем функцию для подсчета p.value.
Функция получается довольно простая.
В качестве первого аргумента мы передаем в нее метод для рассчета z-статистики, и,
действительно, статистики же можно считать разные, можно их оценивать по-разному,
поэтому давайте использовать метод для рассчета z-статистики в качестве аргумента
этой функции.
И вторым аргументом будет вид альтернативы.
Ведь мы с вами сможем рассматривать как двустороннюю альтернативу, ну,
например, так: гипотеза h0 в этом случае будет то, что у нас доли одинаковые,
а альтернатива — то, что доли разные, неодинаковые.
А также можем рассмотреть два вида односторонних гипотез, less и greater,
меньше и больше.
В этом случае альтернативная гипотеза была бы, что первая доля больше,
чем другая, в противоположном — первая доля меньше, чем другая.
Как это посчитать?
Ну, давайте сначала сделаем небольшую проверку, что корректно введен
тип альтернативы, проверим, что наши альтернативы, введенные альтернативы
находятся среди трех возможных, и если это не так, выкинем в исключение ValueError,
в котором напишем, что нужно задать одну из трех предусмотренных альтернатив.
Если мы с вами рассматриваем двустороннюю альтернативу,
то сначала нам нужно посчитать, значение функции распределения стандартного
нормального распределения в точке z-stat, то есть в той точке,
которая соответствует значению z-статистики, рассчитанной на ???
Дальше нам нужно из единицы вычесть это значение и,
воспользовавшись свойством симметричности, просто умножить это на два.
В случае, если мы рассматриваем альтернативу less,
нам нужно просто посчитать значение функции распределения в точке z-stat,
и если мы рассматриваем альтернативу greater,
мы с вами рассматриваем другой конец, соответственно,
считаем единичку минус значение функции распределения в точке z-stat.
Видим, что реализация довольно простая.
Итак, давайте сначала выведем доверительный интервал на разность двух
долей, вот он перед вами,
видим, что он включает ноль, и теперь давайте проверим критерии.
Сначала давайте тестировать двустороннюю альтернативу.
Соответственно, гипотеза того, что доли одинаковые, против гипотезы,
что доли неодинаковые.
Итак, вводим p.value, видим, что p.value равняется 0.08.
Ну, понимаем, что на уровне значимости 95 мы не можем отвергнуть нулевую гипотезу,
ну, по крайней мере, на уровне значимости 0,9 можем.
Что, если мы с вами воспользуемся предположением,
что новый баннер все-таки лучше, чем старый, ну, он же более красивый,
с котиками, и проверим гипотезу против альтернативы less.
Да, видим, что в этом случае p.value уже равняется 0,04, а значит,
мы можем отвергнуть гипотезу h0 о том, что доли одинаковые, на уровне значимости 95.
Теперь давайте рассмотрим следующий случай.
Предположим, что люди, которые оценивали 1 и 2 баннер, это одни и те же люди.
То есть мы зафиксировали выборку людей и попросили каждого из
них посмотреть на оба баннера и нажать на like, если какой-то из них им понравился.
Для того чтобы рассчитать z-критерий для разности долей в случае связанных выборок,
нам с вами нужно рассчитать таблицу сопряженности.
Фиксируем значение единицы и ноль для первого и для второго баннера и дальше
рассчитываем количество наблюдений, которые этим значениям соответствуют.
Напомню формулу для рассчета доверительного интервала,
мы с вами с ней уже знакомы.
И z-статистика принимает следующий вид.
Давайте это реализуем.
Для начала реализуем формулу для оценки доверительного интервала.
Тоже это делается довольно просто.
Сначала рассчитываем все те слагаемые, которые нам нужны.
Дальше аккуратненько выписываем левую и правую границы интервала.
И теперь давайте реализуем формулу для подсчета z-статистики.
Опять же смотрим на формулу, которая перед нами, понимаем,
что нам нужно знать слагаемые f, g и n рассчитываемых,
и дальше выписываем выражение для z-статистики.
Для того, чтобы рассчитать p.value мы можем воспользоваться функцией,
которую мы уже ранее реализовали, разница будет в том,
что для оценки p.value мы просто передадим в предыдущую функцию в качестве
аргумента другую статистику, ту, которую мы только что реализовали.
Итак, выписываем доверительный интервал.
Мы видим, что весь доверительный интервал лежит левее нуля.
Это дает нам основание предполагать, что новый баннер действительно лучше,
чем старый.
Ну, теперь давайте это проверим с помощью z-критерия.
Итак, сначала будем использовать двустороннюю альтернативу, проверим
гипотезу h0, что у нас доли одинаковые для двух баннеров против гипотезы,
что доли неодинаковые.
Итак, проверяем наш z-test, видим, что p.value получается довольно маленьким,
всего 0,003.
Получается, что уже на уровне значимости 99 мы можем опровергнуть гипотезу h0,
но так как мы с вами изначально предполагаем, что новый баннер лучше,
чем старый, давайте также выпишем p.value для односторонней альтернативы less.
Итак, видим, что p.value стал еще меньше,
значит мы еще уверенней можем отвергнуть нулевую гипотезу.
На этом мы с вами заканчиваем.
Мы научились считать z-критерий для двух долей в случае связанных и несвязанных
выборок, а на следующем занятии вы познакомитесь с
непараметрическими критериями для проверки статистических гипотез.