Линейная регрессия или T-тест. Как выбрать?
\ Мы часто увлекаемся шумихой вокруг модных моделей машинного обучения и прорывов в глубоком обучении, но давайте не будем упускать из виду скромную линейную регрессию.
\ ==В мире LLM и передовых архитектур линейная регрессия незаметно играет решающую роль, и пришло время пролить свет на то, как она может быть полезна даже сегодня.==
\ Рассмотрим сценарий, в котором компания электронной коммерции внедряет новый баннер, и мы стремимся оценить его влияние на среднюю продолжительность сеанса. Для этого был проведен эксперимент и собраны данные для анализа. Давайте проанализируем результаты.
Давайте используем знакомый инструмент для этой задачи: t-тест.
Результаты весьма обнадеживающие:
Рост метрики — это просто разница между средними значениями выборки контрольной и экспериментальной групп. В нашем случае оценочный рост составляет 0,56 минут, что указывает на то, что пользователи в среднем проводят на 33 секунды больше времени, используя наш продукт.
Теперь давайте используем линейную регрессию с вектором воздействия (показывается ли новый баннер или нет) в качестве независимой переменной и средней продолжительностью сеанса в качестве выходной переменной.
Затем мы выводим сводку нашей модели:
\
\ Примечательно, что коэффициент для переменной воздействия совпадает с нашей более ранней оценкой роста 0,56. Стоит отметить, что R-квадрат составляет всего 0,008, и мы не объясняем слишком много дисперсии с помощью этой модели.
Случайно ли то, что рост, полученный из t-теста, и коэффициент воздействия одинаковы? Давайте углубимся в связь.
\ Давайте подумаем о том, что отражает переменная воздействия. Когда она равна 1, это указывает среднюю продолжительность сеанса для пользователей, которые видели баннер; когда она равна 0, это указывает среднюю продолжительность сеанса для пользователей, которые не видели баннер. Это означает, что переменная воздействия (или наклон в терминах линейной регрессии) обозначает изменение среднего значения между контрольной и экспериментальной группами.
Какова нулевая гипотеза для переменной воздействия в линейной регрессии?
Какова нулевая гипотеза, когда мы применяем T-тест для эксперимента? Она абсолютно такая же.
Следовательно, при вычислении t-статистики и p-значения для идентичных гипотез наши результаты остаются согласованными и идентичными.
Однако в чем причина использования линейной регрессии? Мы не хотим просто усложнять вещи.
\ Во-первых, давайте подумаем, ответственно ли только воздействие за изменение нашей основной метрики.
\ В действительности это может быть не совсем точным из-за наличия систематической ошибки отбора.
\ Систематическая ошибка отбора в A/B-тестировании — это тип ошибки, когда существует систематическое различие между сравниваемыми группами, которое не связано со случайностью, например:
\
Мы замечаем, что старые пользователи видят новый баннер чаще, чем новые клиенты.
\
Случайное распределение, которое мы используем в AB-тестах, помогает нам смягчить это, но полностью устранить его сложно.
\ Давайте сформулируем, как оценить истинный эффект.
ATE: средний эффект воздействия, который мы стремимся оценить.
\ ATT: средний эффект воздействия на тех, кто получил воздействие. Мы также можем назвать его ACE: средний причинный эффект. Мы действительно можем рассчитать его. Это разница между средними значениями выборки контрольной и экспериментальной групп.
\ SB: систематическая ошибка отбора, которую мы стремимся минимизировать.
\ Как мы можем минимизировать ее?
\ Линейная регрессия позволяет нам добавлять ковариаты/смешивающие переменные. Давайте попробуем это и добавим в качестве одной из смешивающих переменных среднюю продолжительность сеанса для пользователей до эксперимента.
И выведем сводку модели:
Наш R-квадрат взлетел до небес! Теперь мы объясняем 86% дисперсии.
\ Наш эффект воздействия теперь составляет 0,47.
Итак, у нас есть два эффекта воздействия: 0,47 и 0,56; какой из них правильный?
\ В данном случае мы точно знаем истинный эффект, потому что я смоделировал данные, и реальный рост: 0,5
import numpy as np import pandas as pd from scipy import stats import statsmodels.api as sm np.random.seed(45) n = 500 x = np.random.normal(loc = 10 ,scale = 3, size= 2 * n) y = x + np.random.normal(loc = 2 , scale = 1 ,size = len(x)) # For 50% of users we simulate treatment effect treat = 1 * (np.random.rand(2 * n) <= 0.5) experiment = pd.DataFrame(x, columns=["covariate"]) experiment['metric'] = y experiment['treatment'] = treat experiment['noise'] = np.random.normal(size = len(experiment)) # Add noise and uplift to 'metric' for rows where 'treat' is equal to 1 # The real uplift is 0.5 experiment['metric'] = experiment.apply(lambda row: row['metric'] + 0.5 * row['treatment'] + row['noise'] if row['treatment'] == 1 else row['metric'], axis=1)
Это означает, что 0,47 лучше с точки зрения абсолютной разницы и ближе к отражению фактического роста.
Использование линейной регрессии имеет следующие преимущества:
\ Можем ли мы использовать линейную регрессию для других тестов, таких как t-тест Уэлча или критерий хи-квадрат?
\ Простой ответ — да. Однако нам нужно внести некоторые корректировки, которые мы обсудим в следующих статьях!

![[АНАЛИЗ] Подробный взгляд на листинг PNB Holdings Лусио Тана на PSE](https://www.rappler.com/tachyon/2026/01/1thnwww4nv8.jpg)
