🔍 Откуда берется p-value в лин. регрессии в контексте A/B? В одном из последних постов я писал, что A/B тест можно рассматривать как частный случай линейной регрессии: -> y = β₀ ​+ β₁T ​+ ε y – значение метрики у пользователя; T – индикатор группы: 0 для контроля и 1 для теста; β₀ – среднее значение метрики в контрольной группе; β₁ – разница между тестом и контролем; ε – случайная ошибка отдельного наблюдения. И когда мы смотрим на p-value для β₁, мы фактически проверяем, является ли разница между тестом и контролем статистически значимой. Но откуда берется этот p-value? Нулевая гипотеза звучит так: -> H₀: β₁ = 0 Т. е. что эффекта нет: cреднее в тесте равно среднему в контроле. В данных мы видим какую-то оценку этого эффекта: -> β̂₁ = mean(test) - mean(control) Например, β̂₁ = 2. Но такое значение еще ни о чем не говорит, ведь разница могла возникнуть из-за случайности. Поэтому мы задаем вопрос: > Если эффекта на самом деле нет, насколько вероятно было бы увидеть разницу в 2 или более экстремальную? Чтобы ответить на него, мы сравниваем наблюдаемую разницу с ее стандартной ошибкой: -> t = (β̂₁ - 0) / SE(β̂₁) Так получается t-статистика. Интуитивно она отвечает на вопрос: на сколько стандартных ошибок наша оценка эффекта отстоит от нуля? В числителе стоит β̂₁ - 0, потому что 0 – это значение эффекта при нулевой гипотезе. А стандартную ошибку разницы средних для двух независимых групп можно записать так: -> SE(β̂₁) = sqrt(s²_control / n_control + s²_test / n_test) s²_control и s²_test – выборочные дисперсии метрики внутри групп. n_control и n_test – размеры контрольной и тестовой групп. В контексте регрессии эти дисперсии можно понимать как разброс остатков внутри групп. Модель предсказывает каждому пользователю среднее значение его группы. Поэтому остаток – это: -> yᵢ − mean(group) А дисперсия внутри группы – это средний квадрат таких отклонений: -> s²_group = Σ(yᵢ − mean(group))² / (n_group − 1) После этого мы считаем t-статистику и смотрим, насколько экстремальным было бы такое значение, если бы нулевая гипотеза была верна. Вероятность получить такое или более экстремальное значение статистики при верной H₀ – это и есть p-value. В этом и вся идея. Никакой магии, только статистика 🔥