Продолжаем обсуждать методы расчёта АБ-тестов, менее популярные, но для общего развития — полезные.
Иногда данные для теста не агрегированы вокруг какого-нибудь периода, а подчиняются биномиальному распределению (сэмпл данных выглядит так: 0, 0, 1, 0, 1, 1 и тд, где 0 - не было события, 1 - было).
Такие данные бывают при расчётах, например, конверсий.
Для расчёта биномиальных тестов используют 2 популярных подхода:
✅ Z-тест. Сравнивает доли успехов в биномиальных данных. На малых выборках критично нормальное распределение.
✅ Критерий Хи-квадрат. На биномиальных данных сравнивает частоты выпадения категорий.
И тот и другой тест, по сути, делают нужную нам проверку, но Z-тест лучше работает на больших выборках.
Оба теста можно считать как напрямую из данных (рассчитав пропорции и стандартные ошибки), так и сгруппировав их в таблицу сопряженности:
# создание таблицы сопряженности
table <- table(df$var, df$metric)
n <- colSums(table) # вычисляем суммы по каждому варианту
x <- table[, 2] # вычисляем количество единиц в каждой группе
# z-тест
prop.test(x, n)
# хи-квадрат
chisq.test(table)
import pandas as pd
from scipy import stats
from statsmodels.stats.proportion import proportions_ztest
# создание таблицы сопряженности
table = pd.crosstab(df['var'], df['metric'])
n = table.sum(axis=1).values # вычисляем суммы по каждому варианту
x = table[1].values # вычисляем количество единиц в каждой группе
# z-тест
z_test = proportions_ztest(x, n)
# хи-квадрат
chi2_test = stats.chi2_contingency(table)
#ABtest
