Логнормальное распределение простыми словами

Проверь себя · 1/3разбор после ответа
Вы строите таблицу сопряжённости по событиям кликов, но один пользователь может сделать десятки кликов. Почему это может быть проблемой для chi-square теста независимости?

Зачем это знать

Revenue, средний чек, LTV, длительность сессии, время отклика — всё это не нормальное, а log-normal распределение. Аналитик, который считает t-test на revenue как будто это нормальное — получает искажённые результаты. Понимание log-normal — необходимость.

На собесах часто спрашивают: «какое распределение у среднего чека?» — правильный ответ log-normal или похожее скошенное.

Короткое объяснение

Log-normal — это когда логарифм переменной распределён нормально.

Y ~ Log-normal(μ, σ²) ⟺ log(Y) ~ Normal(μ, σ²)

Форма: положительная, скошенная вправо, с длинным хвостом.

Почему возникает

Нормальное — сумма многих независимых эффектов. Log-normal — произведение многих положительных эффектов.

Примеры:

  • Доход = базовый × опыт × удача × образование × ... (произведение).
  • Длительность сессии — время × скорость загрузки × вовлечённость.

Характеристики

Параметры μ и σ (относятся к log-скейлу).

  • Mean: e^(μ + σ²/2)
  • Variance: (e^(σ²) - 1) × e^(2μ + σ²)
  • Median: e^μ
  • Mode: e^(μ - σ²)

Median < Mean всегда для log-normal — классика skewed right.

Визуально

На оригинальной шкале — тяжёлый правый хвост, мода около 0.

На шкале log(X) — симметричный колокол.

Тест на log-normal

Гистограмма

На оригинальной шкале — скошенность вправо. На log-шкале — похоже на нормальное.

QQ plot

QQ plot log(X) против нормального распределения должен быть линейным.

Shapiro-Wilk

Тест log(X) на нормальность. Если p > 0.05 — log-normal подходит.

Примеры в аналитике

Revenue per user

Большинство платят мало, редкие — много. Log-normal.

LTV

Та же логика — длинный хвост power users.

Время отклика

Большинство быстрые, редкие — очень медленные. Log-normal или Weibull.

Длительность сессии

Коротких много, длинных мало — log-normal.

Подготовься к собесу по A/B и статистике
300+ вопросов с разбором: дизайн, размер выборки, p-value, ловушки
Тренировать A/B в Telegram

Проблемы с t-test

T-test предполагает нормальное распределение или большое N (через ЦПТ).

На log-normal:

  • Малое N: t-test врёт из-за скошенности.
  • Большое N: работает, но сходимость к нормальному медленная.

Решение: log-трансформация перед тестом.

from scipy.stats import ttest_ind

# Плохо
ttest_ind(revenue_a, revenue_b)

# Лучше
ttest_ind(np.log(revenue_a + 1), np.log(revenue_b + 1))

+ 1 — чтобы log(0) не стал -inf.

В Python

import numpy as np
from scipy.stats import lognorm

# Сэмпл
samples = lognorm.rvs(s=0.5, scale=np.exp(2), size=1000)

# Fit параметров
shape, loc, scale = lognorm.fit(data, floc=0)
mu, sigma = np.log(scale), shape

Log-transform в A/B

Вместо среднего по revenue сравниваем среднее по log(revenue).

Обратная трансформация: geometric mean = exp(mean(log)).

Осторожно: результат на log-шкале интерпретируется как относительное изменение, а не абсолютное.

На собесе

«Какое распределение у revenue?» Log-normal (или похожее скошенное).

«Почему не нормальное?» Revenue = произведение нескольких положительных эффектов, а произведение даёт log-normal (в отличие от суммы — она даёт нормальное).

«Как тестировать?» Log-трансформация + t-test, или Mann-Whitney, или bootstrap.

«Когда не работает log-transform?» Когда есть нули (revenue = 0 у неплатящих).

Частые ошибки

T-test без трансформации

На малом N — смещённый результат.

log(0)

Нужно +1 или фильтрация.

Интерпретация mean(log)

Это логарифм геометрического среднего, а не среднее от revenue.

Медиана vs среднее

На log-normal медиана часто более репрезентативна, чем среднее.

Связанные темы

FAQ

Все positive данные — log-normal?

Нет. Weibull, gamma, exponential тоже на positive support.

Как отличить от gamma?

Shape различается. QQ plot показывает.

Bootstrap лучше?

Для ненормальных данных — часто да. Не требует предположений о распределении.