Сообщить об ошибке.

Функция correlation() модуля statistics в Python, корреляция Пирсона

Коэффициент корреляции для двух последовательностей данных

Синтаксис:

import statistics

# Новое в версии 3.10
r = statistics.correlation(x, y, /, *, method='linear')

Параметры:

  • x, y - последовательность входных данных.
  • method='linear' - последовательность входных данных.

Возвращаемое значение:

  • коэффициент корреляции

Описание:

Новое в версии 3.10.

Функция correlation() модуля statistics возвращает коэффициент корреляции Пирсона для двух входных данных x и y. Коэффициент корреляции Пирсона r принимает значения от -1 до +1. Он измеряет силу и направление линейной зависимости.

Изменено в Python 3.12: Добавлена ​​поддержка коэффициента ранговой корреляции Спирмена.

Если аргумент method='ranked', то вычисляет коэффициент ранговой корреляции Спирмена для двух входных данных x и y. Данные заменяются рангами. Связи усредняются таким образом, чтобы равные значения получали одинаковый ранг. Результирующий коэффициент измеряет силу монотонной зависимости.

Коэффициент корреляции Спирмена подходит для порядковых данных или для непрерывных данных, которые не удовлетворяют требованию линейной пропорции для коэффициента корреляции Пирсона.

Обе последовательности входных данных должны быть одинаковой длины (не менее двух) и не должны быть постоянными, в противном случае возникает ошибка StatisticsError.

Пример с законами движения планет Кеплера:

Коэффициент корреляции Пирсона r принимает значения от -1 до +1. Он измеряет силу и направление линейной связи, где +1 означает очень сильную положительную линейную связь, -1 - очень сильную отрицательную линейную связь, а 0 - отсутствие линейной связи.

Планеты: Меркурий, Венера, Земля, Марс, Юпитер, Сатурн, Уран и Нептун

# дни
>>> orbital_period = [88, 225, 365, 687, 4331, 10_756, 30_687, 60_190]
# миллионы километров
>>> dist_from_sun = [58, 108, 150, 228, 778, 1_400, 2_900, 4_500] 
# Покажем, что существует совершенная монотонная зависимость
>>> correlation(orbital_period, dist_from_sun, method='ranked')
# 1.0

# Обратите внимание, что линейная зависимость несовершенна.
>>> round(correlation(orbital_period, dist_from_sun), 4)
# 0.9882

# Продемонстрируем третий закон Кеплера: существует 
# линейная корреляция между квадратом периода  
# обращения и кубом расстояния от Солнца.
>>> period_squared = [p * p for p in orbital_period]
>>> dist_cubed = [d * d * d for d in dist_from_sun]
>>> round(correlation(period_squared, dist_cubed), 4)
# 1.0