Не AБы какие тесты – Telegram
Не AБы какие тесты
1.47K subscribers
73 photos
61 links
Канал - оголтелая реклама курсов по A/B, ну еще размышления по A/B, статистике и не только.

https://news.1rj.ru/str/smatrosov - до связи
Download Telegram
Подглянем за подглядывающими. О проблеме подглядывания в экспериментах.

Если мы с вами возьмем из любой генеральной (в рамках симуляции для t-test'a - нормальной, раз выборки малые) две выборки А и А', то мы знаем, что хотя между ними и нет разницы, но в заданным уровнем значимости альфа = 0.05 в среднем 5 тестов из 100 у нас будут давать ложноположительный результат (обнаруживать эффект там, где его нет).

Давай понаблюдаем за тестом и его значением p-value 20 дней. На нулевой день в в группу A и A' у нас по 1-ом наблюдению. Каждый день у нас в группу A и A' будет добавляться по также 1-ому наблюдению: на 1-ый день будет у группах по 2 наблюдения, на 2-ой по 3 и т. д.

Красная линия - это альфа = 0.05, от нее и ниже это стат. значимость.

Experiment №1: p-value к уровню значимости за все время и не приблизился.

Experiment №9: к 20-му дню p-value ниже уровня значимости - ложноположительный результат. Штош, бывает.

Давайте посмотрим 100 тестов одновременно: посмотрите, день ото дня какая-то доля тестов ложноположительная. Это - нормально, так и должно быть, это доля в среднем будет 5% (может быть ниже, может быть выше, но ожидаемо - 5%, то есть 5 из 100).

Рассмотрим Experiment №2: именно на 10-ый день он стал ложноположительным. Пробыл там еще денек, а потом снова стал не стат. значимым.

Но что будет, если мы будем останавливать тест ровно тогда, когда он стал стат. значимым?
На графике красными точками обозначено то, когда какой-либо из 100 тестов стал впервые стат. значимым (может быть и повторно, как с Experiment №2, как видите). Сколько раз мы совершим тогда ошибку 1-го рода?

В данной симуляции 21 раз!
В этом и есть проблема поглядывания в тест и остановка его раньше запланированной. Придерживаться просто принципа "вижу стат. значимость - останавливаю" очень пагубно.
То есть нельзя взять так просто и ему следовать. Для этого надо идти в Мордор, на скользкую дорожку очередного современного (но вполне работающего) хайпа, Sequential Testing (я бы рекомендовал ознакомится прежде всего с тестом Wald'a).
Как повысить свои шансы на собеседовании, если ты уже специалист (мидл/синиор и далее)?
Материал универсальный, а не только для аналитиков. Обещал - написал:

1. Очень внимательно обдумай и выпиши, чем ты занимался на крайнем месте работы: кто был твоим заказчиком, что именно ты делал, что делала компания, твой отдел, что было рутиной, а что нет. Выписанное - повтори. Желательно раз 10, отредактируй.

Основной смысл - надо показать, что ты максимально осознаешь, что происходило, что делал, можешь рассказать очень конкрентно, где ты работал, в какой сфере, что было по задачам и пр.;

2. Выпиши несколько типовых задач, которые решал. Напиши по ним отчет: краткая предыстория, что нужно было, зачем, как делал, какой результат, как это было отдано заказчику, что там сделал заказчик. Выписанное - повтори 10 раз.

Основной смысл почти тот же: высокая степень вовлеченности в работу

3. Выпиши самое значимое достижение на предыдущем месте. Да, таких может и не быть, это нормально, но надо взять то, что принесло бизнесу и тебе больше, чем все остальное. Выпиши это как кейс, с деталкой, но без коммерческой тайны! Выучи этот кейс.

Смысл - показать, что ты отделяешь важное от менее важного, выставляешь приоритеты и вот это все.

По п.1 - 3 в общем: структура, конкретика, желательно емко. Наниматели это любят и они это оценивают.

Красные флаги:
- не знаю, что делал
- да как-то ничем и не помогал
- просто работал работу (да, это норма, но при найме - нет)

4. Постарайся перехватить инициативу и самому рассказать п.1-3 без наводящих вопросов со стороны нанимателя.

Смысл - больше вашего эфира и меньше времени для вопросов со стороны нанимателя. Плюс есть шанс углубиться в ваши задачи и пр., что снимет вопросы из п.5 и 7.

5. Будь готов ответить за каждый пункт в резюме. Написал про A/B тесты - умей держать ответ по базе, привести пример (сам) крайнего теста, также структурно, конкретно и коротко и пр. Поэтому читаешь пункт, задаешь себе вопросы по ним, отвечаешь. Повторить уже сам знаешь - 10 раз.

Основной смысл - показать, что разбираешься в том, что указал (доказать на словах).

6. Софты решают: рассказываем бодро-весело, с улыбкой и доброжелательностью, показываем энергию. Даже если ты в глубочайшей депрессии. По софтам смотрят, насколько ты подходишь команде. Как правило, жизнерадостный человек устраивает всех.

И 6-ое на самом деле самое сложное, ведь мы такие, какие есть, но найм это в каком-то смысле продажа себя, поэтому упаковать себя надо соответствующе и побыть товаром часик-другой все же нужно.

Практика важна, потренируйтесь об кого-то: об коллег, близких и пр., может, ментора даже взять. Или влоб соглашаться на все собеседования и тренироваться уже в бою.

7. Повтори базу. Сейчас какая-то отбитая мода спрашивать по учебнику людей с опытом, что далеко не всегда уместно, но так делают. Освежи то, что является стандартом в твоей сфере, даже если стандарт используется раз в 100 лет. Да-да, всякие структуры данных, паттерны, этапы выполнения машиной запроса SQL и пр., что считается базой в твоей области, то есть прям буквально базой.
Теорема Байеса для будущего поста, ч.1

Помните, я говорил, что надо уметь отвечать за сказанное на собеседовании? Кандидаты среди порой любят говорить о том, что они любят математику. Чаще именно у стажеров/джунов я обычно уточняю, а какой твой самый любимый раздел. Если слышу, что мне говорят про теорвер, то мой следующий вопрос часто про то, чтобы мне концептуально объяснили, о чем формула Баейса. Без задачек про урны из шаров, просто - о чем эта теорема, чем она нам полезна, что именно делает. Для понимания этого, а также моего следующего поста давайте разбираться.

Как обычно, подведемся к теореме, чтобы было понимание, а не знание.

Доступим, у нас есть база кандидатов для стажировки: 4 человека.
- 2 знают Excel
- 1 знает SQL
- 1 знает и Excel и SQL

1)
Вероятность того, что случайно отберут человека со знанием Excel из всех = 3/4.
Запишем как P(Excel) = 3/4

Мы также знаем, чему равна вероятность знать SQL при условии знания Excel = 1/3.
P(SQL|Excel) = 1/3 (так как лишь 1 из 3 эксельщиков знает SQL)

Вероятность того, что знающий Excel еще знает и SQL равна = 3/4*1/3 =1/4.
P(Excel) * P(SQL|Excel) =
= P(Excel и SQL) = 1/4

2)
Вероятность того, что случайно отберут человека со знанием SQL из всех = 2/4.
P(SQL) = 1/2

