Der übliche Korrelationskoeffizient (in 2d) misst, wie gut eine Menge von Punkten durch eine Linie beschrieben werden kann, und wenn ja, zeigt das Vorzeichen an, ob wir eine positive oder negative Korrelation haben. Dies setzt jedoch voraus, dass Koordinaten der Punkte tatsächlich quantitativ interpretiert werden können, beispielsweise als Messungen.
Wenn Sie das nicht können, aber trotzdem die Koordinaten ordnen können , gibt es den Rangkorrelationskoeffizienten : Er misst, wie gut die Punkte durch eine monotone Funktion beschrieben werden können.
Herausforderung
Bestimmen Sie anhand einer Liste von 2D-Punkten deren Rangkorrelationskoeffizienten .
Einzelheiten
- Sie können davon ausgehen, dass es sich bei der Eingabe um positive Ganzzahlen handelt (dies ist jedoch nicht erforderlich) oder um andere "sortierbare" Werte.
- Die Punkte können als eine Liste von Punkten oder zwei Listen für die x- und y-Koordinaten oder eine Matrix oder ein 2D-Array usw. genommen werden.
- Die Ausgabe muss ein Gleitkomma- oder ein rationaler Typ sein, da sie eine reelle Zahl zwischen 0 und 1 darstellen sollte.
Definitionen
Rang: Ausgehend von einer Liste von Zahlen können X=[x(1),...,x(n)]
wir jedem Eintrag eine positive Zahl mit dem rx(i)
Namen Rang zuweisen x(i)
. Dazu sortieren wir die Liste und weisen den Index x(i)
der sortierten Liste zu rx(i)
. Wenn zwei oder mehr x(i)
den gleichen Wert haben, verwenden wir einfach das arithmetische Mittel aller entsprechenden Indizes als Rang. Beispiel:
List: [21, 10, 10, 25, 3]
Indices sorted: [4, 2, 3, 5, 1]
Die Nummer 10
erscheint hier zweimal. In der sortierten Liste würde es die Indizes 2
und belegen 3
. Das arithmetische Mittel davon ist 2.5
so, wie die Reihen sind
Ranks: [4, 2.5, 2.5, 5, 1]
Rangkorrelationskoeffizient : Es sei [(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))]
die gegebene Punkte , an denen jeder x(i)
und y(i)
eine reelle Zahl für jede (oBdA Sie davon ausgehen , kann es eine ganze Zahl.) i=1,...,n
Wir berechnen Rang rx(i)
und ry(i)
von x(i)
undy(i)
jeweils.
Sei d(i) = rx(i)-ry(i)
der Rangunterschied und sei S
die Summe S = d(1)^2 + d(2)^2 + ... + d(n)^2
. Dann ist der Rangkorrelationskoeffizient rho
gegeben durch
rho = 1 - 6 * S / (n * (n^2-1))
Beispiel
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
.