Корреляция, причинность и доверительные интервалы

Два вопроса, которые задают почти всем: «корреляция и причинность — в чём разница» и «объясните доверительный интервал так, чтобы понял продакт».

Корреляция измеряет силу и направление линейной связи двух величин числом от −1 до +1. Она ничего не говорит о том, что чему причина.

Вопрос 1. Почему корреляция не означает причинность?

Что проверяет интервьюер. Не знание фразы — её слышали все. Проверяют, назовёте ли вы механизмы, из-за которых связь есть, а причинности нет, и предложите ли способ проверить причинность.

import math

ice_cream = [10, 12, 15, 20, 25, 30, 28, 22]   # продажи мороженого, тыс. порций
drownings  = [2,  3,  4,  6,  8, 10,  9,  7]   # число утоплений

def corr(x, y):
    n = len(x)
    mx, my = sum(x) / n, sum(y) / n
    cov = sum((a - mx) * (b - my) for a, b in zip(x, y))
    sx = math.sqrt(sum((a - mx) ** 2 for a in x))
    sy = math.sqrt(sum((b - my) ** 2 for b in y))
    return cov / (sx * sy)

print("Корреляция:", round(corr(ice_cream, drownings), 4))

Вывод:

Корреляция: 0.9992

Связь почти идеальная, но мороженое никого не топит. Обе величины растут от третьей — жары. Это конфаундер (смешивающий фактор), и он же самая частая причина ложных выводов в продуктовой аналитике.

Полный список механизмов, которые стоит назвать:

  1. Конфаундер — третья переменная влияет на обе. «Пользователи приложения платят больше» — потому что приложение ставят самые лояльные, а не потому, что приложение делает лояльным.
  2. Обратная причинность — B влияет на A, а не наоборот. «Компании с большим отделом поддержки имеют больше жалоб» — поддержку наняли из-за жалоб.
  3. Ошибка выжившего — смотрим только на дошедших. «Все успешные проекты используют X» — потому что неуспешные с X мы не видим.
  4. Систематическая ошибка отбора — выборка не случайна. Опрос по email пропускает тех, кто перестал открывать письма.
  5. Случайность — при переборе сотен пар какие-то коррелируют просто так. Именно так рождаются «корреляции» между потреблением сыра и числом инженерных диссертаций.

И два технических ограничения самого коэффициента. Корреляция Пирсона ловит только линейную связь: у идеальной параболы y = x² на симметричном интервале коэффициент будет около нуля при полной детерминированности. И она чувствительна к выбросам — один выброс способен и создать корреляцию, и уничтожить её. Для монотонных, но нелинейных связей берут корреляцию Спирмена (по рангам).

Как проверять причинность: рандомизированный эксперимент (A/B-тест) — золотой стандарт; если эксперимент невозможен — квазиэкспериментальные методы: difference-in-differences, регрессия с контролем конфаундеров, инструментальные переменные, метод разрывной регрессии.

Вопрос 2. Объясните доверительный интервал простыми словами

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

Формально: если повторить эксперимент много раз и каждый раз строить 95%-й интервал, примерно 95% построенных интервалов накроют истинное значение. Строго говоря, нельзя сказать «с вероятностью 95% истина внутри этого интервала» — истина не случайна, случаен интервал. На собеседовании это различие спрашивают и ценят, но объяснять его продакту не надо: для практики достаточно понимания «наша оценка не точка, а вилка».

import math

def ci_prop(k, n, z=1.96):
    p = k / n
    se = math.sqrt(p * (1 - p) / n)
    return round(100 * (p - z * se), 2), round(100 * (p + z * se), 2)

for n in (200, 1000, 10000, 100000):
    lo, hi = ci_prop(int(0.10 * n), n)
    print(f"n = {n:>6}: конверсия 10.0%, 95% ДИ [{lo}%, {hi}%], ширина {round(hi - lo, 2)} п.п.")

Вывод:

n =    200: конверсия 10.0%, 95% ДИ [5.84%, 14.16%], ширина 8.32 п.п.
n =   1000: конверсия 10.0%, 95% ДИ [8.14%, 11.86%], ширина 3.72 п.п.
n =  10000: конверсия 10.0%, 95% ДИ [9.41%, 10.59%], ширина 1.18 п.п.
n = 100000: конверсия 10.0%, 95% ДИ [9.81%, 10.19%], ширина 0.38 п.п.

Три практических вывода, которые надо озвучить:

  • Точность растёт как корень из n. Чтобы сузить интервал вдвое, выборку нужно увеличить вчетверо. Это же объясняет, почему A/B-тесты требуют десятков тысяч пользователей.
  • На 200 наблюдениях «конверсия 10%» означает «где-то между 6% и 14%» — и решение о запуске на таких данных принимать нельзя.
  • Если интервалы двух вариантов сильно перекрываются, разница не доказана, каким бы убедительным ни выглядел столбик на графике.

Типичные ошибки кандидатов

  • Произносят «корреляция не равна причинности» и замолкают, не назвав ни одного механизма.
  • Не знают, что корреляция Пирсона ловит только линейную связь.
  • Говорят «с вероятностью 95% истинное значение внутри интервала» — и не могут поправиться, когда переспрашивают.
  • Считают, что ширина интервала зависит от доли выборки в генеральной совокупности, а не от абсолютного размера выборки.
  • Показывают бизнесу голую цифру конверсии без интервала и делают выводы по разнице в 0.2 п.п. на тысяче пользователей.

Как ответить кратко

«Корреляция — мера линейной связи от −1 до 1. Связь без причинности бывает по нескольким причинам: конфаундер, влияющий на обе величины (мороженое и утопления — жара), обратная причинность, ошибка выжившего, смещение отбора и просто случайность при переборе многих пар. Проверить причинность можно рандомизированным экспериментом, а если он невозможен — difference-in-differences или регрессией с контролем конфаундеров. Доверительный интервал — это вилка вокруг оценки, показывающая случайную погрешность выборки: при повторении эксперимента 95% таких интервалов накроют истину. Ширина падает как корень из размера выборки, поэтому для сужения вдвое данных нужно вчетверо больше».

Проверьте себя
1. Продажи мороженого и число утоплений коррелируют на уровне 0.99. Как это называется?
AОбратная причинность
BВлияние конфаундера — третьей переменной (жары), от которой растут обе величины
CОшибка выжившего
DНелинейная зависимость
2. Коэффициент корреляции Пирсона между x и y = x² на симметричном интервале около нуля. Что это означает?
AСвязи между переменными нет
BСвязь есть и она детерминированная, но нелинейная — Пирсон ловит только линейную составляющую
CВ данных ошибка
DНужно увеличить размер выборки
3. Чтобы сузить 95%-й доверительный интервал вдвое, во сколько раз нужно увеличить выборку?
AВ 2 раза
BВ 4 раза
CВ 10 раз
DШирина интервала не зависит от размера выборки