Мы также знаем, чему равна вероятность знать Excel при условии знания SQL = 1/2.
P(Excel|SQL) = 1/2

Вероятность того, что знающий Excel еще знает и SQL равна = 1/2*1/2 =1/4.
P(SQL)*P(Excel|SQL) =
= P(SQL и Excel) = 1/4

3) Ага, то есть P(Excel и SQL) = P(SQL и Excel) = 1/4
! При этом обращу внимание P(SQL|Excel) НЕ равно P(Excel|SQL) !

А значит:
P(Excel) * P(SQL|Excel) = P(SQL)*P(Excel|SQL) - это уравнение (1.)

P(SQL|Excel) = P(SQL)*P(Excel|SQL) /P(Excel) - (2.) это и есть формула Баейса. То есть в логике такого вывода мы можем подсчитать вероятность того, что кандидат знает Excel при условии наличия факта, что он знает SQL (как вариант, поменяв местами, знание SQL при условнии знания Excel)

И че?..
🔥1
Теорема Байеса для будущего поста, ч.2

Это тот случай, когда простой пример вроде и показывает что-то, но не объясняет основную суть. Исправляемся!

Давайте перепишем вместо SQL -> H (Hypothesis, гипотеза), а вместо Excel -> E (Evidence, свидетельство/доказательство), подставим в именно в уравнение (1.) - в этом есть смысл, объясню далее.

