TGViewer
Заскуль питона (Аналитика данных) Заскуль питона (Аналитика данных) @zasql_python · 8.93K subscribers
Post #466 3.55K
🤨 Преобразование Фишера для оценки доверительного интервала корреляции Пирсона

Корреляция может пригодиться в разных сценариях, например, когда мы строим модели линейной регрессии, отбираем признаки или бизнесово смотрим какие метрики линейно связаны ⛓️

Кажется, что np.corrcoef(a, b)[0,1] достаточно.

Ну или аналог ниже 🔽

import numpy as np
r = (np.cov([a,b], bias=True) / np.sqrt(np.var(a) * np.var(b)))[0][1]


Это хорошо, мы можем посчитать точечную оценку на выборке. Но! Мы же не знаем истинного значения коэффициента корреляции генеральной совокупности (также, как и средние, например). Выход: мы обычно строим доверительные интервалы на уровне значимости alpha.

Корреляция 0.8 звучит уверенно, но насколько мы в ней уверены статистически?


Когда это нам может пригодиться?

1. Аналитические исследования: насколько сильно линейно связаны метрики в продукте, для первой итерации по поиску прокси-метрик в 🆎
2. Сравнение корреляций между сегментами.
3. В 💻 насколько фича связана с целевой метрикой...
4. Мониторинг стабильности метрик. Если начала связь разъезжаться, возможно, поведение пользователей поменялось.

Ниже преобразование Фишера, которое делает распределение ближе к нормальному. Сгенерируем две случайные величины с корреляцией, равной 0.8. Для них посчитаем доверительный интервал Фишера на Python 🐍
from scipy.stats import norm 
import numpy as np

np.random.seed(42)

n = 10000
rho = 0.8

mean = [0, 0]
cov = [[1, rho],
[rho, 1]]

x, y = np.random.multivariate_normal(mean, cov, size=n).T

r = np.corrcoef(x, y)[0, 1]

def fisher_ci(r, n, alpha=0.05):
z = np.arctanh(r)
se = 1/np.sqrt(n-3)
z_crit = norm.ppf(1-alpha/2)
lo = np.tanh(z - z_crit*se)
hi = np.tanh(z + z_crit*se)
return lo, hi

lo, hi = fisher_ci(r, n)
print(f"Доверительный интервал корреляции Пирсона: [{lo:.3f}, {hi:.3f}]")


Для Спирмена или Кендалла можно использовать бутстрап или другие приближения...

Если хотите разбор — какие вообще тесты (например для 🆎) бывают и когда какой использовать — ставьте 100 🕺, соберу подборку с примерами

А еще недавно у меня закончился ИС в 🛍, если вам интересно про это почитать, ставьте 100 😎

@zasql_python
  • ❤ 4
  • 🔥 3
More from @zasql_python
  1. Sep 20, 2026Хэй, чемпион! тут курс вышел бесплатный по статистике, который будет дополняться, записыва…
  2. Sep 15, 2026Починилось 😏 zasqlpython.ru
  3. Sep 15, 2026Сайт пока не работает, ждём 30 минут… @zasql_python
  4. Sep 13, 2026😏 Кто сейчас в поисках работы на ПЕРВУЮ работу по специальности аналитиком, что прикладыв…
  5. Sep 11, 2026😌 Пятница а это значит, пора немного поговорить об обновлениях 👀 Что нового на сайте: 😠…
  6. Sep 9, 2026🍌🍌🍌 Hi, unfortunately, we’re not ready to give you more money, but we are ready to give…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →