Короткий ответ
Для метрик с тяжёлыми хвостами (выручка на пользователя, время сессии) среднее и стандартные тесты на средних значениях становятся нестабильными и чувствительными к редким экстремальным наблюдениям; логарифмирование сжимает хвост и делает распределение ближе к симметричному, что облегчает применение стандартных статистических методов.
Как это работает подробнее
логарифм превращает мультипликативные различия в аддитивные и сильно уменьшает относительный вклад очень больших значений в общую дисперсию, из-за чего распределение log(x) часто оказывается гораздо ближе к нормальному, чем распределение x.
Пример кода
Пример на Python
import numpy as np
revenue = np.random.lognormal(mean=4, sigma=1.5, size=1000)
log_revenue = np.log1p(revenue) # log(1+x), устойчиво к нулевым значениям
print(revenue.mean(), revenue.std())
print(log_revenue.mean(), log_revenue.std())Что использовать на практике
- На практике. после логарифмирования можно применять t-test или строить доверительные интервалы для средних log-значений, но результат нужно аккуратно интерпретировать — среднее log(x) и экспонента от него не равны среднему исходного x (это геометрическое, а не арифметическое среднее), и для бизнес-метрик типа общей выручки такой пересчёт может быть неинтересен. Альтернативы логарифмированию — бутстрэп, winsorizing (ограничение экстремальных значений) или непараметрические тесты. Также полезно сравнивать несколько вариантов трансформации (log, log1p, Box-Cox) и выбирать тот, который даёт наиболее симметричное распределение именно для конкретного набора данных, а не применять один стандартный вариант по умолчанию.
- Пример. Sanity check: гистограмма
log_revenueдолжна выглядеть заметно более симметричной и «колоколообразной», чем гистограмма исходногоrevenue, что подтверждает эффект трансформации.
Подводные камни
- Частые ошибки. логарифмировать данные с нулевыми или отрицательными значениями без специальной обработки (например, log(x+1)), получая ошибку или искажённый результат; делать вывод об исходной метрике, подставляя обратно экспоненту от среднего log-значения, как будто это то же самое, что среднее исходных данных; применять log-трансформацию механически ко всем метрикам без проверки, действительно ли есть тяжёлый хвост. Ещё одна ошибка — забывать при обратном пересчёте результатов из логарифмической шкалы в исходную, что простое экспонирование среднего даёт геометрическое, а не арифметическое среднее исходной метрики.