P(E)*P(H|E) = P(H)*P(E|H)
Читаем вместе:
P(E) - вероятность доказательства как такового
P(H|E) - вероятность гипотезы при наличии доказательства (E)
P(H) - вероятность гипотезы как таковой
P(E|H) - вероятность доказательства при условии наступления гипотезы (H)

Запомните порядок, подключая логику: сначала наступает что-то, а потом ПРИ условии этого что-то другое. Более того, именно левая часть "бытовая": P(E)*P(H|E), - у меня есть гипотеза об успехе прохождения собеседования. Я ответил на вопрос (E), как изменилась эта гипотеза после? P(H|E)
+ помнить только левую часть вполне достаточно: автоматом справа будет сначала вероятности, где H меняется на E, а E на H ->P(H)*P(H|E).

Делим на P(E):
P(H|E) = P(H)*P(E|H)/P(E) - и проговорим еще раз левую часть: вероятность гипотезы при наличии доказательства (E). Ага, то есть при наличии каких-то фактов, мы можем уточнить нашу изначальную гипотезу P(H), то есть перевзвесить наши изначальные прикидки.

И знаете что интересно?

1) Это формула описывает наше с вами мышление в оценке вероятности наступления чего-то при новых данных. Например, вероятность, что около вашего дома прямо сейчас кошка - 1%. Вы услышали мявкание, возможно, вам послышалось, поэтому вероятность стала выше и = 20%. Вы услышали повторно и поняли, что вряд ли послышалось, вероятность стала выше = 65%. Выглянули за дверь, что-то пронеслось мимо вас, но маленькое. Да, кошку вы не увидели, но вероятность из-за этого факта стала 90%. То есть под напором E у вас меняется H. И именно об этом P(H|E).

Это ответ на вопрос, о чем теорема Баейса: перевзвешивание гипотезы

2) Математика не раз показывает, что описание чего-то ее языком точнее оценивает реальность, чем наша интуиция. Были бы все вводные еще.

Приведу личный пример, как мне бы помог Баейс. По своему генетическому древу одна из самых вероятных смертельных болезней, которая мне грозит, это рак.

Пускай вводные будут такими:
- Есть тест на рак и он в 95% случаев показывает положительный результат, когда рак действительно есть.
Это P(E|H) = 95%

Пускай сделали тест и он оказался положительным. Как думаете, какова вероятность рака? Кажется, очень высокой, ведь тест и ведь 95% же и вот это все!

Давайте считать. Вот еще некоторые водные:
- Вероятность рака в популяции 1%
Это P(H) = 1% - это еще называют "базовым процентом". И он является, условно, природным значений в популяции (n случаев на популяцию) без всяких там условий, просто статистика. Знать его не просто полезно, а крайне важно, с него начинается наш отсчет.

- Этот же тест на рак в 9% случаев покажет ложноположительный результат (рака на самом деле нет)
P(E|~H) = 9% - сейчас вернемся к этому

Наша формула для апдейта (перевзвешивания гипотезы):
P(H|E) = P(H)*P(E|H)/P(E), - первые два у нас есть. Что такое P(E)?

