Если ваша работа ограничивается построением дашбордов в Excel и ответами на вопрос «сколько заработали вчера» – матан вам и правда не нужен, но если вы хотите понимать, почему метрики ведут себя именно так, а не иначе, и тем более – прогнозировать их поведение, то без производных, логарифмов и пределов вы не обойдетесь.

В интернете тонны статей «Математика для аналитиков», но они либо уходят в дебри интегрирования по частям, либо ограничиваются уровнем «логарифм – это штука, которая делает большие числа маленькими». Давайте попробуем найти золотую середину.

1. Логарифмы

Логарифм – это не просто функция в pandas, а ответ на вопрос: сколько раз нужно перемножить число само на себя, чтобы получить другое число? Но для аналитика важнее другое: логарифм превращает умножение в сложение, а экспоненциальный рост – в линейный.

Например, вы анализируете time-to-conversion – время от первого касания с пользователем до покупки. Распределение классическое: большинство покупают в первый день, дальше – длинный «хвост» до 30 дней.

Если вы посчитаете среднее арифметическое, получите цифру в примерно 4,5 дня, но среднее здесь бессмысленно: 90% пользователей купили в день 0-1, а остальные 10% растянули выборку почти до бесконечности, тут надо считать медиану на логарифмической шкале.

Расчет на Python:

import numpy as np
import pandas as pd

# Генерируем данные с длинным хвостом
np.random.seed(42)
days = np.random.pareto(2, 10000) * 2 
days = np.clip(days, 0, 60)

df = pd.DataFrame({'days_to_conv': days})

# Считаем метрики
print(f"Среднее: {df['days_to_conv'].mean():.2f}")
print(f"Медиана: {df['days_to_conv'].median():.2f}")
print(f"Среднее геометрическое: {np.exp(np.log1p(df['days_to_conv']).mean()):.2f}")

Получаем:
Среднее арифметическое: 4,5 - сдвинуто хвостом, использовать не очень правильно
Медиана: 1,2 - честная «типичная» цифра, результат уже более отражает действительность
Среднее геометрическое: 1,8 - это компромиссный вариант

Вывод: среднее геометрическое (экспонента от среднего логарифмов) часто дает более адекватную оценку центра распределения для величин с мультипликативной природой.

Логарифмирование в регрессии

Когда вы строите регрессию вида log(y) = a * log(x) + b, коэффициент a — это эластичность: то есть на сколько процентов изменится y при изменении x на 1%.

2. Производные: детектор скорости и фаза луны

Производная – это не страшный предел из матана, а просто скорость изменения функции. В дискретном мире (а данные у нас почти всегда дискретны) производная — это diff() / shift().

Простой пример:
Вы запустили рекламу и выручка выросла на 10%, это круто или нет?

Правильный ответ: Смотря какая была производная в прошлом периоде.
Если месяц назад рост был 30%, а теперь 10% – то это сигнал бедствия, хотя абсолютная цифра все еще зеленая.

Производная второго порядка

В аналитике мы редко останавливаемся на первой производной, вторая производная (ускорение) показывает, замедляется рост или ускоряется. Рассмотрим кейс с подписками.
У вас есть помесячные данные по новым платящим пользователям:

Месяц

Новые платящие

Прирост (1-я произв.)

Ускорение (2-я произв.)

Янв

1000

-

-

Фев

1100

+100

-

Мар

1150

+50

-50 (замедление)

Апр

1180

+30

-20 (еще замедление)

Визуально рост есть, но ускорение отрицательное – значит, мы выходим на плато, в этом случае, если не видеть вторую производную, можно упустить момент и начать дергать рычаги, когда поезд уже тормозит.

Расчет на Python:

def calculate_derivatives(series):

    first_deriv = series.diff()  # первая производная - скорость
    second_deriv = first_deriv.diff()  # вторая производная - ускорение
    
    return pd.DataFrame({
        'original': series,
        'velocity': first_deriv,
        'acceleration': second_deriv
    })

Производная как оптимизация

Каждый, кто тренировал нейросети или бустинги, пользовался градиентным спуском. Градиент – это вектор частных производных, он показывает направление наискорейшего роста функции, а мы идем в противоположную сторону и получаем минимизацию функции потерь.
В аналитике мы редко пишем градиентный спуск руками, но понимать, что loss падает быстрее всего в направлении антиградиента ��� must have, ведь иначе вы не поймете, почему скорость обучения (learning rate) вообще существует.

3. Пределы и асимптоты

Предел в аналитике – это точка насыщения, то, к чему стремится процесс, но никогда не достигает (или достигает асимптотически).

