Как рассчитать корреляцию рангов спирмена в python
В статистике корреляция означает силу и направление связи между двумя переменными. Значение коэффициента корреляции может находиться в диапазоне от -1 до 1 со следующими интерпретациями:
- -1: идеальная отрицательная связь между двумя переменными.
- 0: нет связи между двумя переменными
- 1: идеальная положительная связь между двумя переменными.
Особый тип корреляции называется ранговой корреляцией Спирмена и используется для измерения корреляции между двумя ранжированными переменными. (например, рейтинг, полученный учащимся на экзамене по математике, относительно рейтинга, полученного им на экзамене по естественным наукам в классе).
В этом руководстве объясняется, как рассчитать ранговую корреляцию Спирмена между двумя переменными в Python.
Пример: ранговая корреляция Спирмена в Python
Предположим, у нас есть следующий DataFrame pandas, который содержит результаты экзамена по математике и экзамена по естественным наукам 10 учащихся в определенном классе:
import pandas as pd #createDataFrame 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 '])
#print Spearman rank correlation and p-value
print (rho)
-0.41818181818181815
print (p)
0.22911284098281892
Из результата мы видим, что ранговая корреляция Спирмена равна -0,41818 , а соответствующее значение p составляет 0,22911 .
Это указывает на то, что существует отрицательная корреляция между результатами экзаменов по естествознанию и математике.
Однако, поскольку значение p корреляции не менее 0,05, корреляция не является статистически значимой.
Обратите внимание, что мы также могли бы использовать следующий синтаксис, чтобы просто извлечь коэффициент корреляции или p-значение:
#extract Spearman Rank correlation coefficient
spearmanr(df[' math '], df[' science '])[0]
-0.41818181818181815
#extract p-value of Spearman Rank correlation coefficient
spearmanr(df[' math '], df[' science '])[1]
0.22911284098281892
Дополнительные ресурсы
Как рассчитать ранговую корреляцию Спирмена в R
Как рассчитать корреляцию рангов Спирмена в Excel
Как рассчитать ранговую корреляцию Спирмена в Stata