Это вероятность получить положительный результат. А его можно получить либо в случае реального наличия болезни, болезнь есть и тогда он при этом условии он показывает результат, P(H)*P(E|H) или в случае ложного срабатывания, то есть болезни нет, а при этом условии результат положительный P(~H)*P(E|~H). То есть:

P(E) = P(H)*P(E|H) + P(E|~H)*P(~H), где + это наше ИЛИ.

P(H|E) = P(H)*P(E|H) / (P(H)*P(E|H) + P(E|~H)*P(~H))

P(H|E) = (0.95*0.01) / (0.95*0.01+ 0.09*0.99) = 0.096 = 9.6%

Всего-то! Никаких 95, 80 и даже 50%!
Шах и мат, интуиция :)

Финализируя, Баейс помогает нам перевзвесить нашу гипотезу, когда у нас добавляется факты. У нас меняется вероятность нашей гипотезы в ту или иную сторону. Естественно, это перекладывается на A/B тесты, где мы можем смотреть две гипотезы:
- вероятность A лучше B, P(A>B)
- вероятность B лучше A, P(B>A) = 1 - P(A>B)
которые обновляются с каждым набором данных (измерений)
Их еще называют Probability to be best, PBB.
7🔥3
! Этот и следующего пост тесно связан с предыдущими про Баейс !

Несколько проблем частотного подхода:

1) Не отвечает на вопрос, "что лучше - А или B"?
Но бизнес-то хочет как раз ответа на этот вопрос. Ведь все начинается с гипотезы "сделаем это - получим результат (лучше)". Давайте проверим через A/B-тест. Давайте. Ведь разделения на группы, - в классическом виде случайным образом, - в принципе гарантируют нам, что группы будут похожи во всем, кроме одного: воздействия на B. Поэтому если будет разница B c А, то мы объясняем эту разницу именно от воздействия (тритмента).

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


Этим-то
и подкупает байесовский подход, у него есть Probability to be best, PBB для А и для B:
Сначала PBB (A>B) = PBB(B>A) = 0.5
Собирай данные, обновляй эти пробабилити, видишь, PBB(B>A) = 96.543% -> что читаешь, то и понимаешь - конкретика!
Го Байес?


А частотный подход в своих стат. теста что дает? Да только значение статистики и p-value. Что еще надо бы проинтерпретировать...

2) Интерпретация p-value. P-value - это вероятность обнаружить такой же или более экстремальный эффект тогда, когда верна нулевая гипотеза. Ничего другого про p-value сказать нельзя. Это можно либо понять (увидеть), либо запомнить. Но отмечу, разница между пониманием и знаниям тут есть: в первом случае вы никогда сами не сможете его иначе сформулировать, а во втором все же иногда будете ошибаться в формулировке, потому что без картинки и вывода этого значения оно так и останется будто бы заклинанием. И ошибаться тут критично: можно далеко уйти нетуда из-за этого.

Статистики-частотники (=фреквенсисты) хорошо осведомлены про 1-ое и 2-ое.
Можно даже сказать, что почти за 100 лет p-value их уже подбешивает (приведу цитату в конце).

Современные их телодвижения состоят в том, чтобы:
а) выжать из p-value хоть какую-то доп. информацию:
- вероятность/риск, что полученные стат. значимые результаты ложноположительны (False Positive Risk).
- вероятность (перевзвешанная) альтернативной гипотезы через значение p-value,

Ирония в том, что они используют для этого Байес. Почему ирония? Потому что байесианцы это соперники для частотников (фреквенсистов)! Впрочем, как часто и бывают, соперничают только радикалы от тех и других, остальным все равно)

b) дать ответ, что лучше A или B не хуже Баейса, для этого есть набирающий (снова) популярность подход как Probabilistic Index