Например, вы считаете когортный retention: классическая картина: после 6-7 месяцев падение останавливается, и retention выходит на плато 15-20%.

Это и есть предел – математический, а не философский.
Модель вида Retention(t) = R_inf + (R_0 - R_inf) * exp(-t / tau) отлично описывает такие процессы.
Здесь R_inf – это асимптота, предел, ниже которого retention уже не упадет (при текущем качестве продукта).

Другой пример, вы запустили реферальную программу и количество новых регистраций растет, но рыночная воронка имеет верхний предел – Total Addressable Market (TAM).

Если вы этого предела не знаете, будете удивляться, почему при удвоении бюджета на рефералки рост замедляется.
Ответ простой: вы приближаетесь к асимптоте, модель с пределом:

NewUsers(t) = TAM (1 - exp(-k spend(t)))

Здесь TAM — тот самый предел и его можно оценить эконометрически, подобрав параметры модели.

Еще пример, вспомним теорему Байеса: когда мы обновляем априорную вероятность на основе данных, апостериорная вероятность сходится к какому-то значению при бесконечном количестве наблюдений, это тоже предел и он определяет, насколько мы можем быть уверены в гипотезе.

4. Интегралы

Интеграл – это сумма бесконечно малых приращений, в дискретном мире cumsum(), rolling sum, они же итоги за период.

Пример: LTV клиента за 12 месяцев - это интеграл от функции платежей по времени, если клиент платит каждый месяц, но сумма меняется, LTV = сумма всех платежей за период.

Но есть нюанс: в реальности мы считаем LTV с дисконтированием, деньги сегодня дороже денег через год. Поэтому формула превращается в:

LTV = ∫ p(t) exp(-rt) dt

Где r — ставка дисконтирования,
p(t) — функция платежей.

Расчет на Python:

def discounted_ltv(payments, rate, periods):

    discount_factors = [(1 + rate) ** (-i) for i in range(periods)]
    return sum(p * d for p, d in zip(payments[:periods], discount_factors))

Интеграл в когортном анализе

Когда вы считаете накопленный retention (сколько пользователей из когорты осталось к месяцу N), вы фактически интегрируете функцию удержания или ARPU за период – это интеграл от интенсивности платежей.

Пример по-сложнее, в задачах uplift-моделирования (оценка прироста вероятности от воздействия) мы часто считаем площадь под кривой uplift (AUUC). Это аналог AUC-ROC, но для uplift-моделей, но по сути – это интеграл от кумулятивной функции прироста. Без понимания, что мы интегрируем, невозможно интерпретировать метрику.

Интеграл как сглаживание

Интеграл (или скользящая сумма) – это мощный инструмент сглаживания, если ваши данные шумят (например, посещаемость сайта поминутно), вы берете скользящее среднее за час — это интеграл с окном, деленный на длину окна.

Расчет на Python:

# Скользящее среднее как дискретный интеграл с окном
df['smoothed'] = df['raw'].rolling(window=60, center=True).mean()

Краткая таблица итогов

Математическое понятие

Что это в коде

Где применяется в аналитике

Логарифм

np.log1p(), np.log()

Логарифмирование распределений, расчет эластичностей, среднее геометрическое

Производная (1-я)

.diff()

Скорость роста, темпы прироста, градиентный спуск

Производная (2-я)

.diff().diff()

Ускорение/замедление тренда, переломные моменты

Предел / Асимптота

Параметр в нелинейных моделях (curve_fit)

Насыщение рынка, предельный retention, емкость аудитории

Интеграл

.cumsum(), .rolling().sum()

LTV, накопленные итоги, площадь под кривой (AUC, AUUC)

Интеграл с весом

np.average(weights=...)

Дисконтированный LTV, взвешенные метрики


Итог: Никто не ждет, что аналитик будет брать интегралы в уме или находить пределы функций без калькулятора, но понимать, что скрывается за вызовом библиотечной функции – это must have:

  • Когда вы берете log1p — вы приручаете степенной закон.

  • Когда смотрите на вторую производную — ловите момент перед падением.

  • Когда оцениваете LTV — интегрируете денежный поток.

  • Когда говорите «дальше рост невозможен» — опираетесь на понятие предела.

Математика в аналитике – это не про циферки и формулы, это про ментальные модели, которые позволяют не тупить в критический момент и говорить бизнесу не только что именно произошло, но и почему это произошло, как это исправить и что вообще будет дальше.

📚Более сжатая и простая версия статьи https://t.me/tanyaVSdannye/52
✔️Больше про будни и задачи аналитика в Авито в моем тг канале 🌸Таня и Данные📊