Zwykły współczynnik korelacji (w 2d) mierzy, jak dobrze zestaw punktów można opisać linią, a jeśli tak, jego znak mówi nam, czy mamy korelację dodatnią czy ujemną. Zakłada się jednak, że współrzędne punktów mogą być interpretowane ilościowo, na przykład jako pomiary.
Jeśli nie możesz tego zrobić, ale nadal możesz uporządkować współrzędne, istnieje współczynnik korelacji rang : mierzy, jak dobrze punkty można opisać funkcją monotoniczną .
Wyzwanie
Biorąc pod uwagę listę punktów 2d, określ ich współczynnik korelacji rang .
Detale
- Możesz założyć, że dane wejściowe są dodatnimi liczbami całkowitymi (ale nie musisz) lub dowolnymi innymi „sortowalnymi” wartościami.
- Punkty można traktować jako listę punktów lub dwie listy dla współrzędnych xiy, macierzy lub tablicy 2d itp.
- Dane wyjściowe muszą być zmiennoprzecinkowe lub wymierne, ponieważ powinny reprezentować liczbę rzeczywistą z zakresu od 0 do 1.
Definicje
Ranga: Na podstawie listy liczb X=[x(1),...,x(n)]
możemy przypisać dodatnią liczbę o rx(i)
nazwie ranga do każdego wpisu x(i)
. Robimy to, sortując listę i przypisując indeks x(i)
w posortowanej liście rx(i)
. Jeśli dwa lub więcej x(i)
mają tę samą wartość, to po prostu używamy średniej arytmetycznej wszystkich odpowiednich wskaźników jako rangi. Przykład:
List: [21, 10, 10, 25, 3]
Indices sorted: [4, 2, 3, 5, 1]
Liczba 10
pojawia się tutaj dwa razy. Na posortowanej liście zajmowałby indeksy 2
i 3
. Średnia arytmetyczna tych liczb jest 2.5
taka, jak w przypadku rang
Ranks: [4, 2.5, 2.5, 5, 1]
Współczynnik korelacji rang : Pozwolić [(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))]
być podane punkty, w których każdy x(i)
i y(i)
jest to liczba rzeczywista Dla każdego (wlog można założyć, że jest liczbą całkowitą.) i=1,...,n
Możemy obliczyć rangę rx(i)
i ry(i)
od x(i)
i y(i)
odpowiednio.
Niech d(i) = rx(i)-ry(i)
będzie różnica rang i niech S
będzie sumą S = d(1)^2 + d(2)^2 + ... + d(n)^2
. Następnie współczynnik korelacji rang rho
jest podawany przez
rho = 1 - 6 * S / (n * (n^2-1))
Przykład
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
.