Вот об этом и будем говорить далее.
👍1
Обещанная цитата про p-value отсюда, немного перефразировав: an inferential index that tells us where we stand, but does not tell how much distance we have covered. - условно, значение, которое говорит, где мы стоим, но не говорит, как многое мы узнали (заапдейтили нашу гипотезу)

До этого писалось следующее, менее важное, просто, мол, никуда не двигались толком 100 лет:
...The introduction of hypothesis testing in 1933 precipitated more intense engagement, caused by the subsuming of Fisher’s “significance test” into the hypothesis test machinery. But we (and I) still use P-values. And when a journal like Epidemiology takes a principled stand against them, pidemiologists who may recognize the limitations of P-values still feel as if they are being forced to walk on one leg.
...Although I applaud the motivation of attempts to eliminate P-values, they have failed in the past and I predict that they will continue to fail...
...Now let us imagine another world – Imagine a number that does not tell us what we know, but how much we have learned. Such a number could lead us to think very differently about the role of data in making inferences, and in turn lead us to write about our data in a profoundly different manner...

(далее говорится о том, что такое число есть и это фактор Баейса, Bayes factor - вероятность одной гипотезы поделенную на другую, которая дает нам по сути шансы а-ля 9:1 и пр.)

Цитату вбейте в переводчик, плюс-минус смысл он неплохо передаст
Итак, товарищи статистики, продолжим:

а) выжимаем p-value доп. информацию
- вероятность/риск, что полученные стат. значимые результаты ложноположительны (False Positive Risk).

Когда вы начнете вести свои тесты в компании, вам будет довольно легко подсчитать кол-во не просто стат. значимых, а успешных, прокрашенных зелёненьким для метрик, тестов, пример таблицы:

№ теста | Успешный ли тест?
————-|————
Тест №1 | 0
————-|————
Тест №2 | 0
————-|————
Тест №3 | 1

Из 3 тестов только 1 был успешным, значит ваш Success Rate (вероятность успешного теста) = 1/3 = 33% - такую метрику считают все громкие имена как Google, Netflix и, конечно, X5 тоже. Считайте и вы, чтобы выпендриваться)

На самом деле 33% это слишком круто, обычно это цифра 5-10%, то есть если это 10%, то только 10 из 100 тестов будут успешными для вас.

Что мы делаем с этой цифрой далее?
Запишем формулу вероятности нулевой гипотезы, при условии стат. значимого теста, P(H0|SS), то есть перевзвесим вероятность H0, а значит применим формулу Байеса, см. мой пост тут.

P(H0|SS) = P(SS | H0) * P(H0) / P(SS)

P(SS|H0) - вероятность стат. значимого результата при верности нулевой гипотезы
P(H0) - вероятность верности нулевой гипотезы вообще: в рамках наших данных это будут только те тесты, в рамках которых мы не смогли отклонить нулевую гипотезу, Тест №1 и Тест №2 (они не стат. значимы в другую сторону - прим.)
100% - 33.333% ~ 66% ~ 0.66

P(SS) - вероятность стат. значимого результата. При вероятности нулевой гипотезы это альфа (увы, тут надо бы знать заранее, что это такое - добро пожаловать на поток, хе-хе), а так как мы рассматриваем случаи, когда тест для нас не только стат. значим, но только положителен, то есть стат. значим НЕ в обе стороны, А в одну (если снова не понимаете о чем речь - в поток, ребята, поток!), то это альфа=0.05/2 = 0.025. Пускай она альфа/2 в среднем по всем 3 тестам была равна 0.025.

Распишем P(SS) = P(SS|H0)*P(H0) + P(SS|~H0)*P(~H0)
P(SS|H0)*P(H0) - из вычислений выше это 0.025*0.66

Разберем это: P(SS|~H0)*P(~H0)
P(~H0) - вероятность неверности нулевой гипотезы. Это у нас Success Rate = 33% = 0.33
P(SS|~H0) - вероятность стат.значимого результата при верности альтернативной гипотезы. Мы задаем это через мощность, а мощность это у нас 1-Beta, где Beta это ошибка 2-го рода. Возьмем среднюю мощность всех тестов, пускай это 0.8

