Проверка гипотез и p-value | Вероятность и статистика #5

Поділитися
Вставка
  • Опубліковано 8 лип 2024
  • Покупайте мой курс по А/Б-тестам stepik.org/a/194930 Скидка 20% по промо коду UA-cam
    Подписывайся на Телеграм t.me/mikhaylovgleb
    0:00 Начало стрима
    5:46 Менеджер Виноградного дня и удовлетворенность клиентов (пример)
    19:50 Фрейморк проверки гипотез
    26:09 P-value на гистограмме
    34:15 Новый лендинг Виноградного дня (пример)
    48:57 Загадка двухстороннего теста
    1:03:58 Уровень значимости (alpha)
    1:12:17 Alpha - это вероятно допустить ошибку первого рода (проверка на симуляции)
    1:24:16 P-value распределено нормально (уличная магия)
    1:32:44 Мощность
    1:52:06 Конец стрима и еще немного магии
    Ноутбук: colab.research.google.com/dri...

КОМЕНТАРІ • 67

  • @mlpython1089
    @mlpython1089 2 роки тому +10

    Спасибо, Глеб, отличные уроки!
    1. На 1:35:58 ты выборкам А и В ставишь конверсию 0.1 и 0.12, а при расчете pval оставляешь старую конверсию 0.118. Её нужно было пересчитать?
    2. Почему мы полагаем что выборки А и В - это биномиальные распределения? У нас ведь есть только 700 и 300 наблюдений по каждой и мы не можем из этого предположить, что среднее это n*p, а дисперсия это n*p*q как у биномиального распределения.

    • @GlebMikhaylov
      @GlebMikhaylov  2 роки тому

      Привет!
      1) Да, там косяк. Конверсия для нулевой гипотезы вообще нужно каждый раз пересчитывать! Я обновил в ноутбуке, можешь посмотреть как это должно выглядеть. colab.research.google.com/drive/1IoV10W-tDvWnA-VpvhzW4ewMOrc4ppWC?usp=sharing Спасибо огромное, что заметил и написал!
      2) Когда у нас может быть либо 0 либо 1, то это не может быть ни чем кроме биномиального распределения. Если точнее, то это распределение Бернулли, но Бернулли это частный случай биномиального. И нам не важны его параметры: если только нолики и единички, то все, мы имеем дело с Бернулли.

    • @mlpython1089
      @mlpython1089 2 роки тому

      @@GlebMikhaylov
      1) Думаю, тут все же не пересчет конверсии нужен а объединение выборок A и В в одну с дальнейшим семплированием из них двух других выборок А и В без возвращения.
      Типа так:
      def resample_diff(a, b):
      ab = np.hstack((a, b))
      np.random.shuffle(ab)
      return abs(ab[:len(a)].mean() - ab[len(a):].mean())
      И уже их надо использовать в расчете выпивал:
      pval = np.mean([resample_diff(a, b) >= diff for _ in range(1000)])
      Если перейти к задачам с непрерывными случайными величинами, то объединение выборок с последующим семплированием из них новых выборок (без возвращения) кажется более логичным. Поскольку мы не должны создавать новые случайные величины.

    • @GlebMikhaylov
      @GlebMikhaylov  2 роки тому

      @@mlpython1089 Да, все верно, лучше всего объединять выборки и бутстрепить с них, но всегда обязательно с повторением! Вот почему: stats.stackexchange.com/a/171452/111782
      В случае с 1 и 0 не важно генерим мы из распределения с заданной вероятностью или из объединенных выборок, т.к. там только нолики и единички. И как раз повторение превращает нашу объединенную выборку в генератор (распределение)
      А вот в случае непрерывной величины, мы уже не знаем распределение, и нам остается только бутстрапить из объединенных выборок, но обязательно с повторением, иначе не будет эффекта генератора.

    • @mlpython1089
      @mlpython1089 2 роки тому

      @@GlebMikhaylov Понял. Теряется принцип независимости выборок если не делать возвращение.

  • @user-ci6vx2bs2p
    @user-ci6vx2bs2p 2 роки тому +44

    2 часа благотворительной работы, Глеб the best. На ODS тебе надо памятник поставить )!. Никак не получается на онлайн попасть, смотрю офлайн ), спасибо тебе 🔥💪

  • @matveypopkov3414
    @matveypopkov3414 2 роки тому +13

    Глеб, просто респект! Не могу смотреть обычно онлайн, но потом обычно раза по 2 пересматриваю)

  • @susannasusanna5329
    @susannasusanna5329 20 днів тому

    Очень полезное занятие. Спасибо, Глеб 🤗

  • @homerj.6317
    @homerj.6317 Рік тому

    Спасибо, Глеб, очень классный формат!
    Впервые увидел твой видос, по рекомендации, очень понравилось, буду смотреть 👍

  • @tonycorsia1369
    @tonycorsia1369 2 роки тому +6

    Посмотрел твои старые видики про практическое тыкание регрессий и градиент буста - топ контент, волк тигр леопард

  • @user-sl7hy3yf6f
    @user-sl7hy3yf6f 2 роки тому +3

    Глеб, спасибо большое!

  • @user-ed1hy3by5p
    @user-ed1hy3by5p 2 роки тому +3

    Ты реально крут! Информативно, понятно и интересно.

  • @Aporlev
    @Aporlev Рік тому

    Спасибо за подробный разбор, благодаря ему пришло понимание как находить и использовать p-value

  • @antongerasimov2298
    @antongerasimov2298 Рік тому +3

    огонь! лучшее объяснение p-value для айтишника, без всякой статистической лабуды :)

  • @oldzas
    @oldzas 2 роки тому +2

    Спасибо Глеб!

  • @ARTYKRAFTY42
    @ARTYKRAFTY42 2 роки тому +7

    Спасибо. Легче становится понимать некоторые аспекты ML - особенно нравится про ошибки и связки с recall и precision - и уже статистика кажется не такой страшной. Попробовал уже доверительные интервалы считать на предсказания моделей в регрессии :)) Теперь хочется все обсчитывать :))

  • @user-tm2sx8pq2h
    @user-tm2sx8pq2h 9 місяців тому

    Мощно как всегда, спасибо, от души!

  • @user-ug1kd6lq7s
    @user-ug1kd6lq7s Рік тому +1

    Глеб, спасибо большое, очень мощно

  • @iugulava
    @iugulava 11 місяців тому

    Супер подкаст, Спасибо большое.

  • @valerapopov3286
    @valerapopov3286 11 місяців тому

    Абсолютное золото! Несколько дней смотрел по несколько часов видосов о статтистике и аб-тестах. Было понятно ну так себе. И только тут я всё понял, я просветлился, аааааааааа

  • @romanlapin178
    @romanlapin178 2 роки тому +1

    Глеб, почему так мало подписчиков???!!! Ты достоин большего)

  • @arigold2596
    @arigold2596 Рік тому

    Офигенный, как говориться, хьюмор)

  • @reisedurchdiemathe
    @reisedurchdiemathe 6 місяців тому

    По поводу уличной магии... Ну, смотрите, если я правильно понял, у нас две выборки из одного и того же распределения (неважно какого), и мы считаем их средние значения a и b, а затем считаем p-value как функцию вида:
    p-value = p(epsilon) = P[|a-b|

  • @user-tm2sx8pq2h
    @user-tm2sx8pq2h 9 місяців тому

    Среднестатистические юзеры виноградного дня (с). Сохранил в памяти)

  • @gastado8751
    @gastado8751 Рік тому

    Как же ты хорош

  • @denver_batya
    @denver_batya 2 роки тому

    У Глеба дар рассказывать интересно то, от чего прост засыпаешь)

  • @user-sx3lu6dx1z
    @user-sx3lu6dx1z 9 місяців тому

    Спасибо за видео и за ноутбук, мне даже захотелось попробовать этот чудо напиток дня😂

  • @antongerasimov2298
    @antongerasimov2298 Рік тому +1

    С коронавирусом хороший пример. Ошибка первого рода - тест показывает 1, когда человек здоров - достаточно мала. Тогда как ошибка второго рода - больному ставят отрицательный результат - достаточно высока (чуть ли не под 30%). Из-за этого во многом народ считал эти тесты бесполезными.

  • @BoQbL1k
    @BoQbL1k Рік тому

    Очень круто Глебаджо! скажи пожалуйста, можно ли считать в таком формате размер выборки, если ее метрика распределена слишком смещено влево?

  • @user-sh8yi2yj7v
    @user-sh8yi2yj7v Рік тому

    Глеб, держи леопарда! Очень полезные уроки

  • @armat_it
    @armat_it 9 місяців тому

    На моменте с объяснением равномерного распределения p-value ушел сам че т рисовать и моделировать, замучал chat gpt, но так и не понял. Затем ты рассказал про равновероятные точки и тут дошло!
    У нас ведь распределение с холмиком получается за счет того, что на каждом равном интервале у нас разное количество точек, где кучность концентрируется около среднего.
    Но если вероятность выпадения каждой точки одинаковая, то, если многократно собирать выборки из этой совокупности, у нас получится, что каждая точка выпала примерно по разу. Аналогично с двумя выборками и, соответственно, разницей между ними. Таким образом на гистограмму p-value ляжет каждая точка совокупкости, а кучности не будет, потому что шаг в p-value - это не значение точки, а вероятность.
    Короч - если бы мы на этот же график нанесли ещё и значения, для которых считался p-value, то был бы холм в районе единицы, потому что большинство точек сконцентрировано у нуля (мы же разницу считаем, а средняя разница у выборок из одной совокупности будет равна нулю). Но тут другое, тут просто вероятность выпадения каждой точки, которая отделена от значений этих точек - то есть просто статистика выпадания каждого n эксперимента, как в примере с подсчетом порядковых номеров каждой точки.

  • @zukaroc
    @zukaroc 2 роки тому +1

    1:45
    - В общем, жил был один мужик, было ему лет тридцать. Сел он один раз смотреть программу «Время». Включил телевизор, подвинул кресло, чтоб удобней было. Там сначала появились часы - ну, как обычно. Он, значит, свои проверил - правильно ли идут. Все как обычно было. Короче, пробило ровно девять часов. И появляется на экране слово «Время», только не белое, как всегда раньше было, а почему-то черное. Ну, он немножко удивился, но потом решил, что это просто новое оформление сделали, и стал смотреть дальше. А дальше все опять было как обычно. Сначала какой-то трактор показали, потом израильскую армию. Потом сказали, что какой-то академик умер, потом немного показали про спорт, а потом про погоду - прогноз на завтра. Ну все, «Время» кончилось, и мужик решил встать с кресла.
    - Потом напомните, я про зеленое кресло расскажу, - влез Вася.
    - Значит, хочет он с кресла встать и чувствует, что не может. Сил совсем нет. Тогда он на свою руку поглядел и видит, что на ней вся кожа дряблая. Он тогда испугался, изо всех сил напрягся, встал с кресла и пошел к зеркалу в ванную, а идти трудно… Но все-таки кое-как дошел. Смотрит на себя в зеркало и видит - все волосы у него седые, лицо в морщинах и зубов нет. Пока он «Время» смотрел, вся жизнь прошла.
    Пелевин))

  • @Oleg86F
    @Oleg86F 10 місяців тому

    @GlebMikhaylov По поводу почему двусторонний чаще всего используется в А, Б тесте: например я решил сделать односторонний тест с альтернативой типа конверсия будет больше, и получил высокое p value, могу подумать что нулевую отвергнуть не получилось (мол лендинги одинаковые), но при этом конверсия нового лендинга может быть в сто раз ХУЖЕ старого. и если глазами на нее не посмотреть то по p-value ты никакой аномалии не заметишь оно будет высоким в этом тесте. в случае же двустороннего теста ты увидишь низкое p-value как для случая когда конверсия ниже и когда она выше, то есть ты поймешь что выборки точно не одинаковы, а в какую сторону это как тебе чел написал - глазами посмотреть

  • @sultanryskulov2678
    @sultanryskulov2678 Рік тому

    Глеб, по поводу загадки двустороннего теста. Разве нельзя до модуля проверить разницу между каждыми наблюдениями? Если будет отрицательное значение средней разницы, то она негативная, например.

  • @_Andrew_Parker_
    @_Andrew_Parker_ 2 місяці тому

    @GlebMikhaylov
    Глеб привет! Подскажи пожалуйста на 28:00 площадь левее 0,75 (вероятность - 12,5%)
    А вероятность получить удовлетворенность 0,8 и ниже это всего лишь около 50%?

  • @dickey_mickey
    @dickey_mickey Рік тому

    🐆

  • @user-px6ve1bs5e
    @user-px6ve1bs5e 3 місяці тому

    После просмотра трансляции понимаешь, что N лет работал на ощупь - вроде делал всё правильно, но хз почему делал именно так. А теперь как будто линзы контактные надел и прозрел. Нет, как будто сделал лазерную коррекцию зрения. Гранд мерси!

  • @user-jh1vx3vx1c
    @user-jh1vx3vx1c Рік тому

    а так что в итоге, лэндинг лучше или нет? мы вроде проверили только, что вероятность того, что разницы нет меньше 1%. А вероятность того, что лэндинг хуже или лучше как проверить

  • @Oleg86F
    @Oleg86F 10 місяців тому +1

    Про уличную магию я чего то совсем не понял что Глеб хотел пояснить. Типа построил гистограмму ряда от 1 до 1000, (ну или от 0.001 до 1) и удивляешься, что количество чисел в диапазоне 1-200 такое же как в диапазоне 201-400 и в 401-600 итд?! эмм что тут магического. А про равномерное распределение p-value интересно, спасибо!

    • @armir6063
      @armir6063 9 місяців тому

      Тоже самое подумал

  • @igorkimrb
    @igorkimrb 2 роки тому

    Глеб, очень крутые стримы. Почему мы посчитали общую конверсию с учетом обеих групп 0.118, а не взяли конверсию первой группы 0.10? Ведь мы говорим, что вторая группа не отличается от первой. Этот момент мне сложно принять.

    • @GlebMikhaylov
      @GlebMikhaylov  2 роки тому +2

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

  • @andrewh2144
    @andrewh2144 10 місяців тому

    Все начиналось с удовлетворения от виноградного дня, а закончилось MDEma

  • @Zacher772
    @Zacher772 Рік тому

    Не могу загуглить что означает z статистика - первое значение, которое возвращает тест пропорций. На гитхабе из кода вывести формулу пытался, но очень запутано для меня. Все ресурсы, всегда опускают описание этой статистики. Пожалуйста, подскажи, что она означает?

  • @bin5460
    @bin5460 2 роки тому

    Привет,, не могу понять определение бутстрап - "имитировать многократное получение выборки из генеральной совокупности, используя данные из имеющейся у нас выборки.", в вашем видео мы скорее создаем выборки на основе уже имеющихся условий (которые нам дал менеджера виноградного дня) новые выборки, а не используем уже имеющуюся. Слегка запутался.

    • @GlebMikhaylov
      @GlebMikhaylov  2 роки тому +1

      Я вообще часто использую взаимозаменяемо бутстреп и Монте-карло. Я называю так процессы, где мы генерим выборки, не важно из распределения или другой выборки.
      В пример с менеджером Виноградного дня мы действительно генерим выборки из распределения с параметрами нулевой гипотезы. И ни как не используем выборку с данными. Бутстрепить выборку с данными мы тут можем например для определения доверительного интервала.
      Но чаще всего бутстрепом называют процесс генерации выборок из другой выборки. Например, если у нас есть две группы, то мы можем объединить эти группы в одну и тем самым получить условия нулевой гипотезы, что разницы нет. И за тем из этой объединенной выборки генерить выборки и смотреть в скольки случаях они будут отличаться.

  • @sergeyshimkiv1202
    @sergeyshimkiv1202 2 роки тому +1

    Получается что df['pct'].hist() - это распределение p-value? И оно всегда будет равномерным, вне зависимости от типа первоначального распределения?

    • @GlebMikhaylov
      @GlebMikhaylov  2 роки тому +2

      Не поверишь, вот сам час назад об этом думал)).
      Если мы отойдем от проверки гипотез и определим p-value, как вероятность получить такое же или меньшее значение (или по модулю, чтобы было с обеих сторон), то да, p-value всегда будет равномерным.
      Единственное, если переменная будет дискретной и ее значения могут повторяться, то тогда будет сложно отсортировать значения, и следовательно посчитать p-value. В дискретном случае равномерность p-value можно получить только если мы рандомно отсортируем одинаковые значения.
      И тут у тебя должен возникнуть вопрос: но почему тогда мы иногда получаем не равномерно распределенное p-value? Тут уже в игру вступают гипотезы. Неравномерное распределение мы можем получить в двух случаях: 1) нулевая гипотеза не верна 2) тест не подходит под наши данные.
      В первом случае мы считаем p-value на основе распределения среднего согласно нулевой гипотезе на сэмплах, которые приходят из другого распределения.
      Во втором случае, мы так же считаем p-value на основе распределения среднего согласно нулевой гипотезе, которое по ЦПТ должно быть нормальным, но наше реальное выборочное среднее распределено ненормально.
      Вот тут еще много обсуждений почему p-value при нулевой гипотезе распределен равномерно. stats.stackexchange.com/questions/10613/why-are-p-values-uniformly-distributed-under-the-null-hypothesis

    • @sergeyshimkiv1202
      @sergeyshimkiv1202 2 роки тому

      @@GlebMikhaylov На соседней вкладке уже открыта эта ссылка)))

    • @d14400
      @d14400 2 роки тому

      @@GlebMikhaylov Глеб, pct - это range(1,1001)/1000 - равномерно банально (и потому идеальная прямая). Делай столбец такой хоть к распределению Парето - будет равномерность. Не улавливается связь к нормальному распределению

  • @baxai_
    @baxai_ 2 роки тому +3

    Глеб, привет
    Ты в конце, при подсчете мощности, в цикле, когда считал pval с помощью монте-карло, забыл выборкам поменять размер на 680
    Для контрольных поменял, а для тех, с помощью которых считаешь pval похоже забыл

    • @baxai_
      @baxai_ 2 роки тому +1

      Поменял на 680, мощность получилась 0.803

    • @GlebMikhaylov
      @GlebMikhaylov  2 роки тому +1

      Точняк! Спасибо! Затупил чето

    • @keeperfclm
      @keeperfclm 2 роки тому

      @@GlebMikhaylov и среднее у тебя при генерации выборок для подсчёта pval тоже не поменяно и 0.118 стоит, а при первом эксперименте, где 10% и 12% конверсия надо 0.106 (тут я не проводил эксперимент, но такое ощущение, что можность будет сильно выше, чем получилось), при втором 0.115 (ну здесь, наверное, сильно не изменится)

  • @omnomnompus
    @omnomnompus Рік тому

    У нас же есть изначальное значение конверсии, и мы видим что оно больше либо меньше, вот мы и проверяем статзначимость, а если устанавливаем ее - значит изначальное значение разницы в конверсии имеет правильное направление, разве нет?

    • @GlebMikhaylov
      @GlebMikhaylov  Рік тому

      да, я тоже это так понимаю

  • @user-ne4ys9mj8b
    @user-ne4ys9mj8b Рік тому

    а где видос с разборками по виноградному дню и калькулятору а-б тестов?)
    поделитесь ссылкой плиз

    • @user-ne4ys9mj8b
      @user-ne4ys9mj8b Рік тому

      попалось в реки само:
      ua-cam.com/video/PqDtQgjPiTk/v-deo.html

  • @user-ti5jo3qi4n
    @user-ti5jo3qi4n 10 місяців тому

    Глеб, когда новые видео??)) так как ты можешь изложить инфу никто не может !!!

  • @antongerasimov2298
    @antongerasimov2298 Рік тому

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

    • @antongerasimov2298
      @antongerasimov2298 Рік тому

      Возможно, твой вопрос в том, почему учитывая оба варианта различия (второй лендинг и лучше и хуже), и получая p-value из этих соображений, мы, тем не менее делаем вывод, что второй лендинг именно лучше, а не хуже?

    • @antongerasimov2298
      @antongerasimov2298 Рік тому

      Так тут тоже, вроде, все интуитивно понятно. У нас же по факту получилась конверсия больше: 0.16 против 0.1. Наблюдать такую разницу в кейсе, когда вторая страница на самом деле хуже - еще менее вероятно, чем исходную нулевую гипотезу. Все очевидно ж, нет?

    • @GlebMikhaylov
      @GlebMikhaylov  Рік тому +1

      Ну дело в том, что это обычно не проговаривается явно.

  • @Diabolic9595
    @Diabolic9595 Рік тому

    Все же один момент мне не понятен. p-value - это же по сути вероятность события, которое противоречит нулевой гипотезе. Так почему же если эта вероятность меньше, то мы должны отвергать её, если она своей незначительностью подтверждает эту гипотезу?

    • @GlebMikhaylov
      @GlebMikhaylov  Рік тому

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

    • @Diabolic9595
      @Diabolic9595 Рік тому

      @@GlebMikhaylov аа, все, теперь понял принял обработал. Спасибо❤

  • @alekseyfomin7921
    @alekseyfomin7921 5 місяців тому

    А кто-нибудь может пояснить, почему получается разный pvalue в задаче про соцопрос при разных методах?
    pvalue = scipy.stats.binom.cdf(75, 100, 0.8)
    from statsmodels.stats.proportion import proportions_ztest as pz
    _, pvalue = pz(75, 100, 0.8, alternative='smaller')