Обычный коэффициент корреляции (в 2d) измеряет, насколько хорошо набор точек может быть описан линией, и если да, его знак говорит нам, есть ли у нас положительная или отрицательная корреляция. Но это предполагает, что координаты точек могут фактически интерпретироваться количественно, например, как измерения.
Если вы не можете этого сделать, но все же можете упорядочить координаты, существует коэффициент ранговой корреляции : он измеряет, насколько хорошо точки могут быть описаны монотонной функцией.
Вызов
Учитывая список 2d точек, определите их ранг коэффициента корреляции .
Детали
- Вы можете предположить, что входные данные являются положительными целыми числами (но это не обязательно) или любыми другими «сортируемыми» значениями.
- Точки могут быть взяты как список точек, или два списка для x- и y-координат, или матрица, или двумерный массив и т. Д.
- Выходные данные должны быть плавающей точкой или рациональным типом, поскольку они должны представлять собой действительное число от 0 до 1.
Определения
Ранг: Учитывая список чисел, X=[x(1),...,x(n)]
мы можем назначить положительное число, rx(i)
называемое рангом для каждой записи x(i)
. Мы делаем это путем сортировки списка и присвоения индекса x(i)
в отсортированном списке rx(i)
. Если два или более x(i)
имеют одинаковое значение, то мы просто используем среднее арифметическое всех соответствующих индексов в качестве ранга. Пример:
List: [21, 10, 10, 25, 3]
Indices sorted: [4, 2, 3, 5, 1]
Число 10
появляется здесь дважды. В отсортированном списке это заняло бы индексы 2
и 3
. Среднее арифметическое из тех, 2.5
так что ряды
Ranks: [4, 2.5, 2.5, 5, 1]
Коэффициент корреляции ранга : Позвольте [(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))]
быть заданными точками, где каждый x(i)
и y(i)
является действительным числом (wlog. Вы можете предположить, что это целое число) Для каждого i=1,...,n
мы вычисляем ранг rx(i)
и ry(i)
из x(i)
и y(i)
соответственно.
Позвольте d(i) = rx(i)-ry(i)
быть разницей ранга и пусть S
будет сумма S = d(1)^2 + d(2)^2 + ... + d(n)^2
. Тогда коэффициент корреляции рангов rho
определяется
rho = 1 - 6 * S / (n * (n^2-1))
пример
x y rx ry d d^2
21 15 4 5 -1 1
10 6 2&3 -> 2.5 2 0.5 0.25
10 7 2&3 -> 2.5 3 -0.5 0.25
25 11 5 4 1 1
3 5 1 1 0 0
rho = 1 - 6 * (1+0.25+0.25+1)/(5*(5^2-1)) = 0.875
2.5
.