Итого: P(H0|SS) = P(SS | H0) * P(H0) / (P(SS|H0)*P(H0) + P(SS|~H0)*P(~H0)) = 0.025*0.66/ (0.025*0.66 + 0.8*0.33) = 0.058 = 5.8% - наш False Positive Risk (FPR)

Это - вероятность того, что наш тест №3 был ложноположителен. Если бы тестов стат. значимых и успешных было бы больше, это P(H0|SS) как FPR был бы оценкой для всех этих тестов.

Теперь вы аки Microsoft, Netflix и X5 можете подсчитать FRP и у себя :)

P.S. P(SS | H0) * P(H0) / (P(SS|H0)*P(H0) + P(SS|~H0)*P(~H0)) можно переписать как это делают в некоторых статьях:
Общий случай (двусторонний):
alpha * П / (alpha * П + (1 - Beta) (1 - П), - П - это тоже самое, что P(H0), см. определение выше.

если alpha = 0.05, Beta = 0.2, тогда
0.05П /(0.05П + 0.8(1-П)) =
= 0.05П/(0.8 - 0.75П)

Случай стат. положительных тестов:
alpha/2 * П / (alpha/2 * П + (1 - Beta) (1 - П))

если alpha = 0.05, Beta = 0.2, тогда
0.025П/(0.8 - 0.775П)
подставляем из нашего примера П=0.33, получаем 0.025*0.666666/(0.8-0.775*0.666666) ~ 5.8%
👍1
Не AБы какие тесты pinned «О чем этот канал и кто автор? Всем привет! С вами Серега на связи. Сейчас я лид продуктовой и маркетинговой аналитики в X5, 5-чка, все A/B 5-ки проходят через мои руки. Это - канал по статистике и циклу курсов по A/B-тестам за моим авторством. Тут я буду…»
Возвращаемся к а), часть-2, товарищи статистики!

- вероятность (перевзвешанная) альтернативной гипотезы через значение p-value,

Это часть будет сложнее, она и у меня собирается по частям так-то, так что жуйте без спешки.

Напомню: число успешных тестов, Success Rate, не очень велико, как и говорил, это 5-10%, зависит от индустрии -> можете посмотреть эти данные от Microsoft, Neflix и пр.

б) Возьмём, что в нашем случае оно составляет 10%. И пускай при этом все из них были действительно успешны, true positive. Значит, шансы, что наша конкретная гипотеза в конкретном эксперименте будет успешна P(HA) = 10% = 0.1

Распишем согласно Баейсу (пост с разбором формулы тут) вероятность P(HA|p-value) как переоценка HA при условии "конкретного" p-value:
P(HA|p-value) = P(p-value|HA)*P(HA)/P(p-value)
P(p-value|HA) - вероятность конкретного p-value при верности HA
P(HA) - вероятность HA = 0.1
P(p-value) - вероятность конкретного значения p-value

P(p-value) = P(p-value|HA)*P(HA)+P(p-value|-HA)*P(-HA)
или
P(p-value|HA)*P(HA)+P(p-value|H0)*P(H0)

P(H0) = 1 - P(HA) = 0.9

Нам нужно выяснить, чему равно P(p-value|HA), P(p-value|H0)
Сделаем это.

Предварительно мы сделали дизайн теста, альфа = 0.05, мощность = 0.8, выяснили MDE.
1) Далее сделали симуляцию распределений p-value когда эффекта нет (верна H0), p-value ожидаемо в 5% случае оказался от 0.05 и ниже согласно альфе, см. картинку 1

При этом важно (!) cтат. значимый результат при H0 может быть в обе стороны у нас, нас интересует только ложноположительность, когда результат для нас положительный. А это случается в половине всех p-value <= alpha. То есть от красного квадратика мы берем половину, картинка 2!

