А/Б тесты: пропорции | Вероятность и статистика #6

Поделиться
HTML-код
  • Опубликовано: 21 ноя 2024

Комментарии • 38

  • @matveypopkov3414
    @matveypopkov3414 3 года назад +14

    Это просто божественно) на столько просто и понятно что даже бабки да лавках поймут и пойдут в Гугл пилить а/б тесты) просто респектище)

  • @АлексейСидоров-б3з
    @АлексейСидоров-б3з 3 года назад +17

    Глеб, спасибо. Ты очень много делаешь для страны!

  • @Aporlev
    @Aporlev Год назад +1

    Лучшего и доступного для меня объяснения мощности (проблема классификации) прямо-таки на пальцах я не встречал, отличное видео, спасибо!

  • @baxai_
    @baxai_ 3 года назад +5

    Посмотреть все видосы Глеба это скорее эпик, который надо разбить на задачи😂

  • @GlebMikhaylov
    @GlebMikhaylov  3 года назад +10

    Тест Манна - Уитни я запускал неправильно! В colab установлена старая версия statmodels и надо обязательно указывать alternative='two-sided'. Иначе получается не то, что нужно. Но в целом принцип тестирования теста сработал: мы отказались от этой вариации Манна - Уитни.

    • @mlpython1089
      @mlpython1089 2 года назад

      в Jupiter Notebook такая же проблема - нужно указывать "two-sided"

    • @GlebMikhaylov
      @GlebMikhaylov  2 года назад +1

      @@mlpython1089 В локальном jupyter ты можешь обновиться до новой версии и тогда, и тогда у тебя будет по дефулту two sided. В colab тоже можно обновиться, но это нужно делать для каждого ноутбука, что не удобно. Но в целом, я считаю, что всегда лучше все указывать явно и не оставлять ничего на дефулт. Как видишь, я усвоил этот урок hard way что называется)

    • @armat_it
      @armat_it Год назад

      Попробовал с two-sided и у меня получилось 0.05.
      import pandas as pd
      import numpy as np
      from tqdm.notebook import tqdm
      from scipy import stats
      result_mv = []
      for _ in tqdm(range(10000)):
      a = np.random.binomial(1,0.15,size=1000)
      b = np.random.binomial(1,0.15,size=1000)
      _,pval = stats.mannwhitneyu(a,b,alternative='two-sided')
      result_mv.append(pval)
      Почему тогда нужно отказываться от Манна - Уитни?

    • @ВераНовикова-ч6ю
      @ВераНовикова-ч6ю 5 месяцев назад

      @@armat_it та же ерунда: (t < 0.05).mean() с mannwhitneyu дает 0.0472

  • @AlexeyBelozerov-j1d
    @AlexeyBelozerov-j1d Год назад

    Отличные видео, смотрю все почти, ибо начал этот непростой путь ДС, очень бодро и познавательно, спасибо, от души!

  • @kattynia5956
    @kattynia5956 3 года назад +2

    И спасибо огромное за такие офигенские лекции! Даже начало в голове что-то укладываться, причем на практике уже имела дело с тестами, но не понимала до конца, как что и почему. Как мощны леопардовы лапищи!

  • @Jagerman767
    @Jagerman767 11 месяцев назад

    Спасибо. Глеб красава)

  • @KirillP-b1v
    @KirillP-b1v 3 года назад +3

    Видео топ конечно, интуитивно теперь всё понятно, спасибо)
    Есть вопрос: Что по Хи-Квадрату, ты имел ввиду что он равен Z тесту по результату и мощности? Не получилось у меня его применить в твоем коде

    • @GlebMikhaylov
      @GlebMikhaylov  3 года назад +2

      Нет. Они полностью эквивалентны математически. Для двух пропорций они дают абсолютно одинаковые результаты. Вот пример colab.research.google.com/drive/1L20YHu079C8zaUxOT4eZmMaOt-dyWFjq?usp=sharing

  • @delkaaaa
    @delkaaaa Год назад

    1:31:00....О! Вот это я уже понимаю!)))))

  • @andrewh2144
    @andrewh2144 Год назад

    Луч света в темном царстве статистики

  • @АннаПяткина-п2ф
    @АннаПяткина-п2ф 2 года назад

    "Это обезьяна ЧИ-Чи-ЧИ, все помнят чем закончилась эта история" Ржу))) Спасибо, Глеб, что у тебя классное ЧЮ, кроме прочих талантов!

  • @ВадимАхметов-ц3э
    @ВадимАхметов-ц3э 2 года назад

    На фразе «ныряй за жемчужинами» вспомнилось произведение Чака Паланика) «Кишки») сложный мем)

    • @zukaroc
      @zukaroc 2 года назад

      Фуу, Господи, почему я это читала и поняла мем -_- ))

  • @arigold2596
    @arigold2596 2 года назад

    Подписался! Спасибо!

  • @rkekelwlw
    @rkekelwlw Год назад

    Не понимаю, почему мы можем использовать t-test для биномиального распределения кликов?

  • @ВладПетров-ж2м
    @ВладПетров-ж2м 6 месяцев назад

    Ребят, я жёстко туплю и не догоняю, если мы делаем АА тест, и у нас заведомо разницы нет, мы получаем p value 0.05, а одна из трактовок p value - вероятность получить такие значения или более выраженные, если нулевая гипотеза верна, то почему так? Если у нас заведомо разницы нет, то как мы получаем всего 5% вероятность получить такие значения, это же капец как мало

  • @igorkimrb
    @igorkimrb 2 года назад +1

    Глеб, подскажи, а что делать в такой ситуации: предположим мы на время поведения A/Б теста предполагали конверсию 20% у контрольной группы, а эффект = 5%.
    Но по факту контрольная группа повела себя по-другому и мы получили конверсию контрольной группы = 15%, а тестовой 20%. Эффект 5% есть, но конверсии не сходятся с тем, что мы заложили до.

    • @GlebMikhaylov
      @GlebMikhaylov  2 года назад +1

      Я думаю, что если разница значимая, то можно считать тест успешным, и отметить, что общая конверсия по процессу понизилась.

  • @kattynia5956
    @kattynia5956 3 года назад

    Вопрос про значение p-value: (где z-test считаешь) когда выпал 2.15 с чем-то, ты сказал, что это мизерный эффект. То есть это ок, и с данными в этом случае все может быть нормально, если p-value > 1?

    • @GlebMikhaylov
      @GlebMikhaylov  3 года назад +1

      Дай пожалуйста тайм код, чтобы я лучше понял о чем идет речь. И сразу: p-value не может быть больше единицы: это вероятность, а вероятность может быть от 0 до 1.

    • @ДенисСафронов-п3е
      @ДенисСафронов-п3е 2 года назад +2

      30:44 Посмотри на конец числа. Там e-05. Число в научном формате 2.71 * 10^(-5)

  • @sergeyshimkiv1202
    @sergeyshimkiv1202 3 года назад +1

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

    • @GlebMikhaylov
      @GlebMikhaylov  3 года назад +5

      Привет! Потому что когда выборки одинаковые это значит, что верна нулевая гипотеза, и если p-value получается < 0.05 то мы ловим ложное срабатывание, т.е. неверно отвергаем нулевую гипотезу, это так же называется ошибкой первого рода.
      А когда выборки у нас разные это значит, что нулевая гипотеза не верна, и если p-value получается < 0.05 то происходит верное срабатывание, т.е. мы отвергаем неверную нулевую гипотезу, мы детектим эффект. Это называется мощность или еще hit rate или recall -- какой процент ситуация где присутствует реальный эффект мы верно детектим.

  • @АлексейТаганрогов
    @АлексейТаганрогов 2 года назад

    Поясните, кто может.
    Почему доля экспериментов, в которых p-value меньше 5%, равна мощности, т.е. доле обнаруживаемых успешных экспериментов?
    Ведь, если p-value меньше 5%, то это свидетельствует о низкой достоверности полученного результата (насколько я понимаю).
    Но чем больше доля экспериментов с таким p-value, тем выше мощность.
    Какое-то противоречие...

    • @GlebMikhaylov
      @GlebMikhaylov  2 года назад +1

      Тут важно понимать, что когда мы тут считаем мощность, то генерим выборки из разных распределения, т.е. у нас заведомо есть эффект, заведомо есть разница, заведомо неверна нулевая гипотеза.
      Что такое p-value? Это вероятность получить такие же или более экстремальные результаты при верной нулевой гипотезе. Если p-value маленькая, то мы отвергаем нулевую гипотезу.
      Здесь у нас нулевая гипотеза заведомо не верна, поэтому p-value должны по хорошему все быть очень маленькими.
      Поэтому, чем больше маленьких p-value получилось на наших заведомо успешных экспериментах, тем выше мощность теста: он хорошо умеет обнаруживать наличие разницы, умеет обнаруживать эффект.

    • @АлексейТаганрогов
      @АлексейТаганрогов 2 года назад

      @@GlebMikhaylov Спасибо!

  • @bliz_fa_krik140
    @bliz_fa_krik140 2 года назад

    Про баланс классов, когда recall для 0 у нас 0,95, а для 1ого 0,8 разве это не значит в 95% случаев когда эксперимент не успешен мы говорим, что он не успешен, а в 80% случаев когда он успешен, мы говорим, что он успешен? Это же бьется с теорией? Мне непонятно почему это работает с recall, но не работает с precision. Как это объяснить?

    • @GlebMikhaylov
      @GlebMikhaylov  2 года назад

      Про рекол все верно написал. А почему для пресижн не работает?

    • @bliz_fa_krik140
      @bliz_fa_krik140 2 года назад

      @@GlebMikhaylov в видео же цифры такие, что не работает. Когда рекол всегда в заданных пределах, то пресижн варьируется от баланса классов, вот и я спрашиваю, почему так происходит?)

    • @GlebMikhaylov
      @GlebMikhaylov  2 года назад +1

      @@bliz_fa_krik140 потому что знаменатель у рекола только реальный единички, и баланс классов на это не влияет: нолики вообще не участвуют.
      А знаменатель у пресижн это и нолики и единички, и баланс классов на это очень влияет