Как рассчитать ранговую корреляцию Спирмена в Python

В статистике корреляция относится к силе и направлению связи между двумя переменными. Значение коэффициента корреляции может варьироваться от -1 до 1 со следующими интерпретациями:

  • -1 : идеальная отрицательная связь между двумя переменными
  • 0: нет связи между двумя переменными
  • 1: идеальная положительная связь между двумя переменными

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

Это учебник объясняет, как вычислить ранговую корреляцию Спирмена между двумя переменными в Python

Пример: ранговая корреляция Спирмена в Python

Предположим, у нас есть следующий кадр данных pandas, который содержит стиль оценка экзамена по математике и экзамена по естественным наукам 10 учащихся в определенном классе:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'student': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
                   'math': [70, 78, 90, 87, 84, 86, 91, 74, 83, 85],
                   'science': [90, 94, 79, 86, 84, 83, 88, 92, 76, 75]})

Чтобы вычислить корреляцию рейтинга Спирмена между оценками по математике и естественным наукам , мы можем использовать spearmanr() из scipy.stats:

from scipy.stats import spearmanr

#calculate Spearman Rank correlation and corresponding p-value
rho, p = spearmanr(df['math'], df['science'])

#напечатать ранговая корреляция Спирмена и p-значение
print(rho)

# -0.41818181818181815

print(p)

# 0.22911284098281892

Из вывода видно, что ранговая корреляция Спирмена составляет -0,41818, а соответствующее значение p равно 0,22911.

Это указывает на наличие отрицательной корреляции между результатами экзаменов по естественным наукам и математике.

Однако, поскольку p-значение корреляции не меньше 0,05, корреляция не является статистически значимой.

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

#Коэффициент ранговой корреляции Спирмена
spearmanr(df['math'], df['science'])[0]

# -0.41818181818181815

#извлечь p-значение ранговой корреляции Спирмена
spearmanr(df['math'], df['science'])[1] 

# 0.22911284098281892

Дополнительные ресурсы

Как рассчитать ранговую корреляцию Спирмена в R
Как рассчитать ранговую корреляцию Спирмена в Excel
Как рассчитать ранговую корреляцию Спирмена в статистике