2) Далее подсчитали, когда эффект есть (HA), p-value ниже 0.05 в 80% согласно мощности, картинка 3.

3) Посмотрим только те p-value по H0 и HA, которые <= 0.05, то есть стат. значимые согласно альфе, картинка 4

Продолжение ниже...
4.1) Так как p-value непрерывная величина, то нельзя взять так просто и подсчитать вероятность конкретного p-value, поэтому вместо, например, P(p-value=0.05) мы возьмем P(0.0499 =< p-value <= 0.05). Сиська? Сиська! Почти тож самое, мать твою (с)

Поэтому считаем P(0.0499 =< p-value <= 0.05), а думаем о P(p-value=0.05)

4.2) На сгенерированных данных вышло следующее:
P(p-value|HA) = P(0.05|HA) = 0.028
P(p-value|H0) = P(0.05|H0) = 0.008
Смотрим картинку 5 - ну в целом размер желтого прямоугольника против синего в красном квадрате на то и похоже в плане пропорции.

5.1) Считаем P(HA|0.05) = (0.028*0.1) / (0.028*0.1+0.008*0.9) = 0.28 = 28%, КАРЛ.
То есть стат. значимый результат = 0.05 не ахти как перевзвешивает нашу гипотезу.
Такое себе.

5.2) А что будет, если взять p-value = 0.01 (интервал от 0.0099 до 0.01)? Картинка 6
P(p-value|HA) = P(0.05|HA) = 0.172
P(p-value|H0) = P(0.05|H0) = 0.01
P(HA|0.05) = (0.172*0.1) / (0.172*0.1+0.01*0.9) = 0.65 = 65%. И также не особо лучше.

Короче: теперь статистики всерьез задумались об альфе = 0.005. Потому что P(HA|0.005) стремится к 1. Ну и потому, что это как будто бы решает проблему репликации (повторяемости) исследований.
А все, что находится между 0.005 и 0.05 - это теперь "suggestive", гугл переводит это как на "наводящий на размышления", смешно: тест теперь не стат. значимый в этом диапазоне, а "наводящий на размышления", нах.

При этом это не предел для минимизации альфы, о, нет! (хе-хе)

Но об этом в следующий раз.
👍2
Поддержу тренд и расскажу, почему нужна n-1 в оценке выборочной дисперсии.
Картинки из моего курса по базе A/B вместо тысячи слов!

1. Выборочная дисперсия на малых выборках в среднем ниже дисперсии генеральной (тут для примера ГС = 4, а среднее по выборочной = 1.96)

Поэтому статистики, точнее товарищ Bessel, подумал, а почему бы нам ее просто не сместить на -1 ?

И вот результат: в среднем (но не в каждом конкретном случае!) у нас скорректированная оценка близка (3.85 vs 4) истинной. Клево, да?

2. Вообще-то, когда у вас выборки достаточно большие (таблица t значений намекает на более 10к), у вас выборочная дисперсия близка дисперсии популяции. Так что поправка необязательна. Но если вы не можете это объяснить или если забудете, тогда для вас она - обязательна.

P.S. Пожалуйста, давайте больше не будем говорить на собеседованиях про такое конченное понятие как "степени непонимания свободы"

P.S.S. Есть еще одна интересная и неочевидная корректировка, которая прямо относится к A/B, расскажу как-нибудь о ней тоже
👍4
Легкое пятничное: недавно задался вопросом с подачи супруги, а какая проблема могла помочь придумать дисперсию и стандартное отклонение? То есть когда мы стали бы ломать голову и что-то пытаться придумать, чтобы изобрести их?

Мне упорно приходят в голову задача рассказать про самое важное различие в цифрах двух нормально распределенные популяции, у которых одинаковые средние, близкие максимум и минимум, при этом у первого распределения данные довольно быстро расползаются от среднего, а у второго нет. Получается, мы это визуально видим различия, может даже проговорить ("по-разному стоят от среднего"), а вот цифры аналогичной max, min, avg нет.

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

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

Я к чему? Да в принципе в статистике так все и рождается, как мне видится. Вот, например, статья от коллеги, Николая Назарова, про то, как придумать собственный критерий в случай малых выборок из ненормальной генеральной.

Действительно, распределение средних малых выборок из ненормальных популяций также ненормально, а потому при попытке применить t-test t-статистика будет приземлятся на НЕ-t-распределение. Во время отсутствия компуктеров оставалось мало вариантов тестирования малых выборок из ненормальных генеральных. Cразу вспоминают о а-ля Манн-Уитни, но он-то проверяет другую гипотезу в отличии от t-test'a (о Манне-Уитни у меня очень-очень скоро будет большая статья с Яндексом, демистифицируем его по полной). А сейчас: бери свою ненормальную генеральную, генерируй выборки, применяй t-test, смотри каким будет НЕ-t-распределение -> это и будет распределение для нулевой для данной ненорм генеральной для t-test'a. Очень здраво! Это если очень кратко. У Коли все подробнее, формализованее и с аккуратной подводкой как мы любим (верно же?). Наслаждайтесь!

То есть получается этот пост все же немного тяжелое пятничное. Специально ли я так сделал? А я сам не знаю, просто к слову пришлось да и темой, что Коля описал, занимался, но решил, что в наш век BigData малые выборки это такое, узкоспециализированное. С другой стороны, малые выборки - это хороший способ проверить на наличие радикальных отличий, то есть такой контроль на очень большую разницу (которой быть не должно), держите это в голове при чтении статьи как ответ на вопрос о прикладом смысле теста на малых.
1) Понимание заказчиком всех этих альф, мощностей и пр. это, как правило, вежливость с их стороны. Обычно, для них эта абстракция. Поэтому чтобы сделать их жизнь несколько проще, то в рамках дизайна после подсчета MDE (при заданных параметрах с учетом возможности задействовать какую-то часть генеральной / с учетом ограничений по периоду) отдельным параграфом рекомендовано показать картинку всевозможных разниц. Это легко сделать, сгенерировав данные при верности H0 и HA=H0+MDE.

Отсюда уже легче объяснить все эти параметры, что вот, смотрите, при таком размере выборки мы можем обнаружить такой-то минимальный эффект (расстояние между зелеными в точечку линиями). При этом вот все наши возможные разницы, если верна H0 (различий нет) и HA (различия есть с таким MDE).
- Если верна HA, то желтая* область это то, где мы увидим стат. значимость и это ок, а черная область, где не обнаружим, и это плохо, но вероятно.
*ес-сно, если эффект прям большой, то эта разница уйдет далеко вправо и не будет и в желтой зоне, но очевидно, что это нетрудно объяснить как что-то хорошее;

- Если верна H0 и разницы на самом деле нет, то красная область это тоже стат. значимый эффект, просто наш результат будет ложноположительный, это не ок, но вероятно.

Конечно, это визуализация работает только в рамках самого массового t-test'a. С тестом на однородность иначе, как - покажу после статьи по Mann-Whitney.

2) И еще кое-что. В заметке про MDE было такое словосочетание как "минимально значимое отличие". Так вот, этому понятию место-то есть:
- с точки зрения стандартизированных разниц это критическое значение (при альфе = 0.05 и в случае больших выборок это z=1.96), одно из, если тест двусторонний.

- с точки зрения абсолютных разниц и подсчитанного MDE, это конкретное критическое значение, в нашем примере ~ 0.356. Это просто (в случае справа) 1-альфа/2. У нас альфа = 0.05, это 1-0.05/2 = 1-0.025 = 0.975 квантиль. Далее np.quantile(diff_h0, 0.975), где diff_h0 - это всевозможные разницы при верности Нулевого гипотезы.
3